11
votes

Consommer un jeton de samlresponse

L'authentification basée sur SAML SP a suivi un flux de travail court.

  • L'utilisateur souhaite accéder à l'application chez SP.
  • SP envoie un jeton samlrequest à IDP.
  • Je le consomme et générer des jetons Samlresponse.
  • IDP envoie ce jeton SamlResponse à l'AC-URL donné par SP.

    Ma question est la suivante: comment SP consommez ce jeton Samlresponse. Quelle est la logique? Si je peux obtenir une aide du code Java, cela sera bénéfique.


0 commentaires

3 Réponses :


1
votes

Demander le code est un peu, mais le traitement de base est que le SP valide la samlreesponse, y compris pour la formation bien en forme, la présence de valeurs requises, le protocole correct et toute autre validation spécifique SP (contraintes de temps, correspondance des données. , etc.), Maps Utilisateur identifié en jeton à l'utilisateur sur SP (pourrait impliquer la création d'un utilisateur) et transfère l'utilisateur à une ressource demandée.


1 commentaires

Merci pour cette aide. Sure SP vérifiera tous ceux-ci. Pouvez-vous s'il vous plaît me donner un soupçon de classes qui impliqueront toutes ces opérations. Ou n'importe quel site Web à côté de OpenSaml où je peux obtenir de l'aide.



2
votes

Voici comment je le fais en Java. J'utilise Xmlbeans pour analyser la samlreesponse, puis le déchiffrer (s'il est crypté), puis vérifiez la signature:

webbrowerssoauthconsumerservice


0 commentaires

16
votes

La prochaine recette fonctionne pour moi:

  1. Obtenez le jeton Samlresponse et décodez-le et gonflez: P> XXX PRE> LI>

  2. Analyser le XML résultant. Ici, vous pouvez obtenir les informations dont vous avez besoin et par exemple, créer un pojo em> avec elle (il s'agit d'un exemple de code pour analyser le logouTRequest, mais serait analogue aux réponses): P> XXX PRE> LI> ol>

    Pour mon cas d'utilisation, je suis intéressant dans quelques éléments seulement, j'utilise donc sax em>: p> xxx pré>

    espère qu'il espère aide, p>

    luis p>

    ps: vous pouvez également utiliser une bibliothèque comme OpenSamL P>

    DefaultBootstrap.bootstrap();
    
    HTTPRedirectDeflateDecoder decode = new HTTPRedirectDeflateDecoder(new BasicParserPool());
    BasicSAMLMessageContext<LogoutRequest, ?, ?> messageContext = new BasicSAMLMessageContext<LogoutRequest, SAMLObject, SAMLObject>();
    messageContext.setInboundMessageTransport(new HttpServletRequestAdapter(request));
    decode.decode(messageContext);
    XMLObjectBuilderFactory builderFactory = org.opensaml.Configuration.getBuilderFactory();
    LogoutRequestBuilder logoutRequestBuilder = (LogoutRequestBuilder) builderFactory.getBuilder(LogoutRequest.DEFAULT_ELEMENT_NAME);
    LogoutRequest logoutRequest = logoutRequestBuilder.buildObject();
    logoutRequest = (LogoutRequest) messageContext.getInboundMessage();
    


4 commentaires

Cela m'aide vraiment. Veuillez également ajouter Samlvo pour référence.


Sûr! github.com/cerndb/wls-cern-sso/blob/master/saml2slo/src/ch/c ern / ...


Merci, ça m'a vraiment aidé. Comment utilisez-vous l'identifiant et la destination après les avoir extraites de XML?


Heureux d'entendre que cela vous a aidé @manuela je les ajoutes à la samlreesponse, voir GITUB.COM/CERNDB/WLS-CERN-SSO/BLOB/MASTER/SAML2SLO/SRC/CH/CR / ...