Интересно, следует ли мне использовать протокол CAS или OAuth + какой-нибудь провайдер аутентификации для единого входа.
Пример сценария:
- Пользователь пытается получить доступ к защищенному ресурсу, но не аутентифицируется.
- Приложение перенаправляет пользователя на сервер SSO.
- В случае аутентификации пользователь получает токен от сервера SSO.
- SSO перенаправляет на исходное приложение.
- Исходное приложение проверяет токен на сервере SSO.
- Если токен в порядке, доступ будет разрешен, и приложение знает идентификатор пользователя.
- Пользователь выполняет выход и одновременно выходит из всех подключенных приложений (единый выход).
Насколько я понимаю, именно для этого и была изобретена CAS. Клиенты CAS должны реализовать протокол CAS для использования службы аутентификации. Теперь мне интересно использовать CAS или OAuth на клиентском (потребительском) сайте. Является ли OAuth заменой этой части CAS? Следует ли отдавать предпочтение OAuth как новому стандарту де-факто? Есть ли простая в использовании (не Sun OpenSSO!) Замена аутентификационной части CAS, поддерживающая различные методы, такие как имя пользователя / пароль, OpenID, сертификаты TLS ...?
Контекст:
- Различные приложения должны полагаться на аутентификацию сервера единого входа и должны использовать что-то вроде сеанса.
- Приложения могут быть веб-приложениями с графическим интерфейсом пользователя или службами (REST).
- Сервер единого входа должен предоставлять идентификатор пользователя, который необходим для получения дополнительной информации о пользователе, такой как роли, адрес электронной почты и т. Д., Из центрального хранилища информации о пользователях.
- Единый выход должен быть возможен.
- Большинство клиентов написаны на Java или PHP.
Я только что открыл для себя WRAP , который может стать преемником OAuth. Это новый протокол, разработанный Microsoft, Google и Yahoo.
Дополнение
Я узнал, что OAuth не предназначен для аутентификации, даже если его можно использовать для реализации SSO, но только вместе с такой службой SSO, как OpenID.
OpenID мне кажется «новым CAS». CAS имеет некоторые функции, которые пропускает OpenID (например, единый выход), но добавить недостающие части в конкретном сценарии не должно быть сложно. Я думаю, что OpenID получил широкое признание, и лучше интегрировать OpenID в приложения или серверы приложений. Я знаю, что CAS также поддерживает OpenID, но я думаю, что CAS можно обойтись без OpenID.