У меня есть следующие настройки для моего приложения:
services
.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultForbidScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddOpenIdConnect(options =>
{
options.ClientId = Configuration["ClientId"];
options.Authority = $"https://login.microsoftonline.com/{Configuration["TenantId"]}";
options.ClientSecret = Configuration["ClientSecret"];
})
.AddJwtBearer(options =>
{
options.Audience = Configuration["ClientId"];
options.Authority = $"https://login.microsoftonline.com/{Configuration["TenantId"]}";
})
.AddCookie();
services.AddAuthorization();
OIDC и JWT работают просто отлично.Звонки от клиентов, использующих токены JWT, проходят аутентификацию.При звонках через браузер без токена пользователь перенаправляется на портал авторизации AzureAD;возвращается к конечной точке 'signin-oidc'
;OIDC, используя указанную SignInScheme, помещает значения cookie в ответ и перенаправляется на URL-адрес, сгенерировавший запрос.
После перенаправления я могу просмотреть файлы cookie в запросе и найти значения .AspNetCore.Cookies
в запросе, но для этих запросов не происходит аутентификация.Они перенаправляются обратно на портал AzureAD для аутентификации.
Есть идеи?