我在 .net core 2.2 站点上使用 itfoxtec-identity-saml2 进行身份验证。这一切都很好,但一方面,站点的 URL 区分大小写,并且必须与 SP 的元数据中指定的完全相同。如果不是这就是发生的事情(简化):
在元数据中,我网站的根 url 是https://domain/MySite
- Microsoft.AspNetCore.Hosting.Internal.WebHost:请求开始 HTTP/1.1 GET https://domain/mysite
- Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler:AuthenticationScheme:saml2 未通过身份验证。
- Microsoft.AspNetCore.Mvc.ChallengeResult:使用身份验证方案 (saml2) 执行 ChallengeResult。
- Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler:AuthenticationScheme:saml2 受到质疑。
- 请求被路由到 Auth 控制器中的 Login 方法
- Microsoft.AspNetCore.Mvc.Infrastructure.RedirectResultExecutor:执行 RedirectResult,重定向到https://idp/HTTP-Redirect?SAMLRequest=samlAuthRequest
- Microsoft.AspNetCore.Hosting.Internal.WebHost:请求开始 HTTP/1.1 POST https://domain/MySite/AssertionConsumerService
- Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler:AuthenticationScheme:saml2 已登录。
- 用户现在已通过身份验证,原始请求再次启动:
- Microsoft.AspNetCore.Hosting.Internal.WebHost:请求开始 HTTP/1.1 GET https://domain/mysite
- Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler:AuthenticationScheme:saml2 未通过身份验证。
这一切都从一个新的 saml 身份验证请求和一个成功的 saml 身份验证重新开始,当用户在新的 saml 身份验证请求的永无止境的循环中再次被重定向到原始请求的页面时,站点会立即忘记这一点。
如您所见,原始请求是向https://domain/mysite发出的,IdP 将 SAML-token 发送到元数据中指定的 url https://domain/MySite/,当原始页面是再次请求它再次发送到https://domain/mysite。
我通常不经常使用网络内容,所以我真的不知道我在说什么,但我感觉在返回 SAML 令牌时创建的会话 cookie 仅对应于格式化的 url SAML 令牌正在发送到。
该站点托管在 Windows Server 2012 上的 IIS 中。
有没有办法让网站的网址不区分大小写?