Comment valider WS-Federation des jetons SAML avec Java Fournisseur de Services
Je suis en train de travailler sur un projet qui utilise ws_federation et SAML pour s'authentifier auprès d'un Fournisseur d'Identité en cours d'exécution sur un serveur IIS en cours d'exécution sur .net appelé thinktecture
J'ai besoin d'écrire un Java Prestataire de Service qui envoie une demande d'authentification SAML pour le Fournisseur d'Identité et d'obtenir la réponse SAML sur mon java web app.
J'ai besoin de savoir si il y a toutes les bonnes bibliothèques de valider SAML et mabye une certaine orientation sur la configuration ou des liens vers un tutoriel de prise en main. J'ai essaye spring_security-saml_extensions, mais je continue à recevoir des erreurs lorsque j'essaie de mettre mon Identité des Fournisseurs de méta-liaison de données dans les fichiers de configuration.
Toute aide serait grandement appréciée!
Aussi: Ce serait formidable si la solution pourrait être intégrée dans une application web java!
Quelques informations Supplémentaires:
Ci-dessous est le XML, je peux obtenir à partir de la réponse retournée par le pci dans mon SP je suis en train de travailler sur, j'étais sous l'impression qu'il s'agissait d'un jeton SAML.
<trust:RequestSecurityTokenResponseCollection xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
<trust:RequestSecurityTokenResponse Context="rm=0&id=passive&ru=%2fApplicant%2fMyAccount%2fHome">
<trust:Lifetime>
<wsu:Created xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2013-04-17T19:37:18.399Z</wsu:Created>
<wsu:Expires xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2013-04-17T20:07:18.399Z</wsu:Expires>
</trust:Lifetime>
<wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsa:Address>https://[SP Server]/</wsa:Address>
</wsa:EndpointReference>
</wsp:AppliesTo>
<trust:RequestedSecurityToken>
<Assertion ID="_b4c87094-9557-419f-92fd-714a2b9cd8af" IssueInstant="2013-04-17T19:37:18.399Z" Version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
<Issuer>http://[IDP Server]/trust/idp</Issuer>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
<Reference URI="#_b4c87094-9557-419f-92fd-714a2b9cd8af">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<DigestValue>pVpyzVN6Cz7NRNsp+jSVQP4ILt1J8y/4KBPzAtbllMg=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>NnTCfQE7p1FmrdbmYk+wRpbaZ5Rr4Opk67mI2Y6+PTdQlUErv5Bt8C/iBA398CwAgZyREqZfobd47QnxZYOvnFjiMSsQAndmPejZ9PEGwdu8hVrYyhV2VpcPtcaew/tOGWBvTdUKH5YjGmTHLtLxny0WaGYIquYVWoO3S68duy6DWXr/rxMzOEjNhY3s/3alCYMSYqDrhB8jKY8M9M2jruZa2KjIziumW6bzksizYSEFAcn4LfVhACaucrBAVch+r31vKAxO0BpkU7wSRBTaQV+/ALmA1HJAVO/mecujHJnhpizF4GDNdsnbIxck3r/2X9gt7WgMhfwBW+6Xvd2whQ==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIIC5TCCAc2gAwIBAgIQSuU/gl5tP49ARSN2SkVRKzANBgkqhkiG9w0BAQUFADAaMRgwFgYDVQQDEw9XTVN2Yy1VU0FKLURFVjEwHhcNMTAxMDAxMTI1MjUxWhcNMjAwOTI4MTI1MjUxWjAaMRgwFgYDVQQDEw9XTVN2Yy1VU0FKLURFVjEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgytRM5b2B35ydz+zxt59fklaT02z4AXUd9zm3h7Clq8LZYPMYvHOkzv7tgY38rD+NvmELAzeESBTbHN/wJyFkVbdD3mHVvE/vARGLxZB1lx+JN+gNjrrXT90FQtyWEchWoUcO6eFTAUdLgLonSn7SvI7lze2YUIS9BBc0OdpZzhDnWecUA1N0c5CeMZcjxroZYTuXH1YDGqOacphtZ7TMwCV2V5i7k9Jj4xY8uuSX92l7cW+EIqoqp26XTWmfon/jvDvWe3Dhe/mdtLXKQ2Lu8KCiN+zqA91fiGwezTkoeyDrWh/8/jqoz7Ep/4BN9cNLrbk75ngiryPlGLOCQK7vAgMBAAGjJzAlMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA4GA1UdDwQHAwUAsAAAADANBgkqhkiG9w0BAQUFAAOCAQEAVTHuMl7Tr+ZAQOLf9nPbAlFabec8DFb+3jzbo4qUfGD/DYGuDg4gFNfr09s2Ft82DzXf1BQJDprRIRtrQOE8hDpOeM6c5sOXk7xKh0QjPzqE4n7ZJUP8X+NW+Zu9D7OaFSJ0/mUffw/PugoYTusfCEudrKzo2CDgtrQjaTrm7zkxksJdH/DY+YCF1g+ljpUDKR9SYwRaGQ5fj9dn+SMibhcXqDXod+BGKW9xaTo3CLFKSbMRt97LjF+P8sfnq8IGTpHqHR3pFDjdbIQ4ixRCygEpbVZJgXPvcTk2Nnvi3SyLZPeTRTGnZM0R7KMhLji2JnHYEXArC46fVwHtjLGbGw==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
<Subject>
<NameID>e8f279d7-cbd8-468d-a6df-97419729fe59</NameID>
<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer" />
</Subject>
<Conditions NotBefore="2013-04-17T19:37:18.399Z" NotOnOrAfter="2013-04-17T20:07:18.399Z">
<AudienceRestriction>
<Audience>https://[SP Server]</Audience>
</AudienceRestriction>
</Conditions>
<AttributeStatement>
<!-- Data from my database-->
</AttributeStatement>
<AuthnStatement AuthnInstant="2013-04-17T19:37:18.337Z">
<AuthnContext>
<AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
</AuthnContext>
</AuthnStatement>
</Assertion>
</trust:RequestedSecurityToken>
<trust:RequestedAttachedReference>
<SecurityTokenReference d4p1:TokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0" xmlns:d4p1="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<KeyIdentifier ValueType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLID">_b4c87094-9557-419f-92fd-714a2b9cd8af</KeyIdentifier>
</SecurityTokenReference>
</trust:RequestedAttachedReference>
<trust:RequestedUnattachedReference>
<SecurityTokenReference d4p1:TokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0" xmlns:d4p1="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<KeyIdentifier ValueType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLID">_b4c87094-9557-419f-92fd-714a2b9cd8af</KeyIdentifier>
</SecurityTokenReference>
</trust:RequestedUnattachedReference>
<trust:TokenType>urn:oasis:names:tc:SAML:2.0:assertion</trust:TokenType>
<trust:RequestType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue</trust:RequestType>
<trust:KeyType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Bearer</trust:KeyType>
</trust:RequestSecurityTokenResponse>
Non, il n'est pas. Il est en cours d'exécution sur thinktecture qui est un opensource .produit net
Avez-vous voir la réponse ci-dessous? Est-il utile?
Mon seul point de confusion est de la terminologie, je suppose... c'Est le xml dans ma question ws-federation de la réponse avec un jeton SAML à l'intérieur, ou est-il une réponse SAML? Peut OpenSAML processus de la réponse de thinktecture de DÉPLACÉS?
Ok, Selon XML WS-Trust et pas SAML xml: docs.oasis-open.org/ws-sx/ws-trust/200512/ws-trust-1.3-os.html Vous devriez trouver une bibliothèque qui prend en charge est (OpenSAML pas encore)
OriginalL'auteur Calvin | 2013-05-01
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé une grande bibliothèque sur github que les deux poignées de la validation du Jeton SAML et si vous vous sentez aventureux est un bon tutoriel sur la façon d'utiliser OpenSAML.
La bibliothèque est appelée Auth10-Java et il fait un excellent travail de décomposition jeton SAML de validation. Pour info il gère également le protocole WS-Federation.
Cela a très bien fonctionné pour moi, et mieux encore, j'apprends des tas sur SAML et OpenSAML à partir de cette bibliothèque! Juste être sûr d'inclure toutes les dépendances dans vos projets de chemin de génération!
OriginalL'auteur Calvin
La bonne nouvelle, c'est open-source Java SAML piles comme le Java Oracle OpenSSO Fedlet.
La mauvaise nouvelle est que la IdentityServer produit que vous utilisez n'a pas de support pour SAML.
Il a un support pour SAML jetons mais pas le SAML protocole.
Sans IdentityServer peut valider les jetons, mais les jetons seront envoyés à l'aide de WS-Fed de ne pas SAML.
OriginalL'auteur nzpcmad
Veuillez jeter un oeil à Shibboleth: http://shibboleth.net/products/service-provider.html.
La façon la plus facile d'intégrer Java avec Shibboleth est l'installation d'Apache httpd avec Shibboleth et de prendre le HTTP REMOTE_USER en-tête de la demande: https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPJavaInstall.
Shibboleth est un grand cadre et prend entièrement en charge le protocole SAML.
Vous pouvez également utiliser le code Java et à créer SP code par vous-même à l'aide de OpenSAML code.
OpenSAML bibliothèque est utilisée par Shibboleth (lien ci-dessus).
Les instructions sur la façon de commencer à développer: https://wiki.shibboleth.net/confluence/display/OpenSAML/OSTwoDeveloperManual
Malheureusement, Shibboleth n'a pas d'intégration avec Tomcat ou Glassfish. Vous aurez besoin d'installer le serveur Apache httpd.
OriginalL'auteur Michael