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将被阻止。仅限选项在这种情况下是否使用?是的,尽管在这种情况下,协议保护您不受恶意请求的影响。