Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révisionLes deux révisions suivantes |
technique:adminsys:ldap:add_service [2020/09/08 19:58] – qduchemi | technique:adminsys:ldap:add_service [2021/11/22 22:29] – ↷ Liens modifiés en raison d'un déplacement. qduchemi |
---|
{{indexmenu_n>25}} | {{indexmenu_n>25}} |
| |
# Ajout d'un service connecté au LDAP | # Ajout d'un service avec authentification par LDAP |
| |
Cette page suppose que vous êtes [[technique:adminsys:ldap:utilisation|connecté au serveur LDAP avec le compte d'administration]]. | Cette page suppose que vous êtes [[technique:adminsys:ldap:utilisation|connecté au serveur LDAP avec le compte d'administration]]. |
Cette étape est **optionnelle**. En effet, il existe déjà un utilisateur en lecture seule sur le LDAP, `nss`. Si malgré tout vous voulez créer un utilisateur dédié qui aura le droit de lire sur le LDAP, suivez ces étapes. Sinon, passez à la section suivante. | Cette étape est **optionnelle**. En effet, il existe déjà un utilisateur en lecture seule sur le LDAP, `nss`. Si malgré tout vous voulez créer un utilisateur dédié qui aura le droit de lire sur le LDAP, suivez ces étapes. Sinon, passez à la section suivante. |
| |
Mais avant toute chose : pourquoi a-t-on besoin d'un utilisateur en lecture seule pour faire de l'authentification ? C'est parce que pour s'authentifier, il faut utiliser le DN complet du compte (exemple : `cn=qduchemi,ou=People,dc=picasoft,dc=net`). Or, quand je m'authentifie sur le Wiki, j'utilise seulement mon login (`qduchemi`). Cela signifie donc qu'à un moment ou un autre, le Wiki doit **chercher dans le LDAP** si une entrée avec `cn=qduchemi` existe, par exemple (ça dépend du filtre qu'on choisit). Et pour effectuer cette recherche, il faut des droits de lecture. | <bootnote question>Pourquoi a-t-on besoin d'un utilisateur en lecture seule pour faire de l'authentification ?</bootnote> |
| |
| C'est parce que pour s'authentifier, il faut utiliser le DN complet du compte (exemple : `cn=qduchemi,ou=People,dc=picasoft,dc=net`). Or, quand je m'authentifie sur le Wiki, j'utilise seulement mon login (`qduchemi`). Cela signifie donc qu'à un moment ou un autre, le Wiki doit **chercher dans le LDAP** si une entrée avec `cn=qduchemi` existe, par exemple (ça dépend du filtre qu'on choisit). Et pour effectuer cette recherche, il faut des droits de lecture. |
| |
On créera un compte sous `ou=Services`, avec pour `cn` le nom du service (exemple : `wiki`, `nextcloud`). | On créera un compte sous `ou=Services`, avec pour `cn` le nom du service (exemple : `wiki`, `nextcloud`). |
| |
On lui attribuera ensuite les classes `organizationalRole` et `simpleSecurityObject`, et on choisira un mot de passe pour `userPassword` que l'on ajoutera dans le [pass](https://gitlab.utc.fr/picasoft/interne/pass). Le chemin utilisé dans le pass est par convention `Tech/LDAP/<Nom Service>/cn=<cn>,dc=picasoft,dc=net`. | On lui attribuera ensuite les classes `organizationalRole` et `simpleSecurityObject`, et on choisira un mot de passe pour `userPassword` que l'on ajoutera dans le [[technique:tips:password_store:start|pass]]. Le chemin utilisé dans le pass est par convention `Tech/LDAP/<Nom Service>/cn=<cn>,dc=picasoft,dc=net`. |
| |
| Maintenant que notre utilisateur est créé, on doit lui donner les accès en lecture seule au LDAP. |
| |
Maintenant que notre utilisateur est créé, on doit lui donner les accès en lecture seule au LDAP. Vous pouvez lire [[technique:adminsys:ldap:acl|la page concernant les permissions]] pour mieux comprendre. | <bootnote>On peut se référer à [[technique:adminsys:ldap:acl|la page concernant les permissions]] pour mieux comprendre.</bootnote> |
| |
Le plus simple est de [[technique:adminsys:ldap:utilisation#pour_modifier_la_configuration|modifier la configuration avec ApacheDirectoryStudio]]. | Le plus simple est de [[technique:adminsys:ldap:utilisation#pour_modifier_la_configuration|modifier la configuration avec ApacheDirectoryStudio]]. |
| |
* `User bind DN` : c'est le DN de notre utilisateur en lecture seule. On utilisera `cn=<cn>,ou=Services,dc=picasoft,dc=net`, où `<cn>` vaut `nss` si vous n'avez pas créé de compte spécifique. | * `User bind DN` : c'est le DN de notre utilisateur en lecture seule. On utilisera `cn=<cn>,ou=Services,dc=picasoft,dc=net`, où `<cn>` vaut `nss` si vous n'avez pas créé de compte spécifique. |
* `User bind password` : le mot de passe de l'utilisateur en lecture seule, accessible dans le [pass](https://gitlab.utc.fr/picasoft/interne/pass) | * `User bind password` : le mot de passe de l'utilisateur en lecture seule, accessible dans le [[technique:tips:password_store:start|pass]] |
* `URL` : `ldaps://ldap.picasoft.net` | * `URL` : `ldaps://ldap.picasoft.net` |
* `Port` : `636` | * `Port` : `636` |
* Et l'UID correspondant au login que l'utilisateur essaye | * Et l'UID correspondant au login que l'utilisateur essaye |
| |
Les filtres ne sont pas traités précisément ici, voir [une documentation](https://confluence.atlassian.com/kb/how-to-write-ldap-search-filters-792496933.html) pour des exemples. Aussi, le `%s` est spécifique à la syntaxe du service, voir la configuration LDAP du service. | <bootnote web>Les filtres ne sont pas traités précisément ici, voir [une documentation](https://confluence.atlassian.com/kb/how-to-write-ldap-search-filters-792496933.html) pour des exemples.</bootnote> |
| |
| <bootnote warning>Le `%s` est spécifique à la syntaxe du service et se réfère l'UID testé, voir la configuration LDAP du service pour savoir comment écrire ses requêtes.</bootnote> |
| |
Encore une fois, tout ceci est modulable : vous pouvez faire des filtres n'autorisant que les personnes d'un certain groupe à accéder à tel service, ou carrément mapper des groupes sur des autorisations spécifiques du service. | Encore une fois, tout ceci est modulable : vous pouvez faire des filtres n'autorisant que les personnes d'un certain groupe à accéder à tel service, ou carrément mapper des groupes sur des autorisations spécifiques du service. |
### Utilisation de authorizedService | ### Utilisation de authorizedService |
| |
Si le service que vous déployé doit être réservé au personnes ayant un attribut `authorizedService` à `<service>`, le filtre ressemblera à ceci : | Si le service que vous déployé doit être réservé aux personnes ayant un attribut `authorizedService` à `<service>`, le filtre ressemblera à ceci : |
| |
``` | ``` |