configuration SAML avec Keycloack

315 views
Skip to first unread message

jm constans

unread,
Apr 9, 2021, 9:16:45 AM4/9/21
to jorani
Bonjour,
je souhaiterais configurer JORANI en utilisant le protocole SAML  et KEYCLOACK.
J'ai activé coté JORANI SAML et configuré le fichier saml.php avec les éléments de connexion de Keycloack. J'arrive bien sur l'interface de connexion de Keycloack lors de l'appel de l'URL Jorani et après avoir rentré les identifiant de connexion, j'arrive sur une page blanche ./jorani/api/acs . Si je rafraichi cette page j'ai l'erreur :
"An uncaught Exception was encountered

Type: OneLogin\Saml2\Error

Message: SAML Response not found, Only supported HTTP_POST Binding

Filename: /var/www/html/jorani/vendor/onelogin/php-saml/src/Saml2/Auth.php

Line Number: 257"

Auriez vous une idée de ce qu'il me manque ne configuration pour que cela fonctionne ou un exemple de configuration SAML avec KEYCLOACK ?

cdt

Benjamin BALET

unread,
Apr 9, 2021, 9:24:16 AM4/9/21
to jorani
Bonjour,

Par défaut Keycloack fait une redirection (HTTP GET) vers l'application tierce (Jorani par ex.). Ce qui n'est pas supporté par le composant OneLogin qui s'attend à une soumission (HTTP POST). C'est l'explication de l'erreur.

Pour que cela fonctionne, il faut activer "force POST binding" dans l'onglet Settings de l'application, cf.




--
You received this message because you are subscribed to the Google Groups "jorani" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jorani+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jorani/0fd32998-66b6-49c1-b346-df27daac7173n%40googlegroups.com.

jm constans

unread,
Apr 9, 2021, 11:18:42 AM4/9/21
to jor...@googlegroups.com
c'est déjà activé dans les settings du client Jorani sur Keycloack

You received this message because you are subscribed to a topic in the Google Groups "jorani" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jorani/bNeyr5v9lKU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jorani+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jorani/CAPFJBOQ2zp1xCESF_quhLaYx1_fcwvemZa51e%3DfrtCxLNmX8ZQ%40mail.gmail.com.

Benjamin BALET

unread,
Apr 10, 2021, 10:39:01 AM4/10/21
to jorani
J'avais pas lu "Si je rafraichi cette page j'ai l'erreur", c'est le fait de rafraîchir la page qui provoque la deuxième erreur à propos du redirect.
Pour la première erreur il faut regarder le contenu du fichier de log.
Autre chose à regarder, c'est si keycloack n'accepte que les site client en HTTPS

jm constans

unread,
Apr 14, 2021, 10:49:58 AM4/14/21
to jorani
j'ai finalement pu avancé dans la configuration de SAML et KEYCLOAK et j'arrive dorénavant sur la page de login de JORANI cepedant j'ai le message "Votre compte est désactivé. Veuillez contacter un responsable des ressources humaines ou votre manager.".
L'utilisateur est bien créé dans Keycloak avec le même mot de passe que dans l'application JORANI et j'arrive sans SAML activé à me connecter avec ce compte sur JORANI.
Ai je oublié une étape , un mapping ?
cdt

Benjamin BALET

unread,
Apr 14, 2021, 11:11:30 AM4/14/21
to jorani
Il y a peut-être une piste ici: https://groups.google.com/g/jorani/c/8XXVSgmMzcA/m/IV6krg6aAwAJ
En tout cas des explications sur le fonctionnement et le mapping.

Benjamin BALET

unread,
Apr 19, 2021, 3:59:32 AM4/19/21
to jorani
Il faudrait en dire plus sur votre installation.
Est-ce que vous êtes sous Docker.
En HTTPS?
Etc.

Parce que je pense que cela ne vient pas du protocole SAML en lui-même. Je l'ai testé avec Google, Azure, Auth0, OneLogin, etc.

jm constans

