Skip to content

Keycloak

Marc edited this page Aug 5, 2017 · 1 revision

serveur IDP (fournisseur d'identité) pour le SSO (single sign on)

site internet officiel

Application écrite en java, tourne sur un serveur Widfly Donc pas de config apache à faire, c’est le serveur widfly qui gère !

Installation

Récupérer les logiciels :

sudo su
cd /var/www
wget https://downloads.jboss.org/keycloak/xxx.Final/keycloak-xxx.Final.zip
unzip keycloak-xxx.Final.zip -d .
cd keycloak-xxx.Final
wget https://downloads.jboss.org/keycloak/xxx.Final/adapters/keycloak-oidc/keycloak-wildfly-adapter-dist-xxx.Final.zip
unzip keycloak-wildfly-adapter-dist-xxx.Final.zip -d .
wget https://downloads.jboss.org/keycloak/xxx.Final/keycloak-proxy-xxx.Final.zip
unzip keycloak-proxy-xxxFinal.zip -d .
rm *.zip

Ajouter l’utilisateur admin :

bin/add-user-keycloak.sh -u marc

Lancer le serveur :

bin/standalone.sh

Si erreur au démarrage, vérifier si c’est pas un port qui est déjà pris, comme le 8080 Dans cas modifier le fichier de config (à la fin) :

nano standalone/configuration/standalone.xml

Accéder au serveur depuis l’extérieur

Ouvrir les ports (adapter les nombres) :

ufw allow 8081
uff allow 9991

Lancer le serveur sur l'IP de la carte réseau de la machine :

ifconfig

noter l’IP de la carte réseau

nano standalone/configuration/standalone.xml

chercher cette phrase : jboss.bind.address.management: et changer 127.0.0.1 par l'adresse IP de la carte réseau Lancer le serveur et aller à l'adresse x.x.x.x:8081

Configurer le SSL pour accéder au serveur en https

1- Créer le cerficat SSL avec Lets’Encrypt et aller dans le dossier où sont stockés les fichiers :

certbot certonly --standalone -d domaine.ext
cd /etc/letsencrypt/live/domaine.ext

2- Fusionner les clés publique, intermédiaire et privée dans un fichier pkcs12 (mettre le mot de passe « secret » lorsque demandé) :

openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out cert_and_key.pkcs12 -name domaine.ext -CAfile chain.pem -caname root

3- Générer le fichier jks (pour java) à partir du pkcs12 et assigner les mots de passe :

keytool -importkeystore -srckeystore cert_and_key.pkcs12 -srcstoretype PKCS12 -srcstorepass secret -destkeystore keycloak.jks -deststorepass {MOT-DE-PASSE-1} -destkeypass {MOT-DE-PASSE-2}

4- Copier ce fichier dans le dossier de config de Keycloak :

cp keycloak.jks /var/www/keycloak/keycloak-xxx.Final/standalone/configuration

5- Configurer le fichier standalone.conf : http://hudhaifa.com/blog/install-keycloak-on-ubuntu-server/ mais ne pas rajouter : <https-listener name="https" socket-binding="https" security-realm="UndertowRealm"/> et ne pas remplacer le port 8443 par 443 puis faire ça : https://keycloak.gitbooks.io/documentation/server_installation/topics/network/https.html

6- Lancer le serveur et se connecter avec cette adresse : https://domaine.ext:8443

Configurer la BDD MySQL

Doc officielle

sudo su
mkdir /{DOSSIER-KEYCLOAK}/modules/system/layers/keycloak/org/mysql
mkdir /{DOSSIER-KEYCLOAK}/modules/system/layers/keycloak/org/mysql/main

Télécharger le module Java de MySQL Dézipper et copier le fichier mysql-connector-java-x.x.x-bin.jar vers /{DOSSIER-KEYCLOAK}/modules/system/layers/keycloak/org/mysql/main puis le renommer en mysql-connector-java-bin.jar

Créer le fichier /{DOSSIER-KEYCLOAK}/modules/system/layers/keycloak/org/mysql/main/module.xml et mettre :

<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.3" name="org.mysql">

    <resources>
        <resource-root path="mysql-connector-java-bin.jar"/>
    </resources>

    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

Editer le fichier standalone/configuration/standalone.xml, remplacer ce qui est entre <subsystem xmlns="urn:jboss:domain:datasources:4.0"> et </subsystem> par :

            <datasources>
                <datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true">
                   <connection-url>jdbc:mysql://localhost/keycloak</connection-url>
                   <driver>mysql</driver>
                   <pool>
                       <max-pool-size>20</max-pool-size>
                   </pool>
                   <security>
                       <user-name>keycloak</user-name>
                       <password>{MOT-DE-PASSE-UTILISATEUR-MYSQL}</password>
                   </security>
                </datasource>
                <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
                    <driver>h2</driver>
                    <security>
                        <user-name>sa</user-name>
                        <password>sa</password>
                    </security>
                </datasource>
                <drivers>
                    <driver name="mysql" module="org.mysql">
                        <xa-datasource-class>org.mysql.xa.PGXADataSource</xa-datasource-class>
                    </driver>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>

Créer la base de données keycloak en utf8_general_ci, créer l'utilisateur keycloak et lui ajouter le droits à cette base.

Puis, avant de relancer le serveur, rajouter à nouveau un utilisateur admin (car il était enregistré dans l'ancienne BDD) :

bin/add-user-keycloak.sh -u marc

Lancer le serveur Widfly au démarrage de la machine

sudo nano /etc/rc.local

et rajouter : /var/www/keycloak/keycloak-server/bin/standalone.sh &

En cours de rédaction

https://keycloak.gitbooks.io/documentation/getting_started/topics/secure-jboss-app/install-client-adapter.html cd /var/www/keycloak wget https://downloads.jboss.org/keycloak/3.2.1.Final/adapters/keycloak-oidc/keycloak-wildfly-adapter-dist-3.2.1.Final.zip unzip keycloak-wildfly-adapter-dist-3.2.1.Final.zip -d . rm keycloak-wildfly-adapter-dist-3.2.1.Final.zip cd bin ./jboss-cli.sh --file=adapter-install-offline.cli

Liens à explorer

Ancien Wiki

Clone this wiki locally