2017-10-06 12 views
0

J'utilise WSO2 Identity Server 5.3Comment générer une assertion SAML2 d'attributs à valeurs multiples à l'aide de WSO2 Identity Server 5.3?

Je dois produire une assertion SAML2 avec certains attributs à valeurs multiples du profil utilisateur.

Disons que j'ai séparés par des virgules liste de valeurs pour une demande particulière et je dois organiser ces attributs à l'aide de la structure suivante dans ma SAML réponse d'assertion:

<saml2:Attribute Name="attribute1"> 
    <saml2:AttributeValue>value1</saml2:AttributeValue> 
    <saml2:AttributeValue>value2</saml2:AttributeValue> 
    <saml2:AttributeValue>value3</saml2:AttributeValue> 
    <saml2:AttributeValue>value4</saml2:AttributeValue> 
</saml2:Attribute> 

configuré à un client STS pour obtenir l'affirmation SAML2 et les revendications d'un utilisateur particulier que je configure avec une réclamation à valeurs multiples.

Mon problème est que je reçois la réponse d'assertion SAML comme la structure suivante:

<saml2:Attribute Name="attribute1"> 
    <saml2:AttributeValue>value1,value2,value3,value4</saml2:AttributeValue> 
</saml2:Attribute> 

je configurer une instance de l'application travelocity sur un tomcat, testé à nouveau et je suis l'assertion SAML comme prévu après la connexion à l'application et en choisissant le flux SAML. Je pourrais le vérifier en regardant le fichier journal du serveur Identity. J'ai également utilisé le client STS [1] pour obtenir l'assertion SAML mais ce que j'ai obtenu quand il s'agit d'un attribut à valeurs multiples est une valeur séparée par des virgules pour cet attribut particulier. En utilisant l'interface utilisateur SOAP comme client mais la réponse SAML était exactement le même cas que je l'ai dit auparavant, l'attribut à valeurs multiples se présente sous la forme de valeurs séparées par des virgules pour cet attribut particulier

Je suis allé directement vers le service d'administration https://localhost:9443/services/wso2carbon-sts?wsdl en utilisant l'interface utilisateur SOAP comme client.

Voici un échantillon de ce que je reçois dans la section Déclaration d'attributs:

<saml2:AttributeStatement> 
    <saml2:Attribute Name="http://wso2.org/claims/im" NameFormat="http://wso2.org/claims/im"> 
     <saml2:AttributeValue 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">jairo_fernandezr,jb_fernandez 
     </saml2:AttributeValue> 
    </saml2:Attribute> 
    <saml2:Attribute Name="http://wso2.org/claims/emailaddress" NameFormat="http://wso2.org/claims/emailaddress"> 
     <saml2:AttributeValue 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">[email protected] 
     </saml2:AttributeValue> 
    </saml2:Attribute> 
    <saml2:Attribute Name="http://wso2.org/claims/givenname" NameFormat="http://wso2.org/claims/givenname"> 
     <saml2:AttributeValue 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">Jairo 
     </saml2:AttributeValue> 
    </saml2:Attribute> 
</saml2:AttributeStatement> 

Maintenant, je voudrais vous demander s'il y a un autre moyen d'obtenir une assertion SAML avec attributs à plusieurs valeurs structurées comme des valeurs uniques au lieu de valeurs séparées par des virgules en utilisant le service d'administration https://localhost:9443/services/wso2carbon-sts?wsdl ou une autre approche sans configurer l'application travelocity.

[1] https://github.com/wso2/product-is/tree/5.x.x/modules/samples/sts

Tout commentaire sera grandement appréciée.

Merci

+0

En effet, l'utilisation de valeurs séparées est la manière par défaut dont wso2is gère les attributs à valeurs multiples. Je crois que vous pourriez implémenter votre propre classe qui crée la réponse saml (remplacer la méthode créant des attributs à partir des revendications) et la configurer dans le fichier api-manager.xml (je ne me souviens pas exactement de l'interface, je peux vérifier bureau lundi).la prochaine chose que vous devez écraser est votre propre gestionnaire de sinistres (c'est la carte clé/valeur de création de sinistres) mais je vérifierais comment la signature fonctionnerait avec votre propre implémentation. – gusto2

+0

Quel est votre magasin d'utilisateur? Est-ce le LDAP par défaut? – farasath

+0

J'ai un LDAP externe en tant que magasin principal de l'utilisateur et j'ai aussi un AD en tant que magasin de l'utilisateur secondaire. –

Répondre

0

WSO2 serveur Identity 5.3.0 se comporte correctement quand il vient au flux Web SAML SSO.

Mais le service wso2carbon-sts qui peut être trouvé par défaut à https://localhost:9443/services/wso2carbon-sts se comporte différemment comme je l'ai décrit dans mon message original.

J'ai fait un rapport de ceci à l'équipe WSO2 et ils ont enregistré un bogue dans le projet d'Identity Server, vous pouvez voir les détails here et suivre ceci si vous êtes intéressé.

Merci pour votre soutien