我的应用程序具有以下设置:
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门户进行身份验证。
有什么想法吗?