IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Tutoriel sur l'authentification centralisée SSO via le protocole CAS


Sujet :

Développement Web en Java

  1. #1
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut Tutoriel sur l'authentification centralisée SSO via le protocole CAS
    Bonjour à tous

    Je vous propose un nouveau tutoriel Java : Tutoriel sur l'authentification centralisée SSO via le protocole CAS

    Sur des intranets ou des sites web distribués se pose la problématique du partage de l'authentification des utilisateurs d'un serveur à l'autre (Le principe du SSO étant de ne demander qu'une seule fois à l'utilisateur de rentrer ses identifiants dans un formulaire). Ce tutoriel présente la solution open-source basée sur le protocole CAS, dans laquelle chaque application délègue la problématique de l'authentification à un serveur centralisé.

    Il comporte la présentation du protocole et la mise en place d'une maquette de faisabilité (POC).

    N'hésitez pas à me faire part de vos remarques & suggestions.
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Salut, a la base, super l'article, ça va bientot je pense me retirer une épine du pieds

    Par contre, on aurais aimer que ça aille plus loin. Tu parles de centralsier le login dans des applications d'entreprises, mais ces applications, bien souvent, ont été développées pour de l'authentification conteneur (security-constraint, etc), il n'est pas abordé dans l'article comment configurer le CAS pour gérer ces security constraints.

    Existe-t-il un fallback pour les clients ne supportant que le HTTP-AUTH?

    Enfin, peux-t-on faire sortir la configuration du web.xml? Je n'ai pas envie d'y hardcoder les urls de mon serveur CAS

  3. #3
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    Alors en fait je n'ai pas voulu aller trop loin d'une part parce que j'avais déjà beaucoup de choses à dire pour cette entrée en matière, et ensuite parce que je ne voulais pas rendre le tutoriel trop dépendant du langage java, alors que même si le serveur CAS est codé en Java, les applications clientes peuvent être écrites dans n'importe quel langage, il existe par exemple des clients java, php, .Net ou même ruby pour ne parler que des clients officiels.

    La gestion des contraintes de sécurité (j'imagine que tu parles d'une application cliente) dépend aussi de l'application que l'on a besoin de configurer. L'article est basé sur une intégration via le web.xml parce que c'est le plus simple qu'on puisse trouver pour un POC, mais ce n'est pas du tout obligatoire. Dans la situation ou je l'ai vu déployé (une grosse entreprise française avec plusieurs millions d'utilisateurs internautes), la méthode recommandée pour raccorder une application Java au serveur CAS est d'utiliser spring-security, qui supporte nativement le protocole CAS, et qui devrait a priori je pense te permettre d'établir les règles de gestion que tu souhaites.

    Existe-t-il un fallback pour les clients ne supportant que le HTTP-AUTH?
    Je ne comprends pas bien cette question. Quel est le cas fonctionnel?
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    typiquement on a des pages qui sont attaquées par des clients web, pour lequels ça ne pose aucun problème de rembaler vers le CAS qui affiche son formulaire, mais on a aussi des scripts qui font des wget sur certaines url et qui s'authentifie avec http basic (désolé, http-auth était pas le bon terme).

    Du coup je me demande si ça reste compatible avec un CAS, qui parfois afficherais un formulaire, parfois accepterais du http-basic.

    Aussi, spring security n'est pas une option ici. On a des applications "off the shelf" qui utilisent directement les securités du conteneur (role/ security-constraint dans le web.xml, authentification par le conteneur J2EE). Ce sont les seuls points où on peux vraiment les chipoter. Ca reste jouable dans ces cas là? Tu as eu des cas où c'étaient directement les conteneur j2EE qui communiquaient avec le CAS et non pas les webapp?

  5. #5
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    Je ne suis pas expert sur ces questions. Je connais la configuration du CAS dans la situation où je l'ai vu déployé, mais je n'ai pas eu l'occasion d'en creuser toutes les possibilités. Je préfère ne pas risquer de t'induire en erreur et te renvoyer vers ce lien (en), que je n'ai peut être pas mis assez en valeur dans mon article, mais qui regroupe beaucoup de tutoriels et de cas d'usage.

    Mais a priori je serai plutôt positif dans la mesure ou le protocole est basé sur le protocole HTTP et est donc totalement indépendant de la technologie d'implémentation coté client, la doc propose même un module apache.

    J'ai vu beaucoup de cas d'implem coté client, le parc est hétérogène certaines applications sont en Java et d'autres en php ou même en .NET, certaines utilisent le client CAS basé sur spring et d'autres utilisent une customisation de leur cru, et de notre coté nous avons apporté une surcouche au serveur CAS pour accepter certains cas d'usage non supportés nativement, par exemple des cas particuliers d'authentification transparente (client reconnu automatiquement). Concernant la basic-auth de mémoire je ne saurais pas te dire, mais ce n'est probablement pas bloquant.

    Si tu as un doute sur un point très technique, tu peux aussi t'adresser à la mailing list des utilisateurs (en) qui est assez active, généralement les gens répondent dans la journée.
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre habitué

    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Points : 140
    Points
    140
    Par défaut Un fournisseur de serveurs CAS dans le cloud
    Bonjour Gauthier,

    Je viens de fonder un fournisseur de serveurs CAS dans le cloud : http://www.casinthecloud.com. Pour ceux qui veulent essayer rapidement un serveur CAS sans s'embêter...

    Pour la documentation, j'ai de nouveaux schémas : http://www.casinthecloud.com/product.html, que je trouve plus clairs que ceux que j'avais fait pour Devoxx 2013, notamment ta cinématique du protocole CAS.

    Cdlt,
    Jérôme

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Points : 12
    Points
    12
    Par défaut Lien ne marche pas
    Bonjour,
    Merci pour votre tuto, je trouve un problème à télécharger le mywebapp depuis le sample de démonstration: le lien ne marche pas.
    Merci

  8. #8
    Candidat au Club
    Homme Profil pro
    Ingénieur systèmes informatiques
    Inscrit en
    Juin 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur systèmes informatiques

    Informations forums :
    Inscription : Juin 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Utilisation du protocole CAS
    Bonjour,

    Dans le cadre d'un projet au sein de mon entreprise : je travaille sur le développement d'une application mobile qui sera utilisée par nos clients (plus de 6000 utilisateurs).

    Cette application va offert un portail à travers lequel, un utilisateur pourra accéder à différents modules offerts par nos partenaires.

    Pour authentifier les utilisateurs, nous avons décider de choisir la solution SSO pour éviter d'un utilisateur saisi son mot de passe à chaque fois qu'il navigue d'un module à un autre.

    Je voudrais savoir si ce protocole peut être utilisé dans mon cas-là et si son implémentation sera aussi facile ?

    Nous pensant à mettre en place un serveur contenant tous les utilisateurs. Est-ce que ce protocole vas supporter une telle charge ?

    Omar.

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu peux regarder du coté de keycloak pour ce genre de chose. C'est un serveur SSO sur base de protocole oauth ou saml, avec gestion des roles spécifiques à chaque application, des modes offline avec des tokens longue durée. C'est intégrable directement au conteneur sans avoir à mettre du code spécifique dans ton application. Ca gère aussi la fédération d'utilisateurs (google, facebook, linkedin, ldap...)

    Par expérience, la grosse particularité c'est surtout pour tes applications de devoir s'attendre à voir se logguer des utilisateurs qu'elles n'ont jamais vus et qui ne sont pas encore dans leur base.

  10. #10
    Candidat au Club
    Homme Profil pro
    Ingénieur systèmes informatiques
    Inscrit en
    Juin 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur systèmes informatiques

    Informations forums :
    Inscription : Juin 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut keycloak
    Merci pour ta réponse @tchize_

    A propos du protocole CAS, pour l'implémenter, on doit installer un client au niveau de chaque application. Mais dans mon cas ceci est vraiment impossible car les applications en question appartiennent à nos partenaires et ils ne sont pas d'accords pour qu'on installe ce module client pour leurs applications.

    J'aimerai savoir alors, si keycloak n'exige pas une telle installation.

    Merci d'avance.

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Keycloak gère les protocole standard oauth et saml. Il estinévitable, quel que soit le mécanisme d'authentification, que l'appli concernée devra à un moment ou un autre s'y plier de même que le serveur qui gère les requête http. L'avantage de ces protocoles c'est qu'ils sont ouverts, libre à tes partenaire de fournir leur implémentation ou d'utiliser un client standard. oauth ayant été pensé avec les applications standalone en tête fournis aussi coté client un flux adapté à des application genre android / ios où il suffit de demander un token offline au serveur oauth pour ensuite présenter ce token au serveur sous forme de bearer token dans la requête http.

  12. #12
    Futur Membre du Club
    Femme Profil pro
    Analyse système
    Inscrit en
    Août 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2017
    Messages : 15
    Points : 8
    Points
    8
    Par défaut registration in keycloak
    Bonjour à tous,
    pour faire un petit résumé, j'ai rencontré un problème au niveau de l'enregistrement d'un utilisateur sur une interface cliente gérée par keycloak,
    alors je m'explique j'ai deux applications clientes qui utilisent le même keycloak, dans l'une j'en ai besoin d'enregistré des utilisateurs et l'autre non, mais en essayant de le désactive pour l'une il se désactive pour l'autre!!!
    par avance merci pour vos suggestions, et toute aides est la bienvenue.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Points : 3
    Points
    3
    Par défaut URGENT : Beaucoup de liens ne fonctionnent plus, est-il possible svp de les mettre à jour ?
    Bonjour,

    Je découvre CAS aujourd'hui et je suis donc très intéressé par ce POC.

    Par contre, ces liens de téléchargement ne fonctionnent plus :
    1. http://tiny.cc/samplecasexample
    2. http://downloads.jasig.org/cas-clients/


    Aussi dans le texte il est indiqué de naviguer dans le dossier "modules" mais ce dossier n'existe pas.

    Merci svp de nous indiquer les nouveaux liens ou de nous fournir directement les éléments manquants afin de réaliser ce POC.

    Bien à vous.

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Urgent Besoin Aide
    Hello,
    Quelqu'un pour m'aider, c'est assez urgent ?
    Merci.

    Citation Envoyé par Farid59 Voir le message
    Bonjour,

    Je découvre CAS aujourd'hui et je suis donc très intéressé par ce POC.

    Par contre, ces liens de téléchargement ne fonctionnent plus :
    1. http://tiny.cc/samplecasexample
    2. http://downloads.jasig.org/cas-clients/


    Aussi dans le texte il est indiqué de naviguer dans le dossier "modules" mais ce dossier n'existe pas.

    Merci svp de nous indiquer les nouveaux liens ou de nous fournir directement les éléments manquants afin de réaliser ce POC.

    Bien à vous.

Discussions similaires

  1. SSO vs authentification centralisée
    Par devibee dans le forum Sécurité
    Réponses: 1
    Dernier message: 14/04/2014, 17h44
  2. Authentification centralisée sur Web
    Par sl.info dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 28/03/2008, 09h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo