J'ai une application Seam qui doit utiliser une connexion externe pour se connecter. La logique est la suivante:Seam: connexion à l'aide de l'application SSO externe
- Mon application envoie l'utilisateur à externe URL SSO
- utilisateur fait ce qu'il faut pour authentifier il
- En cas de succès, l'application externe réoriente utilisateur à mon application avec un jeton aléatoire
- Mon code devrait contacter l'application externe via HTTP avec le passé jeton et obtenir des informations complètes de l'utilisateur en retour
assez simple. Mais je suis coincé.
La redirection arrive à/seam/resources/token. J'avais l'intention d'obtenir l'identité de la session, de la remplir avec un jeton et de m'authentifier. Mais dans le gestionnaire de ressources, la session utilisateur n'est apparemment pas visible: le contexte de la session est null. :(
J'ai essayé de le faire LifeCycle.beginCall là, et il fonctionne dans un sens. Logique d'authentification fonctionne, mais le résultat ne se libère à l'utilisateur (session de l'utilisateur a encore l'identité vide)
Qu'est-ce que je fait de mal?
PS est ici un code plus ou moins complète de mon gestionnaire de ressources. Exploitation forestière et d'autres choses sans rapport avec enlevé par souci de concision.
@Scope(ScopeType.APPLICATION)
@Name("tokenResource")
// @BypassInterceptors
public class TokenResource extends AbstractResource {
@Override
public String getResourcePath() {
return "/token";
}
@Override
public void getResource(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException {
String token = request.getParameter("token");
// woot?
Lifecycle.beginCall();
Identity identity = Identity.instance();
MyIdentity mid = (MyIdentity) identity;
mid.setToken(token);
mid.login();
response.sendRedirect("/home.seam");
}
Pouvez-vous dire quel est le fournisseur/bibliothèque SSO? – cetnar
RPX: https://rpxnow.com/ Oui, c'est OpenID, mais il supporte aussi des API non-exactement-OpenID, comme Google ou Live. –