Рекомендации по подключению приложений по протоколу SAML

Общие сведения

Для подключения к Blitz Identity Provider в целях идентификации и аутентификации пользователей приложение может использовать стандарт SAML версий 1.0, 1.1, 2.0. При этом процесс взаимодействия приложения и Blitz Identity Provider должен быть построен в соответствии с профилем SAML Web Browser SSO Profile.

Стандарт SAML основан на XML и определяет способы обмена информацией об аутентификации пользователей и их идентификационных данных (атрибуты, полномочия).

Для возможности осуществлять взаимодействия поставщик услуг и поставщик идентификации предварительно должны обменяться настройками взаимодействия, описанными в форме XML-документов и называемых метаданными. Поставщик услуг должен получить настройки Blitz Identity Provider, называемые метаданными поставщика идентификации. Метаданные поставщика идентификации Blitz Identity Provider доступны по URL http(s)://<hostname>:<port>/blitz/saml/profile/Metadata/SAML. В свою очередь, метаданные поставщика услуг (приложения) должны быть зарегистрированы в Blitz Identity Provider.

Процесс проведения идентификации и аутентификации

В процессе взаимодействия приложение (поставщик услуг) посылает в Blitz Identity Provider SAML-запрос на идентификацию пользователя (SAML Request). Запрос представляет собой оформленный в соответствии со стандартом SAML XML-документ. В запросе присутствует идентификатор запрашивающего идентификацию приложения, называемый EntityID, а также дополнительная служебная информация. Сам запрос передается подписанным электронной подписью приложения. В качестве транспортного протокола для передачи сообщения используется протокол HTTP(s), вызов поставщика идентификации осуществляется через HTTP Redirect. Это означает, что запрос от приложения к Blitz Identity Provider осуществляется опосредованно, через браузер пользователя, и прямое сетевое взаимодействие между приложением и Blitz Identity Provider при использовании SAML не требуется.

Получив SAML-запрос на идентификацию, Blitz Identity Provider идентифицирует принадлежность запроса определенному приложению, после чего отображает пользователю веб-страницу единого входа для проведения идентификации и аутентификации пользователя. В случае успешной идентификации и аутентификации пользователя Blitz Identity Provider передает приложению (поставщику услуг) SAML-ответ (SAML Response). В зависимости от заданных настроек взаимодействия запрос может быть подписанным и зашифрованным. Для формирования подписи и для шифрования используются стандарты XML Signature и XML Encryption. В качестве транспортного протокола для передачи сообщения с результатами идентификации используется протокол HTTP(s), вызов поставщика услуг осуществляется через HTTP POST.

Получив от Blitz Identity Provider SAML-ответ, приложение проверяет его подпись, выполняет расшифровку, после чего извлекает из SAML-утверждений (SAML Assertions) идентификационные данные пользователя (идентификаторы, атрибуты, полномочия). Процесс взаимодействия приложения и Blitz Identity Provider с использованием SAML приведен ниже.

Схема взаимодействия приложения с Blitz Identity Provider по SAML

Процесс выхода из системы

Подключенное по SAML к Blitz Identity Provider приложение также может предусматривать возможность реализации единого выхода (логаута). Для этих целей Blitz Identity Provider поддерживает SAML Single Logout Profile. Приложение может направить в Blitz Identity Provider SAML-запрос и в случае успешного завершения единого логаута получить от Blitz Identity Provider SAML-ответ . Если приложение должно быть задействовано в едином логауте, инициированным другим приложением, подключенным к Blitz Identity Provider, то оно также должно предусматривать возможность обработки запросов , поступивших к приложению от Blitz Identity Provider. В случае успешного завершения локальной сессии приложение должно уведомлять Blitz Identity Provider путем отправки ему SAML-ответа .

Если приложению не требуется единый логаут, и достаточно при инициировании пользователем логаута только завершить собственную сессию приложения и глобальную сессию в Blitz Identity Provider, то вместо реализации сложного протокола в соответствии с SAML Single Logout Profile можно для простого логаута инициировать HTTP Redirect на следующий URL в Blitz Identity Provider, передав в качестве query-параметра адрес возврата в приложение: http(s)://<hostname>:<port>/blitz/login/logout?redirect=http(s)://redirect_url. Если Blitz Identity Provider успешно завершит логаут, то он перенаправит пользователя по переданному URL.

Готовые библиотеки

Так как самостоятельная разработка программного обеспечения клиента SAML является трудоемкой задачей, а ошибки в реализации могут быть чреваты угрозами безопасности, то рекомендуется при интеграции приложения по SAML использовать существующие популярные библиотеки SAML-клиентов: OIOSAML (Java, .NET), OpenSAML (Java), Spring Security SAML (Java), SimpleSAMLphp (PHP), ruby-saml (Ruby on Rails).