2017-02-24 19 views
0

我在我的Asp.net mvc Web應用程序中使用@ User.Identity.Name。這顯示爲一旦部署了Azure站點上的本地和[email protected]上的域\用戶。而不是使用@ User.Identity.Name,有什麼辦法可以使它在本地和服務器上是唯一的。由於此衝突,我有許多密碼破譯區域。User.Identity.Name在發佈到Azure之前和之後不同

我將Azure Active Directory身份驗證添加到Azure上承載的應用程序。

using (var context = new PrincipalContext(ContextType.Domain)) 
{ 
    var principal = UserPrincipal.FindByIdentity(context, User.Identity.Name); 
    var displayName = principal?.DisplayName; 
} 

這顯示名顯示在本地和公佈一次到Azure它像空「」。在發佈之後,在Azure服務器上顯示顯示名稱的最佳方式是什麼?

回答

1

看來你正在使用傳統的內部部署AD的AD庫。要針對Azure AD進行編程,您可以使用OpenID Connect從Azure AD租戶驗證用戶身份。請參閱下面的代碼示例:

https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect

要獲取當前用戶的顯示名稱,你可以嘗試:

var displayName = ((System.Security.Claims.ClaimsIdentity)User.Identity).Claims.Where(c => c.Type == "name").FirstOrDefault().Value; 

如果你也想使用Azure的廣告時顯示域\顯示名稱,您可以通過以下方式獲取域名:

var domian= ClaimsPrincipal.Current.FindFirst(ClaimTypes.Upn).Value.Split('@')[1].ToString();