C# 当samesite=严格或宽松时,AAD总是失败,相关失败

C# 当samesite=严格或宽松时,AAD总是失败,相关失败,c#,asp.net-core,azure-active-directory,identityserver4,identity,C#,Asp.net Core,Azure Active Directory,Identityserver4,Identity,下面是我正在使用的代码片段 public static IServiceCollection ConfigureNonBreakingSameSiteCookies(this IServiceCollection services) { services.Configure<CookiePolicyOptions>(options => { options.MinimumSameSitePolicy = (Same

下面是我正在使用的代码片段

public static IServiceCollection ConfigureNonBreakingSameSiteCookies(this IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            options.MinimumSameSitePolicy = (SameSiteMode.Lax);
            options.OnAppendCookie = cookieContext =>
              CheckSameSite(cookieContext.Context, cookieContext.CookieOptions);
            options.OnDeleteCookie = cookieContext =>
               CheckSameSite(cookieContext.Context, cookieContext.CookieOptions);
        });

        return services;
    }

    private static void CheckSameSite(HttpContext httpContext, CookieOptions options)
    {
        options.SameSite = (SameSiteMode.Lax);
        options.HttpOnly = true;
        options.Secure = true;
   }
公共静态IServiceCollection配置NonBreakingSamesiteCookies(此IServiceCollection服务)
{
配置(选项=>
{
options.MinimumSameSitePolicy=(SameSiteMode.Lax);
options.OnAppendCookie=cookieContext=>
选中Samesite(cookieContext.Context、cookieContext.CookieOptions);
options.OnDeleteCookie=cookieContext=>
选中Samesite(cookieContext.Context、cookieContext.CookieOptions);
});
返回服务;
}
私有静态void CheckSameSite(HttpContext HttpContext、CookieOptions)
{
options.SameSite=(SameSiteMode.Lax);
options.HttpOnly=true;
options.Secure=true;
}
这是我的堆栈跟踪

System.Exception:处理远程服务器时遇到错误 登录。-->系统异常:关联失败。--内螺纹端部 异常堆栈跟踪---在 Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler`1.d_u12.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()位于 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 IdentityServer4.Hosting.FederatedSignOut.AuthenticationRequestHandlerWrapper.d_u7.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()位于 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.d_u6.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()位于 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Microsoft.AspNetCore.Cors.Infrastructure.CorsMiddleware.d_u7.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()位于 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 IdentityServer4.Hosting.BaseUrlMiddleware.d_u3.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()位于 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware.d_u4.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()位于 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMiddleware.d_uu4.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()位于 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.d_u6.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()位于 Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.d_u6.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()位于 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.d_u7.MoveNext()


Lax应该适合顶级导航。这里有框架吗?您能否确认正在使用正确的samesite属性设置相关cookie?您的浏览器控制台中有任何记录吗?你在使用Chrome 80吗?是的,我在使用Chrome 80,当我将所有设置为“无”时,它工作正常,当我将其设置为“严格”时,它会中断,我正在使用angular spa,其中涉及静默刷新。这就是为什么-静默刷新涉及iframe,并且在iframe内执行跨站点请求时,lax Cookie将被阻止。仅限选项在这种情况下是否使用?是的,尽管在这种情况下协议保护您不受恶意请求的影响。Lax可以用于顶级导航。这里有框架吗?您能否确认正在使用正确的samesite属性设置相关cookie?您的浏览器控制台中有任何记录吗?你在使用Chrome 80吗?是的,我在使用Chrome 80,当我将所有设置为“无”时,它工作正常,当我将其设置为“严格”时,它会中断,我正在使用angular spa,其中涉及静默刷新。这就是为什么-静默刷新涉及iframe,并且在iframe内执行跨站点请求时,lax Cookie将被阻止。仅限选项在这种情况下是否使用?是的,尽管在这种情况下,协议保护您不受恶意请求的影响。