我在我的Asp.net mvc web应用程序中使用@ User.Identity.Name。一旦部署,这将在本地上显示为Domain \ user,在Azure上显示为user@domain.com。而不是使用@ User.Identity.Name,有没有办法使它在本地和服务器上唯一。由于这种冲突,我有许多代码破坏区域。
我将Azure Active Directory身份验证添加到Azure上托管的应用程序。
using (var context = new PrincipalContext(ContextType.Domain))
{
var principal = UserPrincipal.FindByIdentity(context, User.Identity.Name);
var displayName = principal?.DisplayName;
}
此displayName显示在本地,一旦发布到Azure,它就像null“”。一旦发布,在Azure服务器上显示显示名称的最佳方法是什么?
答案 0 :(得分:2)
您似乎正在将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 AD时显示Domain \ DisplayName,则可以通过以下方式获取域名:
var domian= ClaimsPrincipal.Current.FindFirst(ClaimTypes.Upn).Value.Split('@')[1].ToString();