Home > SSO > OpenSSO : Configuration de l’authentification par certificat

OpenSSO : Configuration de l’authentification par certificat

Suite à la sortie d’OpenSSO en build 4.5, j’ai décidé de m’y remettre un peu, et vous propose à travers cet article de configurer pas à pas une authentification par certificat dans OpenSSO. Tout d’abord, si vous désirez tester OpenSSO 4.5, veillez absoluement à consulter la releases notes, elle contient une étape de configuration indispensable ! (notamment le remplacement d’une variable JVM).

Une fois l’étape de configuration d’OpenSSO effectuée (configuration par défaut dans mon cas) j’ai commencé par créer un nouveau magasin de données du type LDAP, utilisant un annuaire OpenDS tournant en local. Associer ce nouveau magasin à un nouveau domaine (realm), puis tester la configuration. N’oubliez pas de rajouter le paramètre ?realm=<nom> à l’URL de login, le message doit préciser qu’un data store de type LDAP est utilisé.

Bref, une fois le magasin de donné créer et fonctionnel, il nous reste encore quelques étapes :

  • ajout de l’autorité de confiance dans le truststore de glassfish
  • création d’un certificat serveur (étape optionnelle mais recommandée)
  • création et configuration du type certificat

Pour rajouter l’autorité de confiance dans le magasin de glassfish, assurez vous de disposer du certificat d’autorité au format PEM (codé en base64), puis exécuter la commande suivante (dans le répertoire domains/domain1/config du répertoire d’installation de glassfish) :

# keytool -import -alias <nomAC> -trustcacerts -keystore cacerts.jks

Le mot de passe par défaut du truststore et du keystore est changeit.

Pour rajouter mon certificat serveur dans le keystore, j’ai utilisé l’outil portecle pour importer mon fichier PKCS#12 dans le fichier keystore.jks (mot de passe : changeit). Attention à bien définir changeit comme mot de passe de la clé lors de l’étape d’importation. Connectez vous à l’interface d’administration de glassfish pour modifier le nom de l’alias biclé/certificat à utiliser pour le serveur HTTPS (Configuration / HTTP Services / HTTP Listeners / http-listener-2, Onglet SSL, définir Client authentification à enabled, puis modifier le champ Certificate NickName pour y définir le nom de l’alias du keystore). Sauvegarder puis redémarrez glassfish.

Vérifier que votre navigateur dispose d’un certificat client valide, puis connectez vous sur le port HTTP de glassfish. Tout d’abord examiner le certificat serveur proposé afin de s’assurer qu’il corresponde bien à celui attendu. Si vous n’arrivez pas à vous connecter, et que votre navigateur fais référence à une erreur SSL c’est probablement parce que vous avez réussi à ajouter le certificat serveur dans le fichier keystore.jks, mais que vous ne disposez pas de certificat client associé (ou que vous avez échoué à l’importation du fichier d’autorité dans le fichier cacerts.jks)

L’environnement SSL est désormais prêt, il nous reste à configurer OpenSSO. Pour cela, rendez vous dans le menu Authentification de votre domaine (royaume) puis créer une nouvelle instance de module. Choisissez le type Certificat, et sauvegarder. Cliquer maintenant sur le nom de l’instance. Dans un premier temps, utiliser la configuration suivante

  • Faire correspondre le certificat avec LDAP : désactivé
  • Champ de certificat pour accéder au profil utilisateur : objet UID (cela implique de disposer de l’attribut UID dans le DN du porteur du certificat)

# openssl x509 -in <certificat utiliser.pem) -noout -subject

subject= /UID=asyd/CN=Bruno Bonfils/O=asyd dot net/C=FR

    Enregistrer, puis revenir à la page Authentification.

    • Créer un nouvel enchaînement d’authentification (sic), nommé X509Service
    • Ajouter un nouvel élément puis sélectionner l’instance de module crée préalablement 
    • Sauvegarder
    • Cliquer sur le bouton Revenir à authentification
    • Définir le nouvel enchaînement d’authentification comme chaîne d’authentification par défaut
    • Sauvegarder
    • Puis tenter de vous reconnecter sur le port https avec votre certificat utilisateur (n’oubliez pas de préciser ?realm=<nom du domaine> dans l’URL de login utilisé)

    Si cela fonctionne, vous êtes automatiquement redirigé vers la page d’édition de votre profil utilisateur.

    Categories: SSO Tags:
    1. Taltos
      August 1st, 2011 at 00:29 | #1

      Bonjour,

      Est ce que vous seriez me dire si il est possible d’accéder a un active directory windows2008 R2 en SSL sur le port 636 avec de récupérer l’ensemble des comptes.

      Mes étapes

      je configure l’ensemble de opensso 8 sur le port 389 (ldap) tout fonctionne je recupere bien mes comptes et je peux m’authentifié
      j’integrer le certificat générer auprés de mon authorité de certification dans atrium sso :ca fonctionne car qd j’ai la fenetre de connexion j’ai plus de message d’erreur de certificat.
      j?active donc ssl dans la configuration de sso et modifie le port de mon serveur active directory de 389 a 636.
      pour tester j’utilise le logiciel ldp.exe de microsoft sur le port 636 en activant ssl et ca fonctionne.

      mon probleme c’est que sous sso ca ne fonctionne pas je ne récupere pas mes comptes.
      ca fait un ptit moment que je cherche et je suis a bout d’idée si vous connaissez l’astue vous me serez d’une grande aide.

      merci

    1. No trackbacks yet.