.net core 区分大小写的URL必须与SP元数据中指定的完全相同

.net core 区分大小写的URL必须与SP元数据中指定的完全相同,.net-core,saml-2.0,itfoxtec-identity-saml2,.net Core,Saml 2.0,Itfoxtec Identity Saml2,我正在使用itfoxtec-identity-saml2在.NETCore2.2站点上进行自动验证。这一切都很好,但有一点,网站的URL区分大小写,必须与SP元数据中指定的完全一致。如果不是,则会发生(简化): 在元数据中,指向我的站点的根url是 Microsoft.AspNetCore.Hosting.Internal.WebHost:请求启动HTTP/1.1 GET Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticat

我正在使用itfoxtec-identity-saml2在.NETCore2.2站点上进行自动验证。这一切都很好,但有一点,网站的URL区分大小写,必须与SP元数据中指定的完全一致。如果不是,则会发生(简化):

在元数据中,指向我的站点的根url是

  • Microsoft.AspNetCore.Hosting.Internal.WebHost:请求启动HTTP/1.1 GET
  • 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,重定向到
  • Microsoft.AspNetCore.Hosting.Internal.WebHost:请求启动HTTP/1.1 POST
  • Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler:AuthenticationScheme:saml2已登录
  • 用户现在被自动验证,原始请求再次启动:
  • Microsoft.AspNetCore.Hosting.Internal.WebHost:请求启动HTTP/1.1 GET
  • Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler:AuthenticationScheme:saml2未通过身份验证
这一切都从一个新的saml身份验证请求和一个成功的saml身份验证开始,当用户在一个不断循环的新saml身份验证请求中再次重定向到原始请求页面时,站点会立即忘记这一点

如您所见,原始请求是向发出的,IdP将SAML令牌发送到元数据中指定的url,当重新请求原始页面时,将再次向发出该请求

我通常不怎么处理web内容,所以我不知道我在说什么,但我感觉在返回SAML令牌时创建的会话cookie只对应于SAML令牌发送到的url格式

该站点位于Windows Server 2012上的IIS中


有没有办法使站点的url不区分大小写?

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

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

解决方法是使用相同的案例。解决方案要求小写:

  • 配置小写路由(我尚未测试此解决方案)
  • 添加重定向到小写的.NET核心中间件
  • 在IIS/web.config中将url倒带配置为小写

  • 如果您认为回答有帮助并且对其他人有帮助,请给答案打分,谢谢。