Как написать модуль аутентификации NTLM? - PullRequest
1 голос
/ 04 августа 2010

Мне нужно написать модуль аутентификации для IIS7, который ведет себя точно так же, как NTLM, но выполняет дополнительную проверку. Модуль выполняет NTLM для Active Directory (чтобы модуль знал, в порядке ли пользователь), а затем должен вызвать другую службу для окончательной проверки доступа.

Я должен сделать это в модуле аутентификации, поскольку фактическое содержимое на веб-сайте IIS подается через пользовательский модуль IIS, который для меня является черным ящиком, и я не могу изменить клиента, поскольку это также черный ящик. Кроме того, я не могу использовать группы безопасности Windows, так как служба, к которой мне нужно обращаться, имеет собственную базу данных пользователей.

Я нашел эту статью о написании пользовательского провайдера аутентификации , но я действительно не знаю, как я могу проверить пользователя по Active Directory / Windows.

У кого-нибудь есть советы, как я могу реализовать NTLM? Не обязательно быть ориентированным на IIS, моя проблема в том, что «что я получаю из браузера клиента и как его проверить»?

Ответы [ 2 ]

3 голосов
/ 04 августа 2010

То, что вы описываете, не похоже на провайдера аутентификации, похоже, что вы хотите написать провайдера авторизации.Для этого я бы обработал AuthorizeRequest и использовал HttpContext.User, у которого уже есть действительный токен аутентификации Windows (при условии, что вы включили аутентификацию Windows).На этом этапе вы можете использовать IsUserInRole и другие API для получения дополнительных данных из ActiveDirectory или использовать System.DirectoryServices для получения дополнительных данных.Просто убедитесь, что вы выполняете некоторое кэширование, так как переход к AD для каждого отдельного запроса может быть проблемой производительности.По крайней мере IIS будет обрабатывать аутентификацию Windows для вас, которая имеет кеш.

1 голос
/ 31 октября 2010

Посмотрите на Вафля , которая делает все движения в Java. Таким образом, вы должны перенести это на другой язык / инфраструктуру.

...