{"id":19789028,"url":"https://github.com/ponsfrilus/kata-ldap","last_synced_at":"2026-03-04T02:03:24.483Z","repository":{"id":150880557,"uuid":"233099623","full_name":"ponsfrilus/kata-ldap","owner":"ponsfrilus","description":"Kata : annuaire LDAP (ldapsearch)","archived":false,"fork":false,"pushed_at":"2025-06-16T22:15:28.000Z","size":8,"stargazers_count":7,"open_issues_count":1,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-16T23:24:42.290Z","etag":null,"topics":["dojo","dojo-kata","epfl","epfl-dojo","epfl-dojo-kata","kata","ldap","ldapsearch"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ponsfrilus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-10T17:41:42.000Z","updated_at":"2025-06-16T22:15:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"030f5786-f8cd-4dcf-bc1e-d4e343be52ae","html_url":"https://github.com/ponsfrilus/kata-ldap","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ponsfrilus/kata-ldap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponsfrilus%2Fkata-ldap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponsfrilus%2Fkata-ldap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponsfrilus%2Fkata-ldap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponsfrilus%2Fkata-ldap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ponsfrilus","download_url":"https://codeload.github.com/ponsfrilus/kata-ldap/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponsfrilus%2Fkata-ldap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30069245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T01:03:42.280Z","status":"online","status_checked_at":"2026-03-04T02:00:07.464Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dojo","dojo-kata","epfl","epfl-dojo","epfl-dojo-kata","kata","ldap","ldapsearch"],"created_at":"2024-11-12T06:29:39.133Z","updated_at":"2026-03-04T02:03:24.478Z","avatar_url":"https://github.com/ponsfrilus.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kata LDAP\n\nKata d'exploration d'un annuaire LDAP (ldapsearch).\n\n\u003c!-- start:apropos --\u003e\n\u003e **À propos**\n\u003e\n\u003e ⓘ Ce dépôt contient un [kata], c'est à dire un _exercice de programmation_\n\u003e généralement utilisé dans le cadre d'un [coding dojo]. Il est proposé aux\n\u003e membres du dojo de l'[EPFL] et fait partie d'une collection de différents\n\u003e katas identifiés par le topic **[epfl-dojo-kata]** sur GitHub.\n\u003e\n\u003e Comment participer ?\n\u003e\n\u003e  - Réalisez le kata dans le langage de programmation de votre choix.\n\u003e  - Ajoutez-vous à la liste des participants en proposant une [pull request].\n\u003e  - Partagez votre intérêt pour ce dépôten lui ajoutant une ⭐.\n\u003e  - Proposez des suggestions ou signalez des bugs en ouvrant une issue.\n\u003e\n\u003e Bonne lecture et bon code !\n\n[kata]: https://fr.wikipedia.org/wiki/Coding_dojo#Kata\n[coding dojo]: https://fr.wikipedia.org/wiki/Coding_dojo\n[EPFL]: https://www.epfl.ch\n[epfl-dojo-kata]: https://github.com/topics/epfl-dojo-kata\n[Pull Request]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests\n\n\u003c!-- Texte mis à jour en juin 2025 --\u003e\n\u003c!-- end:apropos --\u003e\n\n\n_Note_: les exercices qui suivent sont basés sur le LDAP de l'EPFL. Par\nconséquent, ils est possible que certains champs ne soient pas présents dans\nd'autres annuaires. Une adaptation des exercices ci-dessous en fonction du\nschéma de votre annuaire est probablement nécessaire, bien que les principes de\nbase restent les mêmes.\n\n\n## But\n\nCet exercice permet de travailler les requêtes sur un annuaire LDAP.\n\n\n## Comment procéder\n\n1. [Forker](https://github.com/ponsfrilus/kata-ldap/#fork-destination-box) le\nrepo et créer une branche portant le nom de votre username (`git checkout -b\nusername` par exemple `git checkout -b ponsfrilus`, depuis votre fork). \n\n1. Ajouter un fichier `solution_username.md` (par exemple\n`solution_ponsfrilus.md`) dans lequel vous indiquer les réponses aux différents\nquestions.\n\n1. Editer le fichier [CONTRIBUTORS.md](https://github.com/ponsfrilus/kata-ldap/edit/master/CONTRIBUTORS.md) directement depuis l'interface de GitHub pour vous y ajouter.\n\n\n## Données\n\n### Question générales\n\n1. Que signifie LDAP ? ([wikipedia](https://fr.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol))\n1. Les annuaires LDAP ont des champs `c`, `o`, `dc`, `ou`, `dn`, `cn` et `sn`.  \n   Que signifient-ils ?\n1. Quels sont les sujets des [RFC 4511](https://tools.ietf.org/rfc/index) et suivantes ?\n\n\n### Requêtes de base\n\n1. Avec la commande `ldapsearch`, se connecter sur le `ldapuri`\n   '**ldaps://ldap.epfl.ch**' avec une `searchbase` égale à '**c=ch**' et le\n   paramètre '**-x**' (Use simple authentication instead of SASL). Que\n   constate-t-on ?\n1. Ajouter un filtre `uniqueIdentifier=` égale à votre numéro sciper à la\n   commande précédente.\n1. Ajouter le paramètre `-LLL` à la commande précédente. Que fait-il ?\n1. Spécifier les attributs que vous souhaitez obtenir à la fin de votre\n   commande, par exemple `personalTitle gecos mail`.\n1. Comment modifier cette requête pour rechercher des personnes avec leur nom de\n   famille exact ?\n1. Comment modifier cette requête pour rechercher une personne avec son email\n   exact ?\n\n\n### Filtres de recherche\n\n1. Quel est le [caractère\n   \"wildcard\"](https://fr.wikipedia.org/wiki/M%C3%A9tacaract%C3%A8re) utilisé \n   dans les filtres LDAP ?\n1. Donner 2 requêtes basées sur celles de l'exercice précédent utilisant le \n   caractère wildcard.\n\n\n### Base de recherche, groupe et unité organisationnelle\n\n1. Trouver tous les emails des personnes dans l'unité IDEV-FSD.\n1. Trouver tous les usernames des personnes dans le groupe \n   [epfl-dojo](https://groups.epfl.ch/cgi-bin/groups/viewgroup?groupid=S13602).\n1. Expliquer les différents types d'organisation que donne la requête \n   `ldapsearch -x -H ldaps://ldap.epfl.ch -b 'c=ch' -LLL 'objectclass=organization' dn`\n\n\n### Filtres avancés\n\n1. Trouver toutes les personnes ayant un compte \"guest\" présentent dans le \n   groupe [epfl-dojo](https://groups.epfl.ch/cgi-bin/groups/viewgroup?groupid=S13602).\n1. Trouver les personnes de l'unité IDEV-FSD qui ne sont pas dans le \n   groupe [epfl-dojo](https://groups.epfl.ch/cgi-bin/groups/viewgroup?groupid=S13602).\n\n\n### Pour aller plus loin\n\n1. Compter le nombre de personnes avant le nom de famille \"Dupont\" dans l'annuaire.\n1. Extraire la liste d'email du groupe \"epfl-dojo\", vérifier qu'il n'y a pas de \n   doublon, la trier par ordre alphabétique et la sauver dans un fichier.\n1. Compter le nombre d'unité à l'EPFL.\n1. Compter le nombre de Professeurs dans l'école.\n1. Trouver la personne avec le numéro sciper le plus élevé.\n\n\n### Cas pratique\n\nCompléter la donnée suivante :\n\n**Les plus courts**\n 1) Prénom complet le plus court :\n 2) Nom de famille complet le plus court :\n 3) Nom complet le plus court :\n 4) Username le plus court :\n 5) Email le plus court :\n\n**Les plus longs**\n 1) Nom de famille complet le plus long :\n 2) Nom complet le plus long :\n 3) Prénom complet le plus long :\n 4) Email le plus long :\n 5) Username le plus long :\n\n\n### Requêtes sur Active Directory avec un ticket Kerberos\n\n1. Les paquets `krb5-usr`, `libsasl2-2`, `libsasl2-modules-gssapi-mit`\n2. Le royaume (REALM) Kerberos de l'EPFL est \"`INTRANET.EPFL.CH`\"\n.) Cela devrait configurer le   \n   `default_realm = INTRANET.EPFL.CH`\n   de la séction `[libdefaults]` du fichier de configuration `/etc/krb5.conf`\n.) Pour éviter l'erreur \"Server not found in Kerberos database\" de GSSAPI, spécifier les adresses des serveurs intranet de l'école dans `/etc/hosts`, e.g.\n  `128.178.15.229 ad3.intranet.epfl.ch ad3`\n5. Optenir un ticket Kerberos avec la commande `kinit username`\n6. Tester une requête avec:  \n   `ldapsearch -O maxssf=0 -Y GSSAPI -H ldap://ad3.epfl.ch -LLL -b \"dc=intranet,dc=epfl,dc=ch\" '(uid=username)'`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fponsfrilus%2Fkata-ldap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fponsfrilus%2Fkata-ldap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fponsfrilus%2Fkata-ldap/lists"}