Comment puis-je parler à ADFS à partir de Java?
Nous avons un site web en cours d'exécution sur Caucho de la Résine. La grande majorité du site est JSP/Java. Nous avons notre propre authentification personnalisée sur le site, ce qui signifie que nous ne sommes pas à l'aide d'un tiers d'authentification des cadres. Nous hébergeons le site de nos clients.
Nos grands clients veulent avoir leurs utilisateurs de se connecter sur notre site avec leurs informations d'identification active directory. Pour cela, je suis en supposant que j'ai parler à ADFS avec SAML, veuillez me corriger si c'est faux.
Donc ma question est comment puis-je aller sur le faire avec Java? de ce que je peux dire, il y a OpenSAML qui sonne comme il ne fait pas tout, et si je veux plus que je besoin d'utiliser Shibboleth. Existe-il d'autres alternatives? si tout ce que je veux est pour que les utilisateurs soient en mesure de se connecter, ce qui est ma meilleure option?
Toute information serait utile. Je vous remercie.
EDIT: je viens de trouvé une autre option serait d'authentification OAuth. Pros? Cons?
OriginalL'auteur casolorz | 2015-01-30
Vous devez vous connecter pour publier un commentaire.
Votre application doit agir comme un SAML SP, soit directement (à partir de votre code), ou indirectement (par exemple par le biais de SAML SP appui sur le reverse proxy, serveur d'application, ...).
Pour direct options (qui nécessitent plus de modifications à votre demande), vous pouvez:
Pour indirects options (qui nécessitent moins de modifications à votre demande), vous pouvez:
Vous pouvez trouver plus de comparaison de précisions dans ce fil.
ADFS 3 devrait avoir le support d'authentification OAuth Serveur d'Autorisation et qu'il pourrait bien être un moyen plus facile à intégrer, voir ici et ici. La mise en œuvre de l'authentification en utilisant OAuth est généralement beaucoup plus facile que SAML, avec aucun des inconvénients.
OriginalL'auteur Vladimír Schäfer
La Résine Authentificateurs que Caucho offre ne vont pas aider avec la fédération. Au lieu de cela, vous devez ajouter un ServletFilter qui ressemble à des utilisateurs non authentifiés. Quand il en trouve un, vous devez les diriger vers une page de connexion. Sur ce, vous devriez demander à l'utilisateur si ils veulent se connecter directement à votre site ou de fédérer à une autre organisation. (Ceci pourrait être fait par l'affichage d'un nom d'utilisateur/mot de passe + logos de confiance des tiers.) Dans l'ancien, de connexion directe est le cas, utilisez la Résine Authentificateur pour vérifier l'encontre de l'utilisateur résultant de pensions ou cependant vous le faites maintenant. Pour la fédération de cas, l'utilisation SAML.
Fédération serait de commencer par l'envoi d'une requête d'authentification à la partenaire de confiance (le serveur ADFS). C'est un peu de document XML emballé dans une forme qui aura besoin de quelques choses à être modifié par la demande (par exemple, le temps de création). Cela peut être fait avec de la Ficelle.format -- rien de compliqué. Envoyer cette demande d'authentification à l'SAML serveur (c'est à dire, ADFS) à l'organisation choisie par l'utilisateur. Ils vont de connexion et envoyer la réponse d'authentification à certains Assertion "Service Consommateurs" que vous devez créer.
Un SCA est juste un point de terminaison qui reçoit l'authentification SAML réponse. Ce doit être un non authentifié point de terminaison qui va analyser et valider la réponse de ADFS. Utilisation OpenSAML pour ce faire. Il ya quelques choses que vous devez faire pour vous assurer qu'il est valide. Par exemple, vous devez vérifier la signature numérique de l'assertion. Vous devez également vérifier la question du temps, qu'il n'est pas dans l'avenir. Vérifiez que l'assertion est pour vous la vérification de la Destination dans la confirmation de données, à l'auditoire, et le destinataire. Etc. Etc.
Si c'est au-delà de ce que vous voulez de code, la caisse un open source ou commerciaux SAML serveur. Il a besoin pour fonctionner comme un SP, et devrait fonctionner dans de la Résine pour garder les choses simples. Un candidat qui est la moyenne, et le lean est Asimba. (La société où je travaille est le responsable de ce projet.) Vous pouvez déployer ce dans la Résine, et il prendra soin de la demande et la réponse.
Une Note sur OAuth
Ce que vous envisagez est ici fédération (ou Web single sign on). OAuth n'est pas adapté pour la fédération. C'est un protocole conçu pour faire délégués de l'autorisation. L'OpenID Foundation a étendu OAuth 2 à l'appui de la fédération dans le OpenID profil de connexion de l'authentification OAuth. ADFS ne prend pas en charge ce protocole de fédération, et est limitée à WS-Federation et SAML. Donc, vous ne devriez pas être à la recherche d'OAuth si ADFS sera utilisé par vos partenaires.
OriginalL'auteur Travis Spencer