我有一个测试ASP.NET Core 2.0 Web应用程序,该应用程序使用SAML对用户进行身份验证。如果在浏览器中键入的URL与IIS 10中Web应用程序名称的大小写匹配(例如... / MyTestSite),则一切正常。但是,如果用户键入其他大小写(例如... / mytestsite),他们将无法通过身份验证。
在代码中,故障点在OnGetCallbackAsync
类的ExternalLogin
方法的这一行:
var info = await _signInManager.GetExternalLoginInfoAsync();
从info == null
开始,在这种情况下,用户将被重定向回登录页面。
我注意到.AspNetCore.Antiforgery
令牌具有来自url(/ mytestsite)的路径值,但是Identity.External
路径值为站点名称(/ MyTestSite)。
我不确定为什么会发生这种情况,或者为什么案件会变得如此重要。
答案 0 :(得分:0)
(假设您正在使用身份验证方案)
默认情况下,所有身份验证方案都区分大小写,这就是为什么在身份验证时匹配大小写的原因。如果要使URL不区分大小写,可以添加如下的路由选项:
my_app
注意:这将提供对URL的支持,但是您可以尝试这样做。
希望这会有所帮助!