У меня есть основное веб-приложение asp.net, использующее аутентификацию AzureAD.Когда я аутентифицируюсь, событие OnAuthorizationCodeReceived срабатывает и содержит действительный принципал.Однако этот принципал теряется к тому времени, когда вызывается мой обработчик контроллера (User.Identity - просто пустой не прошедший проверку подлинности пользователь).Если я вызываю метод с тегом Authorize, браузер просто переходит в бесконечный цикл перенаправления, пытаясь аутентифицироваться снова и снова.
Я подозреваю, что проблема связана с сопоставлением идентификационных данных и профиля пользователя webapp, ноЯ понятия не имею, с чего начать устранение неполадок или как прервать код, который извлекает профиль пользователя.Все, что терпит неудачу, делает это тихо, без указания на то, что пошло не так.
Одним из аспектов является то, что веб-приложение работало в прошлом, но передавало только часть требований, которые мне нужны (они мне нужны, чтобыаутентифицировать клиента MS Graph).Я постараюсь собрать воедино, какие условия приводят к успешной аутентификации, и обновить здесь.
Вот соответствующий код из моего Startup.cs: ConfigureServices:
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddAzureAd(options => Configuration.Bind("AzureAd", options));
...
services.AddScoped<UserManager<IdentityUser>, UserManager<IdentityUser>>();
Параметры аутентификации, исключая appid / secret:
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"CallbackPath": "/signin-oidc",
"BaseUrl": "https://localhost:44327",
"Scopes": "openid email profile",
"GraphResourceId": "https://graph.microsoft.com/",
"GraphScopes": "User.Read User.ReadBasic.All Mail.Send Device.Read Device.Command Files.ReadWrite",
"SaveTokens": true,
"ResponseType": "token id_token"
}
Моя установка AzureAD похожа на приведенный здесь пример графика: https://github.com/microsoftgraph/aspnetcore-connect-sample/tree/master/MicrosoftGraphAspNetCoreConnectSample
Однако в этом примере не используются профили пользователей, из-за которых у меня могут возникнуть проблемы.
Предложения по поиску и устранению неисправностей приветствуются.