首页 > 解决方案 > 区分大小写的 url,必须与 SP 元数据中指定的完全相同

问题描述

我在 .net core 2.2 站点上使用 itfoxtec-identity-saml2 进行身份验证。这一切都很好,但一方面,站点的 URL 区分大小写,并且必须与 SP 的元数据中指定的完全相同。如果不是这就是发生的事情(简化):

在元数据中,我网站的根 url 是https://domain/MySite

这一切都从一个新的 saml 身份验证请求和一个成功的 saml 身份验证重新开始,当用户在新的 saml 身份验证请求的永无止境的循环中再次被重定向到原始请求的页面时,站点会立即忘记这一点。

如您所见,原始请求是向https://domain/mysite发出的,IdP 将 SAML-token 发送到元数据中指定的 url https://domain/MySite/,当原始页面是再次请求它再次发送到https://domain/mysite

我通常不经常使用网络内容,所以我真的不知道我在说什么,但我感觉在返回 SAML 令牌时创建的会话 cookie 仅对应于格式化的 url SAML 令牌正在发送到。

该站点托管在 Windows Server 2012 上的 IIS 中。

有没有办法让网站的网址不区分大小写?

标签: .net-coresaml-2.0itfoxtec-identity-saml2

解决方案


我认为问题在于浏览器将 cookie 路径视为区分大小写,而 IIS 不区分大小写。ITfoxtec Identity SAML2 使用 ASP.NET Core Identity,它使用包含用户身份的身份 cookie。

因为 cookie 路径区分大小写,所以如果大小写发生变化,浏览器不会发送 cookie。因此,用户未被认证。

解决方案是使用相同的情况。一个解决方案是要求小写:

  1. 配置小写路由ASP.NET Core web app URL在验证用户时区分大小写(我没有测试过这个方案)
  2. 添加重定向到小写的 .NET 核心中间件。
  3. 在 IIS/web.config 中将 url 重写配置为小写。

推荐阅读