C# ADFS3.0 Thread.CurrentPrincipal.Identity.Name在请求之间作为空字符串返回

C# ADFS3.0 Thread.CurrentPrincipal.Identity.Name在请求之间作为空字符串返回,c#,asp.net-mvc-5,iis-7.5,ws-federation,adfs3.0,C#,Asp.net Mvc 5,Iis 7.5,Ws Federation,Adfs3.0,我构建了一个自定义ASP.Net MVC5应用程序,该应用程序部署在DMZ组织的外围网络中,通过ADFS 3.0 Active Directory联合身份验证服务对用户进行身份验证。应用程序部署在IIS中,启用了匿名身份验证,并且由于它是DMZ,因此服务器未加入域,并且我没有可用的Windows身份验证。就ADF和身份验证而言,当从外部网络访问应用程序时,会提示用户使用用户名/密码,而从内部网络访问时,会使用SSO单点登录,因此它工作得非常好 但是,问题是我有一个静态类,它获取当前用户,并根据数

我构建了一个自定义ASP.Net MVC5应用程序,该应用程序部署在DMZ组织的外围网络中,通过ADFS 3.0 Active Directory联合身份验证服务对用户进行身份验证。应用程序部署在IIS中,启用了匿名身份验证,并且由于它是DMZ,因此服务器未加入域,并且我没有可用的Windows身份验证。就ADF和身份验证而言,当从外部网络访问应用程序时,会提示用户使用用户名/密码,而从内部网络访问时,会使用SSO单点登录,因此它工作得非常好

但是,问题是我有一个静态类,它获取当前用户,并根据数据库中的users表对其进行验证。要获取当前用户,我使用Thread.CurrentPrincipal.Identity.Name。最初,它确实会返回一个用户名,但在浏览应用程序的不同页面之间,它会翻转并开始返回一个空白字符串。它翻转时没有特定的图案。对于同一个用户和会话,我突然得到一个空白字符串,在刷新几次页面后,它开始返回用户名

现在,我不确定这个问题是由于调用Thread.CurrentPrincipal.Identity.Name的静态类和方法造成的,还是因为应用程序的配置有问题。我还尝试了HttpContext.Current.User.Identity.Name,结果相同。拥有静态类的原因不是在每个控制器中复制相同的代码


我们将非常感谢您的帮助。谢谢

所以问题是,我在API控制器上缺少Authorize属性,因此它们可以匿名访问