Партнерская система единого входа на базе SAML

SAML – это стандарт XML, позволяющий защищенным веб-доменам обмениваться информацией для аутентификации и авторизации пользователей. С помощью SAML интернет-провайдер может обращаться к поставщику идентификационной информации в Сети для аутентификации пользователей, запрашивающих доступ к защищенному контенту.

Google предоставляет систему единого входа (SSO) на базе SAML. Она позволяет партнерам полностью контролировать авторизацию и аутентификацию пользователей, у которых есть доступ к веб-приложениям, например Gmail или Google Календарю. При использовании модели SAML компания Google выступает поставщиком сервисов, таких как Gmail или стартовые страницы. Партнеры Google при этом являются поставщиками идентификационной информации и управляют именами пользователей, паролями и другими данными для идентификации, аутентификации и авторизации пользователей в сервисах Google. Чтобы внедрить систему единого входа в Google, воспользуйтесь решением с открытым исходным кодом или установите приложение из Магазина приложений G Suite.

Помните, что система единого входа применяется только в веб-приложениях. Однако вы также можете предоставить пользователям доступ к сервисам Google через клиент на компьютере (например, чтобы они могли работать с почтой Gmail в Outlook по POP-протоколу). Для этого создайте пароли аккаунтов и синхронизируйте их с внутренней базой данных пользователей при помощи Admin SDK Directory API. Также рекомендуем ознакомиться с информацией о том, как пользователи могут проходить аутентификацию с помощью URL входа консоли администратора.

Система единого входа Google основывается на спецификации SAML 2.0. Эту версию SAML поддерживает ряд известных поставщиков услуг.

Принцип работы партнерской системы единого входа на базе SAML

В этом разделе мы рассмотрим процесс входа в приложение, размещенное на сервере Google, с помощью партнерской системы единого входа на базе SAML.

На рисунке ниже представлен процесс входа в Gmail с помощью партнерской системы единого входа на базе SAML. Под рисунком вы найдете список с подробным описанием каждого этапа.

Примечание. Перед началом процесса партнер должен предоставить Google ссылку на SSO, а также открытый ключ, с помощью которого Google сможет проверять ответы SAML.

Рисунок 1. Вход в Google с помощью партнерской системы единого входа на базе SAML.

На рисунке представлены следующие этапы входа:

  1. Пользователь пытается перейти к приложению Google, например почте Gmail, стартовым страницам и т. д.
  2. Google генерирует запрос аутентификации по стандарту SAML. Он шифруется и встраивается в URL партнерской SSO. Вместе с ним встраивается параметр RelayState, содержащий зашифрованный URL приложения Google. Этот параметр является скрытым идентификатором, который возвращается в браузер без изменений и без проверок.
  3. Google отправляет браузеру URL переадресации, содержащий зашифрованный SAML-запрос, который будет передан партнерской SSO.
  4. Партнер расшифровывает SAML-запрос и находит ссылку на сервис Assertion Consumer Service компании Google (ACS) и конечный URL (параметр RelayState). Затем партнер проводит аутентификацию пользователя, запрашивая пароль или выполняя поиск файлов cookie для текущей сессии.
  5. Партнер генерирует SAML-ответ, содержащий имя пользователя, прошедшего аутентификацию. В соответствии со спецификацией SAML 2.0, ответ подписывается общедоступным и конфиденциальным ключом DSA/RSA, принадлежащим партнеру.
  6. Партнер шифрует SAML-ответ и параметр RelayState, а затем отправляет данные обратно в браузер. Партнер предоставляет механизм, с помощью которого браузер передает данные в ACS. Это может быть как форма с SAML-ответом и конечным URL, которую пользователь отправляет в Google, нажимая на кнопку, так и код JavaScript, который отправляет форму в Google автоматически.
  7. ACS проверяет SAML-ответ с помощью общедоступного ключа партнера. Если проверка проходит успешно, ACS переадресует пользователя на конечный URL.
  8. Пользователь входит в аккаунт Google.
Эта информация оказалась полезной?
Как можно улучшить эту статью?