如何从使用ADFS进行身份验证的ASP.NET站点声明中获取用户主体名称(UPN)?我想要取回显示名称和UPN,但我能看到的只是显示名称。
这就是我获取当前显示名称的方式。
User.Identity.Name
但是通过查看用户和Identity对象,不清楚UPN的位置。
答案 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
希望这有助于其他人!