AspNetWindowsTokenRoleProvider не работает правильно для проверки подлинности Windows в ASP.NET - PullRequest
5 голосов
/ 05 ноября 2008

Я разрабатываю приложение для интрасети в ASP.NET, которое использует проверку подлинности Windows. Я создал класс AD, который получает информацию от контроллера домена Active Directory. Это то, что я использую, чтобы получить такие вещи, как группы пользователей, в которых находится текущий зарегистрированный пользователь. Проблема в ролях ASP.NET, в которых находится пользователь. Кажется забавным, но список групп AD, в которых находится пользователь, полностью отличается от списка ролей, которые есть у пользователя.

Вот что я получаю:

Список групп AD для определенного пользователя

  1. Разработчики
  2. Операторы счета
  3. Администраторы домена
  4. IS_IUSRS
  5. Администраторы

Список ролей того же пользователя

  1. PUDDOM \ Пользователи домена
  2. Каждый
  3. BUILTIN \ Users
  4. BUILTIN \ Администраторы
  5. NT AUTHORITY \ INTERACTIVE
  6. NT AUTHORITY \ Аутентифицированные пользователи
  7. NT AUTHORITY \ This Organization
  8. LOCAL
  9. PUDDOM \ Администраторы домена
  10. PUDDOM \ Запрещенная группа репликации паролей RODC
  11. PUDDOM \ DnsAdmins

ДРУГАЯ ИНФОРМАЦИЯ:

  1. У меня на сайте используется встроенная проверка подлинности Windows из IIS7.
  2. Часть моего web.config выглядит как

это:

<authentication mode="Windows"  />
<authorization>
  <deny users="?" />

</authorization>

<roleManager defaultProvider="AspNetWindowsTokenRoleProvider"  enabled="true">
        <providers>
            <remove name="AspNetSqlRoleProvider" />
        </providers>
</roleManager>

Как мне согласовать список?

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

Ответы [ 2 ]

4 голосов
/ 05 ноября 2008

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

В список также будут включены встроенные группы, которые по умолчанию обычно скрыты от собственных инструментов администратора.

Лучше всего, чтобы приложение хранили основной список групп, которые вы хотите видеть в вашем приложении, или список групп, которые ваше приложение должно игнорировать (либо список включения, либо список исключения). Затем, когда вы откроете роли конкретного пользователя, просто сравните его с настроенным списком исключений или включений и отфильтруйте нежелательные результаты.

Если вы хотите более простой способ, есть поставщик с открытым исходным кодом AD роли в codeproject , который уже поддерживает списки исключений и включения. У этого также есть другие хорошие функции как дополнительное кэширование, которое ДЕЙСТВИТЕЛЬНО ускорит Ваше приложение. Встроенный поставщик ролей AD работает очень плохо.

0 голосов
/ 05 ноября 2008

Возможно, вам понадобится назначить разрешения веб-сайту специально для групп, которые вы хотите перечислить.

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