Определить пользователей TokenSize - PullRequest
1 голос
/ 25 марта 2012

Это приемлемый способ определения пользователей TokenSize:

    //TokenSize = 1200 + 40d + 8s
    //http://support.microsoft.com/kb/327825/en-us
    int TSize = 1200;
    UserPrincipal user = UserPrincipal.FindByIdentity
        (new PrincipalContext(ContextType.Domain, Environment.UserDomainName), IdentityType.SamAccountName, Environment.UserName);
    foreach (GroupPrincipal group in user.GetGroups())
    {
        if (group.IsSecurityGroup == true)
            if (group.GroupScope == GroupScope.Global)
                TSize = TSize + 8;
            else
                TSize = TSize + 40;
    }

А как насчет истории? Как они могут быть подсчитаны?

Спасибо!

1 Ответ

0 голосов
/ 26 марта 2012

КБ уже сказал вам, что это приблизительное значение. Он использовался в качестве руководства для системного администратора при настройке раздела реестра MaxTokenSize.

This formula uses the following values:

    d: The number of domain local groups a user is a member of plus the number of universal groups outside the user's account domain plus the number of groups represented in security ID (SID) history.
    s: The number of security global groups that a user is a member of plus the number of universal groups in a user's account domain.
    1200: The estimated value for ticket overhead. This value can vary depending on factors such as DNS domain name length, client name, and other factors.

In scenarios in which delegation is used (for example, when users authenticate to a domain controller), Microsoft recommends that you double the token size.

Зачем вам нужно вычислять размер токена? Просто хочу убедиться, что вы не смешали это с токеном процесса.

Под токеном здесь подразумевается билет Kerberos или токен NTLM, которые обычно кэшируются и поддерживаются SSP. Поскольку это очень конфиденциальная информация, она очень защищена, и вы, как правило, не можете получить к ней доступ из приложения в пользовательском режиме. Токен, с которым обычно работает приложение, является токеном процесса, который отличается от токена, описанного в этой КБ. Однако это правда, что билет Kerberos или токен NTLM содержит много информации об авторизации, которая в конечном итоге используется для генерации токена процесса. Я не помню, чтобы максимальный размер токена был ограничен токеном процесса. Хотя я могу ошибаться.

По поводу SidHistory , я не уверен, что понял, что вы имеете в виду. Вот мое понимание. Маркер содержит список SID группы, который может быть получен из SidHistory из объекта группы AD. Самому токену не нужно знать, является ли SID группы из SidHistory или objectSid . Если вашему приложению нужно найти объект группы AD из информации TOKEN_GROUPS, хранящейся в токене, ваше приложение должно выполнить запрос к objectSid , а также sidHistory

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...