我目前在使用Core 3.1的SAML实现中遇到了一个问题 ASP.NET。 SAML登录在Chrome和Firefox中都可以完美运行,但是如果我尝试在Safari中执行此操作,它告诉我表单提交是不安全的。
即使按继续,它也拒绝将SAML请求发送到服务器,并且我在后端收到以下错误。
Sustainsys.Saml2.Exceptions.NoSamlResponseFoundException: No Saml2 Response found in the http request.
at Sustainsys.Saml2.WebSso.AcsCommand.Run(HttpRequestData request, IOptions options)
at Sustainsys.Saml2.AspNetCore2.Saml2Handler.HandleRequestAsync()
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
我尝试过:
根据本文设置SAMESITE Cookie策略:
https://devblogs.microsoft.com/aspnet/upcoming-samesite-cookie-changes-in-asp-net-and-asp-net-core/
尽管Safari SAMESITE问题应该在Mojave和IOS 10.13中修复,但我尝试将其添加到例外规则中,但它没有解决我的问题。
对于将来遇到此问题的任何人。
正如jdweng所提到的,它确实是由SSL/TLS问题引起的。
SustainSys根据请求的协议生成元数据。由于我们的服务器使用代理来添加SSL,因此 ASP.NET 在http模式下运行请求。
我将公共源设置为配置服务文件中的https url,从而解决了该问题。
services.AddSaml2(options =>
{
SPOptions ipOptions = options.SPOptions;
ipOptions.PublicOrigin =
new Uri(configuration["SAML2PSettings:PublicOrigin"]);
}