使用ADFS时的UserName

时间:2014-10-10 16:45:27

标签: c# .net asp.net-mvc adfs

您好我正在通过ADFS更改我的MVC 5应用程序以进行身份​​验证。

在SessionStart中使用我的global.asax.cs文件我有以下方法:

DoUserLogIn(Request.LogonUserIdentity, Session);

简化方法实现如下

private void DoUserLogIn(WindowsIdentity user, HttpSessionState session)
{
  session["UserDisplayName"] = user.Name;
}

这在ADFS之前工作并且显示了userName。但是现在使用ADFS,显示的UserName是应用程序在IIS中运行的服务帐户用户。我应该使用什么来获取用户通过ADFS访问应用程序的实际用户名?

1 个答案:

答案 0 :(得分:1)

假设您以最常见的方式进行设置,您应该可以通过访问ClaimsPrincipal类来访问当前用户的名称:

使用Thread.CurrentPrincipal并在使用之前确保它是ClaimsPrincipal。

即。 (Thread.CurrentPrincipal as System.Security.Claims.ClaimsPrincipal).Identity

http://msdn.microsoft.com/en-us/library/system.security.claims.claimsidentity(v=vs.110).aspx

ClaimsIdentity类的name属性应该为您提供所需的内容