Выполняет ли поиск User.IsInRole в Active Directory каждый раз? - PullRequest
0 голосов
/ 07 сентября 2018

В нашем веб-приложении MVC 5 мы используем функцию User.IsInRole (), чтобы оценить, является ли текущий вошедший в систему пользователь (с аутентификацией Windows) частью соответствующей группы в Active Directory. На моем локальном уровне эта функция оценивалась быстро, но на производстве это занимает некоторое время. Эта функция каждый раз попадает в Active Directory и проверяет, является ли пользователь частью группы?

Сценарий:

Предположим, в базе данных настроено всего 10 групп, и я хочу получить список групп, в которые входит пользователь. Итак, я перебираю 10 групп и вызываю User.IsInRole ("имя_группы") и готовлю ожидаемый список групп. Будет ли это попадать в Active Directory каждый раз при проверке членства пользователя в группе?

1 Ответ

0 голосов
/ 07 сентября 2018

У меня был тот же вопрос, и я изучаю его для поставщика, который хочет добавить AD AD-аутентификацию к своему ПО. Краткий ответ: да и нет: -)

Длинный ответ: я проанализировал WindowsPrincipal.IsInRole

Он не запрашивает AD (через LDAP) о членстве в группе, а вместо этого использует SID группы в маркере Kerberos и проверяет, содержится ли SID группы в заявке. Так что для этого он не попадает в AD, но:

Если вы используете IsInRole(string), он выполняет поиск по имени ==> SID (используя вызов win32 LsaLookupNames2 ()).

Итак, рекомендуется сначала преобразовать имя группы в SID, а затем использовать только SID:

http://msdn.microsoft.com/en-us/library/wak3kd03(v=vs.110).aspx

Из соображений производительности рекомендуется перегрузка IsInRole (SecurityIdentifier) ​​в качестве предпочтительной перегрузки для определения роли пользователя.

Я еще не проверял это, но собираюсь сделать это в следующий раз.

Я надеюсь найти время для выполнения теста (проверка ~ 40 групп в корпоративной AD с> 100K объектами с помощью этого метода). Но это может занять неделю или около того.

Пожалуйста, сообщите мне, если вас интересует результат теста.

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