2013-07-26 2 views
3

У меня возникла проблема с пониманием причины использования mod_auth_kerb для аутентификации на сервере Kerberos.Зачем использовать mod_auth_kerb для аутентификации?

Я разрабатываю сайт, используя Django + mod_wsgi + Apache.

Первая страница моего сайта просит пользователя ввести username/password и один из моих Django app будет принимать username/password и использовать Python kerberos module для аутентификации пользователя на сервере Kerberos.

Где я могу использовать mod_auth_kerb здесь?

Я понимаю, что у меня будет возможность использовать username/password в свою пользу, это причина использования mod_auth_kerb?

ответ

5

mod_auth_kerb может сделать две вещи:

  1. Подскажите пользователю ввести имя пользователя и пароль с помощью HTTP Basic и проверять их с помощью Kerberos на стороне сервера, или

  2. Разрешить браузер для проверки подлинности с помощью Kerberos с обеих сторон, через HTTP Negotiate. Если клиент поддерживает Kerberos, это обеспечивает одномодовый вход в систему: клиент автоматически выполняет проверку подлинности на сервер через систему Kerberos без запроса пароля, с помощью учетных данных, полученных при регистрации пользователя в

Вы делаете # 1. в вашем приложении. Возможно, было бы полезно перенести это в Apache, где это можно сделать единожды для всех приложений. # 2 вы вообще ничего не делаете, но это полезно только в среде, в которой доступна инфраструктура Kerberos.

Предупреждение: я не знаю о «модуле kerberos Python», но очень возможно, что он не делает проверку пароля надежным. Многие вещи, которые утверждают, что делают это, делают эквивалент «kinit»: они используют имя пользователя и пароль для получения первоначальных учетных данных Kerberos (TGT) и добиваются успеха, если он работает. Проблема в том, что они попросили стороннюю компанию (сервер аутентификации Kerberos (центр распространения ключей) или KDC) проверить пароль - но они не проверили, что они действительно разговаривают с реальным KDC. Они могли просто получить сообщение от того же пользователя, который дал им пароль, и в сообщении, конечно, сказано: «пароль прав». Чтобы сделать это правильно, верификатору нужна его собственная идентичность в царстве Kerberos («главный») и сделать дополнительный шаг использования TGT, чтобы получить билет для себя и проверить его; это гарантирует, что ответ получен от подлинного KDC.

Другим распространенным способом сделать это, если ваши KDC являются контроллеры домена Windows, является использование LDAP: подключение к контроллеру домена через LDAP и аутентификация с помощью пароля; DC проверит пароль на самом Kerberos. Конечно, у вас такая же проблема: вам нужно проверить, что вы разговариваете с подлинным контроллером домена, но вы можете сделать это с помощью TLS через сертификаты, что может быть проще.

+0

Благодарим за предложение LDAP. Я продвигаюсь с помощью аутентификации LDAP с использованием модуля python-ldap. – g4ur4v

Смежные вопросы