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