2016-03-21 4 views
0

Я пытаюсь понять поток отправки и получения запросов на аутентификацию в Spring SAML. Я заметил, что во многих аспектах процесса используется компонент SAMLContextProvider. В чем его цель? Может ли процесс работать без него?Цель SAMLContextProvider весной SAML

Этот компонент ссылается на securityContext.xml как:

<bean id="contextProvider" class="org.springframework.security.saml.context.SAMLContextProviderImpl"/> 

ответ

0

Класс SAMLContextProviderImpl является одним из важного класса, который играет важную роль в весеннем SAML ... Он декодирует и кодирует SAML запрос/ответ и новообращенный как весна может понять это. Это также делает весной понять EntityId, роль метаданные, ключи безопасности в локальной сущности/приложении ...

поставщика Context населяет информацию о местном поставщике услуг (ваше приложение), таких как EntityId, роль метаданных , безопасность ключей, учетных данных SSL и механизмов доверия для проверки подписей и соединений SSL/TLS. Когда заполненный контекст становится доступным для всех компонентов, участвующих в обработке входящих или исходящих сообщений SAML . ContextProvider может настраиваться для изменения поведения расширения SAML . Реализация org.springframework.security.saml.context.SAMLContextProviderImpl по умолчанию основывается на информации, имеющейся в ExtendedMetadata и выполняет следующие шаги для создания контекста:

  • Locate EntityId местного ИП разбор части URL после/alias/(например, myAlias ​​в https://www.myserver.com/saml_extension/saml/sso/alias/myAlias?idp=myIdp) и сопоставление с псевдонимом свойства, указанным в ExtendedMetadata. Если URL-адрес не содержит какой-либо части псевдонима, используется поставщик услуг по умолчанию, настроенный с использованием свойства hostsSPName в компоненте метаданных.
  • Заполните учетные данные, используемые для дешифрования данных, отправленных этому поставщику услуг. В случае, если ExtendedMetadata указывает свойство encryptionKey, он будет использоваться как псевдоним для поиска закрытого ключа из bean-компонента keyManager. В противном случае будет использоваться defaultKey для компонента keyManager.
  • Заполните учетные данные, используемые для аутентификации клиентов SSL/TLS. В случае, если ExtendedMetadata указывает свойство tlsKey, он будет использоваться как псевдоним для поиска ключа из bean keyManager. В противном случае для проверки подлинности клиента не будет предоставлено никаких учетных данных.
  • Включить механизм доверия для проверки подписей. В зависимости от параметра securityProfile в движке доверия ExtendedMetadata на основе либо раздела 8.2.1, «профиль взаимодействия метаданных (MetaIOP)» или раздел 8.2.2, создается «профиль PKIX». Включить механизм доверия для проверки соединений SSL/TLS. В зависимости от параметра sslSecurityProfile в движке доверия ExtendedMetadata на основе либо раздела 8.2.1, «профиль взаимодействия метаданных (MetaIOP)» или раздел 8.2.2, создается «профиль PKIX». Во время инициализации SSO ContextProvider также предлагается предоставить метаданные однорангового IDP. Система выполняет эти шаги для определения однорангового IDP для использования:

Во время инициализации SSO ContextProvider также предлагается предоставить метаданные однорангового IDP. Система выполняет эти шаги для определения однорангового IDP для использования:

  • Загрузить параметр idp объекта HttpRequest и попытаться найти идентификатор внутриуровневой связи с помощью объекта entityId.Когда отсутствует параметр idp, система будет либо запускать процесс обнаружения IDP (если включен в ExtendedMetadata локального SP), либо использовать IDP по умолчанию, указанный в компоненте метаданных.

Ссылка: См. Раздел 10.2 Контекстный поставщик весеннего документа SAML. Spring SAML Doc

Implementation Doc