VS2013 .NET 4.5 ASP.NET ADFS从声明中获取UPN

时间:2015-05-26 16:34:57

标签: asp.net visual-studio-2013 .net-4.5 wif adfs

如何从使用ADFS进行身份验证的ASP.NET站点声明中获取用户主体名称(UPN)?我想要取回显示名称和UPN,但我能看到的只是显示名称。

这就是我获取当前显示名称的方式。

User.Identity.Name

但是通过查看用户和Identity对象,不清楚UPN的位置。

1 个答案:

答案 0 :(得分:0)

这就是我开始工作的方式......

首先我发现了这篇文章:https://syfuhs.net/2010/09/09/converting-claims-to-windows-tokens-and-user-impersonation/

这有很大帮助,但我不得不将它从WIF 3.5转换为4.5。这就是我最终的目标。

导入声明:

Imports System
Imports System.Linq
Imports System.Threading
Imports System.Security.Principal
Imports System.Security.Claims

要使用的代码片段:

Dim identity As ClaimsIdentity = DirectCast(Thread.CurrentPrincipal.Identity, ClaimsIdentity)
Dim upn As String = identity.Claims.Where(Function(c) c.Type = ClaimTypes.Upn).First().Value

If [String].IsNullOrEmpty(upn) Then
    Throw New Exception("No UPN claim found")
End If

希望这有助于其他人!