Получить полное имя пользователя при входе в другой домен Windows аутентификации C # - PullRequest
0 голосов
/ 27 ноября 2018

У нас есть проблема, например, невозможность получить полное имя пользователя при чтении из другого домена.

Например: мое имя пользователя - dom1 \ jsmith, а полное имя - Джон Смит.Когда мы разворачиваем проект в домене dom1, мы можем войти в систему и получить полное имя пользователя.Когда мы разворачиваем проект в другом домене (dom2), где пользователь (dom1 \ jsmith) имеет разрешение на вход в систему, может получить доступ к сайту, но не может получить полное имя.

Мы пробовали разные решения, но не смоглит работы.

//output: dom1\jsmith
User.Identity.Name;
//output: dom1\jsmith
string s = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 

//output: dom1\jsmith
string sUserName = System.Environment.UserName;  


//output: John Smith in same domain but not able to find identity
 using (var context = new PrincipalContext(ContextType.Domain))
    {
        var principal = UserPrincipal.FindByIdentity(context, User.Identity.Name);
        if (principal != null)
            var fullName = string.Format("{0} {1}", principal.GivenName, principal.Surname);

1 Ответ

0 голосов
/ 27 ноября 2018

Передайте имя домена входа в конструктор для PrincipalContext.Поэтому разделите DOMAIN\username, который у вас есть, и используйте только часть домена:

var split = User.Identity.Name.Split('\\');

using (var context = new PrincipalContext(ContextType.Domain, split[0])) {
     ...
}

Хотя я удивлен, что это не сработает, как у вас, так как оно работает для меня, и я захожу вдругой домен, чем тот, к которому присоединен мой компьютер.Хотя в моем случае два домена находятся в одном лесу AD.Может быть, это не так для вас.

...