Мне нужно разработать SSO-сервер для моего клиента. Мой вариант использования заключается в том, что у меня есть два приложения, и я хочу, чтобы у них не было собственного экрана входа в систему и чтобы пользователь мог перейти от приложения 1 к приложению 2 (App 1 и App 2 имели свои собственные ресурсы, и они должен зависеть от центрального сервера аутентификации только для аутентификации и авторизации пользователя). Я читал о создании SSO-сервера в java. Я начал читать о oauth 2.0, open ID connect и SAML. Чем больше я читаю, тем больше смущаюсь.
В некоторых местах, которые я прочитал, Oauth 2.0 не может использоваться для SSO, и в каком-то месте я прочитал, что он может быть использован.
Я понимаю, как эти три работают. Тем не менее, я не могу представить, как эти три отличаются друг от друга.
Я поставил свой вопрос ниже
WRT. на "1. Можно использовать OAuth для SSO", там очень хорошо читайте здесь: http://oauth.net/articles/authentication/, который в основном говорит: "не без профиля расширения, и это делается уже как стандартный профиль называется OpenID Connect "
Отказ от ответственности: Я председатель CAS и основатель CAS в облаке (https://www.casinthecloud.com).
CAS также является широко используемым решением SSO. Он работает на веб-сайтах и мобильных приложениях и обладает такими мощными функциями, как шлюз, обновление и прокси. Это очень простой протокол, который вы можете понять и интегрировать очень быстро. Многие клиенты CAS во многих технологиях работают с сервером CAS. Это с открытым исходным кодом и бесплатно, или вы можете полагаться на платного провайдера, если хотите.
OAuth не предоставляет истинного SSO в смысле Федерации, например, используя WS-Federation/SAML и службу маркеров безопасности (STS).
OAuth фактически является протоколом авторизации, т.е. используется для согласия. OpenID Connect обеспечивает уровень аутентификации поверх OAuth.
SAML является "лучшим" выбором, например, Shibboleth, Salesforce, WorkDay и т.д. Все используют его для SSO.
Тем не менее, SAML не подходит для родных приложений, потому что браузер основан на HTTP POST. OAuth лучше подходит для этого.
Для Java SAML вы можете использовать OpenSAML.
В Spring Security есть стек OAuth.