Kerberos и / или другие системы аутентификации - единовременный вход для всех сценариев PHP - PullRequest
4 голосов
/ 24 марта 2010

Я управляю набором веб-приложений, почти исключительно написанных на PHP, и хотел бы найти платформу аутентификации для построения системы авторизации на основе ролей. Кроме того, я хотел бы, чтобы система аутентификации была расширяемой для использования, например, для системных служб (SSH и т. Д.)

Вот некоторые основные характеристики, которые я ищу, в порядке важности:

  1. Простая реализация PHP (хранение / чтение ролей и т. Д.).
  2. Избыточный, если возможно. Если система аутентификации выходит из строя, все не блокируются.
  3. Имеет клиентов для Windows и Mac.
  4. Простое веб-администрирование (добавление / удаление пользователей / ролей, смена паролей). Если нет, я могу создать систему администрирования без особых усилий.
  5. Единовременный вход в систему.

Я также хотел бы, чтобы при выдаче токена авторизации IP-адрес пользователя сохранялся и использовался для авторизации пользователя для некоторых не-веб-приложений. По этой причине я хотел бы, чтобы клиент рабочего стола выдавал токен и отзывал токены, когда, например, пользователь становится бездействующим на своей рабочей станции. Я думаю, что Kerberos может быть решением, но каковы другие варианты?

Ответы [ 2 ]

4 голосов
/ 08 июля 2010

Если бы я делал это, что у меня фактически было несколько раз в прошлом, я бы использовал комбинацию Kerberos и LDAP. Kerberos обрабатывает аутентификацию и предоставляет пользователям токены. LDAP обеспечивает авторизацию; информация о членстве в группе, контактная информация пользователя и т. д.

Kerberos очень, очень хорошо протестирован и широко развернут. Чтобы защитить веб-приложение с помощью Kerberos, используйте Apache mod_krb5 или такое решение, как Stanford WebAuth. Пользователь проходит аутентификацию один раз в Kerberos, и затем его браузер использует билет через SPNEGO для автоматического входа в веб-приложение. Если у вас есть домен Windows Active Directory, то у ваших пользователей уже есть билеты Kerberos, которые вы можете использовать в сеансе входа в систему на своем компьютере!

Kerberos также поддерживается во многих других программах сетевого сервера, таких как OpenSSH, различные инструменты IPSEC VPN, электронная почта (как SMTP и IMAP), чат XMPP (Jabber) и т. Д. И т. Д.

Инфраструктура Kerberos может быть настолько избыточной, насколько вам угодно, и организована так, как вам нравится. Области могут иметь много серверов, обеспечивающих аутентификацию, и могут доверять друг другу произвольным образом.

Это не просто решение, это решение для единого входа.

2 голосов
/ 05 мая 2010

Что вам нужно, так это (по сути) настройка сервера / клиента облегченного протокола доступа к каталогам (LDAP). В PHP есть встроенная библиотека, она легко избыточна, есть клиенты для Windows / Mac / Linux, доступны внешние интерфейсы (хотя я не могу рекомендовать какие-либо хорошие в данный момент), и она обеспечит аутентификацию для любого набора приложений, которые вы хотят.

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

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