# 2021/02/20 (Neutriton) : keycloak * [Liste des sujets neutritons](https://pad.libre.brussels/mXBNhtS_R5ONoq2ZOkhwSw#) * [liste des pads](https://pad.libre.brussels/t7YDrNKkR3WKTFHyajefdw#) * [Pad de la réunion](https://pad.libre.brussels/l5SfNUfjRTuxGcbcSZIKMA#) Présences : * HgO * Tangeek * Liberfix * Célo * nino * Tharyrok * flatrongraad * niko * ptr Jitsi : https://jitsi.belnet.be/neutriton ## Météo //Moment informel durant lequel on exprime **en peu de mots** comment on se sent et si on a une attente forte pour la réunion.// //**Ce n'est pas un moment de discussion mais d'expression individuelle et ce n'est pas obligatoire :-)**// ### Attente(s) forte(s) //Si l'une ou l'autre personne exprime une attente forte, merci de vous en occuper en priorité ou de la noter dans le hub ou dans un point approprié//. ## Keycloak Le principe de base, c'est de permettre d'avoir un compte unique pour chacun des services que Neutrinet va proposer. Une technique est de faire du SSO (single sign on) et de déléguer la manière dont on se connecte à une application. ### Définition Identification : Permet de dire comment quelqu'un s'appelle. On peut identifier la personne. Authentification: La personne connaît un secret, et seule la personne qui a ce secret peut s'authentifier. Autorisation: Ce sont des droits d'accès. Est-ce que entité x peut faire y. Est-ce que x peut accéder au service z. Le service va juste identifier l'utilisateur, l'authentification va être déléguée à Keycloak. Oauth2 | OpenID Connect | SAML | LDAP | .. Quid de Radius / LDAP ? On ne peut pas considérer LDAP comme du SSO, parce que chaque service va demander à LDAP le couple login/password. Et donc on n'est pas connecté tout le temps, on va devoir se connecter sur chaque service. ### Protocole SAML (Security Assertion Markup Language) : Vieux protocole qui parle du XML, avec des certificats pour signer les requêtes entre le serveur et l'application. OpenID Connect: Plus moderne (2010) et se repose sur OAuth2 mais avec une API REST (= json). Ca permet d'avoir plusieurs endpoints, notamment pour avoir des informations sur l'utilisateur, ce qui n'est pas possible avec OAuth2 par défaut(?) ![](https://pad.libre.brussels/uploads/upload_eead63bfe4049adc1abb0fdbd045ea07.png) plus détaillé / juste: ![](https://pad.libre.brussels/uploads/upload_bac117f488503100d1a6d1d08d44f3a5.png) Lorsqu'un client se connecte (1) il va envoyer une requête à Keycloak (2) pour obtenir un token d'accès (3). Le client envoie le token à l'application (4) et le serveur va vérifier auprès de Keycloak si ce token est toujours valide (5) (6). Ensuite le client est authentifié et c'est un échange normal entre client serveur. Il y a un cookie dans le navigateur qui permet de bypasser les étapes 1-3, et s'authentifier directement. C'est un produit de red hat . LDAP (Lightweight Directory Access Protocol) ### Interface Royaume = realm Dans le royaume master, on sait faire tout comme config etc. ![](https://pad.libre.brussels/uploads/upload_4638bdc55076a68b1295e1b09308adae.png) ici on voit le royaume users, ou on peut mettre des endusers avec des permissions limités ![](https://pad.libre.brussels/uploads/upload_a7664c8ff9c4d98a748c2dfd1b0e786b.png) On voit par royaums certains apps, comme configuré. La partie Realm settings, t'as des trucs général. Dans Clients, t'as des entités créés par défaut, comme l'interface web, cli etc. important: https://www.keycloak.org/docs/6.0/server_admin/#_protocol-mappers etc ### Nextcloud setup Ces infos sont derrière un paywall sur nextcloud docs, donc on doit chercher ailleurs: https://janikvonrotz.ch/2020/04/21/configure-saml-authentication-for-nextcloud-with-keycloack/ ### Flow ### Branchement avec d'autre ## Prochaine réunion Prochain Neutriton : 13/03/2021 Sujet : * choix du reverse proxy (caddy vs haproxy vs nginx) * présentation de patroni et comparaison avec d'autres HA postgres Lieu : https://jitsi.belnet.be/neutriton et/ou Caldarium https://caldarium.be/fr:contact ## Météo de fin //Moment informel durant lequel on exprime **en peu de mots** comment, à titre personnel, la réunion a été vécue que ce soit positif ou négatif.// //Si une ou plusieurs **tension est née** durant la réunion, il est peut-être nécessaire d'envisager l'une ou l'autre réunion pour y remédier.// {{tag>infra neutriton}}