SSO — это сокращение от Single Sign On, а OAuth — это сокращение от Open Authority, оба из которых представляют собой способы использования токенов для доступа к приложениям вместо пользовательских паролей. По процессу они очень похожи, но концептуально очень разные.
- Все должны быть знакомы с SSO. Он отделяет аутентификацию при входе от бизнес-систем и использует независимый центр входа. После входа в центр входа все связанные бизнес-системы могут получать доступ к ресурсам без входа в систему.
- Принцип OAuth2.0 может быть относительно незнакомым, но он часто используется очень часто, например, когда вы посещаете веб-сайт и хотите оставить сообщение, но не хотите регистрироваться, вы используете авторизацию WeChat.
Для вышеупомянутых двух у вас нет учетной записи и пароля в бизнес-системе.Учетная запись и пароль хранятся в центре входа или на сервере WeChat.Это называется использованием токена вместо учетной записи и пароля для доступа к приложению.
SSO
Между ними есть много общего, давайте объясним процесс ниже. Давайте сначала объясним SSO.Сравнивая OAuth2.0 с SSO, лучше понять принцип OAuth2.0. Существует множество сред для реализации единого входа, например, структура CAS.Ниже представлена официальная блок-схема структуры CAS.
Вышеупомянутый процесс примерно выглядит следующим образом:
- Пользователь вводит адрес веб-сайта для входа в Защищенное приложение бизнес-системы, и система обнаруживает, что пользователь не вошел в систему, и перенаправляет пользователя на CAS-сервер системы единого входа с собственным параметром адресной службы.
- Браузер пользователя перенаправляется в систему единого входа, система проверяет, вошел ли пользователь в систему, это первый интерфейс системы SSO (здесь CAS), этот интерфейс перенаправляет пользователя на интерфейс входа, если пользователь не вошел в систему, если Если вы вошли в систему, установите глобальную сессию и перенаправьте в бизнес-систему
- Пользователь отправляет логин после ввода пароля. Обратите внимание, что интерфейс входа в настоящее время предоставляется системой SSO. Только система SSO сохраняет пароль пользователя.
- Система SSO проверяет правильность пароля и, если он правильный, перенаправляет в бизнес-систему и приносит билет, выданный системой SSO.
- Браузер перенаправляется на интерфейс входа в бизнес-систему. Этот интерфейс входа не требует пароля, но предоставляет билет SSO. Бизнес-система использует билет, чтобы запросить систему SSO для получения информации о пользователе. И установите локальный сеанс, указав, что вход в систему выполнен успешно и возвращен в браузер sessionId (называемый JSESSIONID в tomcat)
- После этого все взаимодействия могут использовать sessionId для взаимодействия с бизнес-системой.
OAuth2.0
OAuth2.0 имеет множество режимов.Вот режим кода авторизации OAuth2.0.Процесс OAuth2.0 аналогичен SSO.
- Пользователь нажимает, чтобы использовать авторизацию WeChat на веб-сайте, веб-сайт здесь похож на бизнес-систему, а сервер авторизации WeChat похож на систему единого входа.
- После этого сервер авторизации WeChat возвращает страницу подтверждения авторизации, аналогичную интерфейсу входа в систему, которая, конечно, принадлежит WeChat, а не бизнес-системе.
- Пользователь подтверждает авторизацию, аналогично заполнению номера учетной записи и пароля.После отправки WeChat аутентифицирует и возвращает билет, а также перенаправляет бизнес-систему.
- Бизнес-система предоставляет билет для доступа к серверу WeChat, сервер WeChat возвращает официальный токен, и бизнес-система может использовать токен для получения информации о пользователе.
Вышеизложенное - это мое понимание SSO и OAuth2.0.