-
Notifications
You must be signed in to change notification settings - Fork 14
Keycloak
serveur IDP (fournisseur d'identité) pour le SSO (single sign on)
Application écrite en java, tourne sur un serveur Widfly Donc pas de config apache à faire, c’est le serveur widfly qui gère !
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
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
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
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
sudo nano /etc/rc.local
et rajouter :
/var/www/keycloak/keycloak-server/bin/standalone.sh &
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
- http://blog.keycloak.org/2015/04/running-keycloak-cluster-with-docker.html
- http://rhelblog.redhat.com/2016/03/22/red-hat-federation-story-ipsilon-keycloak-a-clash-of-the-titans/
- http://rhelblog.redhat.com/2016/04/26/why-use-sssd-instead-of-a-direct-ldap-configuration-for-applications/
- https://keycloak.gitbooks.io/server-adminstration-guide/content/topics/user-federation/sssd.html
- https://keycloak.gitbooks.io/securing-client-applications-guide/content/topics/oidc/javascript-adapter.html
- https://github.com/keycloak/keycloak-js-bower
- https://keycloak.gitbooks.io/securing-client-applications-guide/content/topics/oidc/nodejs-adapter.html
- https://github.com/keycloak/keycloak-nodejs-connect
- https://github.com/keycloak/keycloak-nodejs-auth-utils
- http://blog.keycloak.org/2015/08/improved-ldap-integration-with-keycloak.html
- http://keycloak-user.88327.x6.nabble.com/keycloak-user-Create-user-from-keycloak-UI-with-FreeIPA-backend-td1653.html
Nous sommes disponible à tout moment sur le chat.
Ancien Wiki