Alimentation du serveur à partir de l'annuaire LDAP

This commit is contained in:
Navas 2022-04-20 17:02:07 +02:00
parent 5f28473031
commit c5e1d1f471
6 changed files with 79 additions and 51 deletions

View file

@ -4,7 +4,7 @@
## Services fournis ## Services fournis
- Installation d'un serveur PEWS pour fournir le service webfinger sur un serveur docker_host - Installation d'un serveur PEWS pour fournir le service webfinger sur un serveur docker_host
- Peuplement du serveur PEWS en fichiers json à partir du serveur LDAP
## Variables ## Variables
@ -15,15 +15,23 @@ Fournir les variables suivantes. Par exemple :
docker_webfingerserver_local_domain: libretic.fr docker_webfingerserver_local_domain: libretic.fr
docker_webfingerserver_data_dir: /data1 docker_webfingerserver_data_dir: /data1
docker_webfingerserver_service_id: webfinger docker_webfingerserver_service_id: webfinger
docker_webfingerserver_ldap_server_uri: ldap://adresse-du-serveur-ldap
docker_webfingerserver_ldap_bind_dn: uid=compte-de-service-interrogation-ldap,xxxx
docker_webfingerserver_ldap_bind_pw: son_mot_de_passe
docker_webfingerserver_ldap_usersdn: ou=utilisateurs,dc=libretic,dc=fr
``` ```
| Option | Valeur par défaut | Description | | Option | Valeur par défaut | Description |
|-------------------------------------|-------------------|-------------------------------------------------------------------------------------------| |------------------------------------------|-------------------|-------------------------------------------------------------------------------------------|
| docker_webfingerserver_local_domain | | Le nom de domaine pour lequel le service webfinger répond | | docker_webfingerserver_local_domain | | Le nom de domaine pour lequel le service webfinger répond |
| docker_webfingerserver_data_dir | | L'emplacement dans lequel se trouvent les volumes de donnees docker pour le service | | docker_webfingerserver_data_dir | | L'emplacement dans lequel se trouvent les volumes de donnees docker pour le service |
| docker_webfingerserver_service_id | | Le nom de service souhaité : conditionne le nommage des volumes et le routage par traefik | | docker_webfingerserver_service_id | | Le nom de service souhaité : conditionne le nommage des volumes et le routage par traefik |
| | | | | docker_webfingerserver_ldap_server_uri | | URI de connexion au serveur ldap |
| | | | | docker_webfingerserver_ldap_bind_dn | | DN du compte de service de connexion à l'annuaire pour lire les informations utilisateurs |
| docker_webfingerserver_ldap_bind_pw | | Mot de passe du compte de service |
| docker_webfingerserver_ldap_usersdn | | Base de recherche des utilisateurs |
| docker_webfingerserver_ldap_users_filter | (objectClass=*) | (Facultatif) Filtre de sélection des utilisateurs |

1
defaults/main.yml Normal file
View file

@ -0,0 +1 @@
docker_webfingerserver_ldap_users_filter: "(objectClass=*)"

View file

@ -16,3 +16,5 @@
src: PEWS/.well-known src: PEWS/.well-known
dest: "{{ docker_webfingerserver_data_dir }}/{{ docker_webfingerserver_service_id }}/webfinger/" dest: "{{ docker_webfingerserver_data_dir }}/{{ docker_webfingerserver_service_id }}/webfinger/"
notify: docker-compose-up notify: docker-compose-up

View file

@ -0,0 +1,30 @@
- name: Recherche des utilisateurs
delegate_to: localhost
community.general.ldap_search:
server_uri: "{{ docker_webfingerserver_ldap_server_uri }}"
bind_dn: "{{ docker_webfingerserver_ldap_bind_dn }}"
bind_pw: "{{ docker_webfingerserver_ldap_bind_pw }}"
dn: "{{ docker_webfingerserver_ldap_usersdn }}"
filter: "{{ docker_webfingerserver_ldap_users_filter }}"
scope: onelevel
attrs:
- uid
- mail
- memberOf
- displayName
- givenName
- sn
register: ldap_users
- debug:
var: ldap_users.results
- name: creation entree webfinger depuis template
template:
src: user-template.json
dest: "{{ docker_webfingerserver_data_dir }}/{{ docker_webfingerserver_service_id }}/webfinger/.well-known/webfinger/store/{{ docker_webfingerserver_local_domain }}/{{ item.uid }}.json"
with_items:
- "{{ ldap_users.results }}"
vars:
user: "{{ item }}"

View file

@ -0,0 +1,29 @@
{
"subject" : "acct:{{ user.mail }}",
"properties" :
{
"http://packetizer.com/ns/name" : "{{ user.displayName }}"
},
"aliases" :
[
"https://mastodon.libretic.fr/users/{{ user.uid }}"
],
"links" :
[
{
"rel" : "http://webfinger.net/rel/profile-page",
"type": "text/html",
"href": "https://mastodon.libretic.fr/@{{ user.uid }}"
},
{
"rel": "self",
"type": "application/activity+json",
"href": "https://mastodon.libretic.fr/users/{{ user.uid }}"
},
{
"rel": "http://ostatus.org/schema/1.0/subscribe",
"template": "https://mastodon.libretic.fr/authorize_interaction?uri={uri}"
}
]
}

View file

@ -1,42 +0,0 @@
{
"subject" : "acct:olivier.navas@libretic.fr",
"properties" :
{
"http://packetizer.com/ns/name" : "John Smith",
"http://blgx.example.net/ns/version" : "1.5.1",
"http://blgx.example.net/ns/ext" : null
},
"aliases" :
[
"https://mastodon.libretic.fr/u/olivier.navas",
],
"links" :
[
{
"rel" : "http://webfinger.net/rel/avatar",
"type" : "image/jpeg",
"href" : "http://example.com/images/face.png"
},
{
"rel" : "http://webfinger.net/rel/profile-page",
"href" : "http://profile.example.com/u/smithj"
},
{
"rel" : "http://packetizer.com/rel/blog",
"href" : "http://blog.example.com/smithj",
"titles" :
{
"en-us" : "The Adventures of John Smith",
"fr" : "Les Aventures de John Smith"
},
"properties" :
{
"http://example.com/role" : "author"
}
},
{
"rel" : "http://specs.openid.net/auth/2.0/provider",
"href" : "https://profile.example.com/u/smithj"
}
]
}