unread,
Apr 21, 2021, 6:25:12 AM4/21/21
to jorani
je suis sur une installation Keycloak dans une VM avec un reverseproxy apache en HTTPS
lorsque j'ai configuré Keycloak en HTTP direct avec JORANI, j'ai réussi à faire fonctionner l'authentification en forçant le mapping de "Name Id" à "email"  
lorsque j''ai rajouté le reverseproxy apache pour utiliser Keycloak en HTTPS comme préconisé dans la documentation Keycloak , ca ne fonctionne plus et j'arrive après l'identification par Keycloak à une page blanche sur Jorani/api/acs
Je pense que le problème doit être la configuration du fichier saml.php mais je n'arrive pas à trouver, notamment au niveau du certifcat. En fait je ne sais plus lequel mettre, celui du Realm de Keycloak ou celui du proxy, ou un autre.
J'ai testé avec celui du Realm et celui du proxy mais j'ai le même résultat... une page blanche et aucun log significatif. Peux être existe t il la possibilité de tracer les échanges Saml pour analyse mais je ne sais pas comment faire
voici le contenu du saml.php :
$samlSettings = array(
    'sp' => array(
        'entityId' => base_url() . 'api/metadata',
        'assertionConsumerService' => array(
            'url' => base_url() . 'api/acs',
            'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
        ),
        'singleLogoutService' => array(
            'url' => base_url() . 'api/sls',
            'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
        ),
        'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified',
    ),
    'idp' => array(

        'singleSignOnService' => array(
            'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
        ),
        'singleLogoutService' => array(
            'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
        ),
        'x509cert' => '-----BEGIN CERTIFICATE-----
pDL/IpIBldRS7jXQJjf9usmtNArw3cVN+LwIEC0CAwEAAaMiMCAwCQYDVR0TBAIw
ADATBgNVHREEDDAKgghpZGVudGl0eTANBgkqhkiG9w0BAQsFAAOCAQEAq+aeBGaX
ES/cAqy6siCOiqTDTZtHh0F1Pb4jQn2qGEx5ClpcxoWOqZE/6WQ5LQ+MddAuECz/
fveqbY0//epb1l6DlWqKLl4YdDL78llLW9mH7EvWhsquGzFWFApbRIT73ELWjuXT
zCQiyJKyiQZpDnf4oXKi0ph7iarD7KhlxqUysy8cOKLxfnz5P02UbWMwnxksv0pd
KXtyG5F3gBeKcX0ft00VN3JIzTEaLTz6vFkUWQH6yEDGJO/T94B8zCFH2x6y9izD
AeURHqa0cqXrdbcZ/gUle4bZbth5L5rCWcBYHiTDTjj76CxVuXMqRyFQz5/26IS4
DY6oi3hQHoOYCA==
-----END CERTIFICATE-----
',
    ),

Benjamin BALET

unread,
Apr 21, 2021, 6:29:34 AM4/21/21
to jorani
Et les logs?
  • Dans application/logs
  • PHP (qui lui doit être en FPM si je comprends bien)


jm constans

unread,
Apr 21, 2021, 7:28:56 AM4/21/21
to jorani
dans application/logs  : ERROR - 2021-04-21 12:26:21 --> {controllers/session/acs} SSO Errors=invalid_response
PHP en mode normal  non FPM

jm constans

unread,
Apr 23, 2021, 11:18:28 AM4/23/21
to jorani
j'ai réussi à faire tomber en marche l'authentification SAML avec Keycloak derrière un proxy en HTTPS.
plusieurs choses à respecter:
mettre un reverse proxy HTTPS pour connecter Keycloak en HTTPS (suivre doc Keycloak notamment les commande Jboss pour définir que dorénavant il est derrière un Proxy)
configurer un client Keycloak dans un realm spécifique puis enlever le role role_id prédéfini dans le client. Ensuite au niveau de l'onglet général désactiver "Client signature required", activer "Force POST Binding", "Force Name ID Format" et choisir email dans "Name ID Format"
Renseigner "*" dans "Valid Redirect URL" et votre URL dans Base URL ainsi que l'URL de logout dans "Fine Grain SAML Endpoint Configuration" pour ne pas avoir de pb avec le logout. Ci-dessous la capture d'écran des paramètres.
Capture d’écran 2021-04-23 à 17.10.21.png

du coté de Jorani, configurer sam.php sur la partie IDP comme suit en faisant bien attention de mettre dans entityId l'URL du Realm uniquement sans la partie protocol/saml (mes problèmes de page blanche venait de la)
nota le x509cert est celui de la clé du realm

 'idp' => array(

        'entityId' => 'https://identity.xxxx.fr/auth/realms/xxxx',


        'singleSignOnService' => array(

            'url' => 'https://identity.xxxx.fr/auth/realms/xxxx/protocol/saml',

            //'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',

        ),

        'singleLogoutService' => array(

            'url' => 'https://identity.xxxx.fr/auth/realms/xxxx/protocol/saml',

            //'binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',

        ),

        'x509cert' => 'MIICmzCCAYMCB .....
Reply all
Reply to author
Forward
0 new messages