Получить список групп AD от текущего пользователя входа с интегрированной настройкой аутентификации Windows Asp.net API2 - PullRequest
0 голосов
/ 19 января 2019

Я использую оператор System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups для получения списка групп ADG, принадлежащих этому пользователю входа в AD.Сайт настроен с включенной аутентификацией Windows и развернут в двух сетях AWS VPC.В одной сети VPC я могу правильно получить полный список групп. В другой сети VPC я последовательно получил 105 групп, если вошедший в систему пользователь имеет более 105 групп.Обе сети VPC настроены и принадлежат двум организациям.

Могу ли я узнать, как устранить эту проблему?

Сайт использует ASP.net WebApi2 Развернуто на сервере IIS 10 Windows 2016 Развернуто в двух разныхVPC, тот же сервер входа AD

Я проверил сервер входа AD% LOGONSERVER% на обоих серверах, они одинаковы. Оба сайта включают аутентификацию Windows по умолчанию с предварительными настройками по умолчанию и согласованием, последовательность поставщиков NTLM одинаковаа также.

С помощью PowerShell, используя этот код, я считаю эквивалентным, я получил все группы.

`$ id = [Security.Principal.WindowsIdentity] :: GetCurrent ()

$ groups = $ id.Groups |foreach-object {$ _. Translate ([Security.Principal.NTAccount])} `

Итак, я подозреваю, что это из-за проблемы с токеном Kerberos, запрос на увеличение размера токена для администраторов сервера на основе ссылкиссылка на сайт.https://support.microsoft.com/en-us/help/327825/problems-with-kerberos-authentication-when-a-user-belongs-to-many-grou

Есть ли способ решить проблему?Проблема возникает на серверах, находящихся под AWS ELB.

Ниже приведен код, использующий контроллер API asp.net.

    public List<string> GetCurrentUserGroupList()
    {
        List<string> currentGroupList = new List<string>();

        try
        {
            if (this.User != null && this.User.Identity != null)
            {
                foreach (System.Security.Principal.IdentityReference group in
                         System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups)
                {
                    currentGroupList.Add(group.Translate(typeof
                        (System.Security.Principal.NTAccount)).ToString());
                }
            }
        }
        catch (Exception exc)
        {
            Console.WriteLine(exc.Message);
            Console.WriteLine(exc.StackTrace);
        }
        return currentGroupList;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...