ASP.NET Core 2 Cookie身份验证不适用于JWT + OIDC(AzureAD v2应用程序注册)

时间:2019-03-25 15:39:29

标签: c# azure-active-directory asp.net-core-2.0 azure-ad-v2

我的应用程序具有以下设置:

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。

重定向后,我可以检查请求中的Cookies,并可以在请求中找到.AspNetCore.Cookies值,但是这些请求没有进行身份验证。他们被重定向回AzureAD门户进行身份验证。

有什么想法吗?

0 个答案:

没有答案