2017-02-24 1 views
0

Ich verwende @ User.Identity.Name in meiner Asp.net MVC-Webanwendung. Dies wird als Domain \ user auf local und [email protected] auf einer azure-Site angezeigt, sobald sie bereitgestellt wurde. Anstatt @ User.Identity.Name zu verwenden, gibt es eine Möglichkeit, es lokal und auf dem Server eindeutig zu machen. Ich habe viele Code-Breaking-Bereiche aufgrund dieses Konflikts.User.Identity.Name unterscheidet sich vor und nach der Veröffentlichung in Azure

Ich habe Azure Active Directory-Authentifizierung zu meiner Anwendung hinzugefügt, die auf Azure gehostet wird.

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

diese display auf lokal und einmal Azure veröffentlicht es wie null ist „“. Wie würde der Anzeigename auf dem Azure-Server nach der Veröffentlichung am besten angezeigt?

Antwort

1

Es scheint, dass Sie die AD-Bibliotheken für traditionelle On-Premise-AD verwenden. Um gegen Azure AD zu programmieren, können Sie OpenID Connect verwenden, um Benutzer von einem Azure AD-Mandanten zu authentifizieren. Bitte beachten Sie das folgende Codebeispiel:

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

Um die Anzeigenamen des aktuellen Benutzers zu erhalten, könnten Sie versuchen:

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

Wenn Sie möchten, auch Domain \ Display zeigen, wenn Azure AD unter Verwendung von , könnten Sie den Domänennamen erhalten durch:

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