Предоставление пользователей в Spring saml 2.0 - PullRequest
0 голосов
/ 29 июня 2018

Я работал над приложением Spring Saml. Теперь мне нужно пользовательское обеспечение в моем проекте. Посоветуйте, пожалуйста, то, как мы добиваемся использования приложения SAML PROVISIONING SPRING SAML, такого как Just-in-Time Provisioning в salesforce.

Спасибо

1 Ответ

0 голосов
/ 28 сентября 2018

Получение информации о пользователе из ответа SAML. В системе единого входа мы получаем запрос SAML (язык разметки утверждений безопасности), который содержит идентификатор пользователя (внешний идентификатор или адрес электронной почты), чтобы узнать, какой пользователь пытается войти в систему. Мы должны попросить администратора SSO клиента как минимум добавить ниже выделенные атрибуты / утверждения безопасности, чтобы позволить нам создавать пользователей JIT.

 <Attribute 
    Name=”http://schemas.xmlsoap.org/ws/2005/05/identity/claims/firstname”&gt;
    <AttributeValue>Anuj</AttributeValue>
    </Attribute>
    <Attribute 
    Name=”http://schemas.xmlsoap.org/ws/2005/05/identity/claims/lastname”&gt;
    <AttributeValue>Singh</AttributeValue>
    </Attribute>
    <Attribute 
    Name=”http://schemas.xmlsoap.org/ws/2005/05/identity/claims/useremail”&gt;
    <AttributeValue>anujsingh@gmail.com</AttributeValue>
    </Attribute>
    <Attribute 
   Name=”http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name”&gt;
   <AttributeValue>anujsingh@gmail.com</AttributeValue>
   </Attribute>
   <Attribute 
  Name=”http://schemas.xmlsoap.org/ws/2005/05/identity/claims/propertyIdentifie 
 r”&gt;
   <AttributeValue>ABC</AttributeValue>
   </Attribute>
   <Attribute 

  Name=”http://schemas.xmlsoap.org/ws/2005/05/identity/claims/userpositionid”&gt;
   <AttributeValue>144</AttributeValue>
   </Attribute>
   </Attribute>

Теперь вы можете извлечь всю информацию пользователя из ответа saml -

SAMLCredential credential = (SAMLCredential) 
SecurityContextHolder.getContext().getAuthentication().getCredentials();

Строка userEmail = SpringSAMLUtil.encrypt (credential.getNameID (). GetValue ());

Вы можете получить информацию о пользователе из учетных данных, как показано ниже -

Список атрибутов = credential.getAttributes ();

getAttributes () возвращает список всех атрибутов, которые содержатся в ответе SAML.

После этого вы можете извлекать информацию о пользователях один за другим -

for (Attribute attribute : attributes) {
if ((attribute.getAttributeValues() != null && 
attribute.getAttributeValues().size() > 0)) {
List<XMLObject> xmlValues = attribute.getAttributeValues();
for (XMLObject attributeValue : xmlValues) {
value = ((XSAnyImpl) attributeValue).getTextContent();
// here you can find all attributes (value) one by one as given sequence 
in SAML response.
}
}
}
...