Azure AD застрял в петле после входа - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь интегрировать Azure AD для аутентификации доступа к веб-приложению, разработанному в ASP .NET Core и размещенному в Azure.

Я добавил TenantId, ClientId и Domain в мой appsettings.json.Я также настроил промежуточное программное обеспечение при запуске следующим образом:

 services.AddAuthentication(sharedOptions => {
            sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
        })
            .AddAzureAd(options => Configuration.Bind("AzureAd", options))
            .AddCookie()
            .AddJwtBearer(cfg =>
            {
                cfg.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
                {
                    ValidIssuer = Configuration["Tokens:Issuer"],
                    ValidAudience = Configuration["Tokens:Audience"],
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Tokens:Key"])) 
                };
            });

Все веб-приложение - HTTPS.

Текущее поведение выглядит следующим образом: 1) Перейти на домашнюю страницу сайта.

2) Ресурс доступа, для которого требуется авторизация

3) Отображается экран входа в систему Azure AD и информация для входа принимается

4) Страница переходит в белый цвет застревает вЦикл перенаправления между моим веб-приложением и сайтом входа в систему MS

Трассировка запроса

Я видел в другом вопросе о том, что проблема пользователя была связана с отправкой файлов cookie по HTTP против HTTPS,Однако, похоже, что это не так.Я попытался настроить промежуточное программное обеспечение следующим образом (только для целей тестирования), но проблема остается:

 services.AddAuthentication(sharedOptions => {
            sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
        })
            .AddAzureAd(options => Configuration.Bind("AzureAd", options))
            .AddCookie(options => {
                options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.None;
            })
            .AddJwtBearer(cfg =>
            {
                cfg.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
                {
                    ValidIssuer = Configuration["Tokens:Issuer"],
                    ValidAudience = Configuration["Tokens:Audience"],
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Tokens:Key"])) 
                };
            });

1 Ответ

0 голосов
/ 14 мая 2018

Я выяснил проблему. Первоначально я настроил свою собственную службу идентификации также с использованием файлов cookie. Удаление следующего кода из файла startup.cs решило проблему:

services.AddIdentity<ServiceUser, IdentityRole>(cfg => {
            cfg.User.RequireUniqueEmail = true;
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...