LDAP, SSO, Kerberos : Plongée dans le monde des annuaires

Presenter Notes

LDAP

  • Lightweight Directory Access Protocol
  • Ports : TCP 389 / 636
  • Encodage : ASN.1
  • Version : LDAPv3

Créé en 1993 (RFC 1487)

Presenter Notes

Opérations

  • bind, unbind
  • Search, compare
  • Add, modify, rename, delete
  • Extended

Presenter Notes

Recherche

  • Base : ou=people,dc=polyconseil,dc=fr
  • Filtre : |(uid=rbarrois)(uid=raphael.barrois)
  • Scope : SUBTREE (ou ONELEVEL, BASE)

Presenter Notes

Arborescence

dc=fr
+- dc=polyconseil
   +- ou=people
   |  +- uid=rbarrois
   |  +- uid=rboucher
   |
   +- ou=groups
   |  +- ...
   |
   +- ou=devices
      +- ou=bluesolutions-all
         +- uid=rbarrois_laptop
         +- uid=rbarrois_phone

Presenter Notes

Schéma

dn: uid=rbarrois,ou=people,dc=polyconseil,dc=fr
objectclass: ["inetOrgPerson", "posixAccount"]
uid: ["rbarrois"]
cn: ["Raphaël", "Xelnor"]
objectclass ( 2.16.840.1.113730.3.2.2
    NAME 'inetOrgPerson'
    DESC 'RFC2798: Internet Organizational Person'
    SUP organizationalPerson
    STRUCTURAL
    MAY (
        audio $ businessCategory $ carLicense $ departmentNumber $
        displayName $ employeeNumber $ employeeType $ givenName $
        homePhone $ homePostalAddress $ initials $ jpegPhoto $
        labeledURI $ mail $ manager $ mobile $ o $ pager $
        photo $ roomNumber $ secretary $ uid $ userCertificate $
        x500uniqueIdentifier $ preferredLanguage $
        userSMIMECertificate $ userPKCS12 )
    )

Presenter Notes

Édition

Format "LDIF" :

version: 1

dn: uid=rbarrois,ou=people,dc=polyconseil,dc=fr
changetype: modify
add: telephonenumber
telephonenumber: 0600001212
telephonenumber: 4242
-
replace: uid
uid: raphael.barrois
-
delete: description

Presenter Notes

LDAP : Résumé

  • Schéma (extensible)
  • Structure arborescente
  • Champs multi-valués
  • Recherche & indexes
  • Modifications groupées

Presenter Notes

Authentification

Presenter Notes

SASL

Simple Authentication and Security Layer

Mécanismes :

  • EXTERNAL
  • ANONYMOUS
  • PLAIN
  • CRAM-MD5
  • GSSAPI
  • ...

Utilisé par LDAP, SMTP, IMAP, XMPP, etc.

Presenter Notes

Kerberos : Single-Sign-On

  1. Récupérer un Ticket-granting-ticket auprès du Key Distribution Center
  • Envoi d'une preuve d'identité au serveur
  • Réception d'un ticket signé par le serveur
  1. Récupérer un Service ticket pour le service cible
    • Envoi du ticket signé par le KDC
    • Réception d'un ticket valide pour le service cible
  2. S'authentifier auprès du service cible
    • Envoi du service ticket récupéré en 2.
    • Vérification de la signature de la réponse

Presenter Notes

Kerberos : avantages

  • Délégation de confiance (pas de communication directe service / KDC)
  • Gestion du cache (ticket stocké localement), du renouvellement
  • Tickets "proxy"
  • Support multi-protocoles : SASL, SSH, HTTPS, ...
  • Vrai single-sign-on

Presenter Notes

Kerberos & HTTPS : SPNEGO

Simple and Protected GSSAPI Negotiation Mechanism

  1. Serveur : « 401 Authentification requise ; voici un challenge GSSAPI »
  2. Client : Vérification « Domaine de confiance »
  3. Client : Récupération d'un Service Ticket pour le domaine
  4. Client : Envoi d'une preuve d'identité au serveur

Presenter Notes

SPNEGO : Implémentation

  • Charger un keytab Kerberos sur le serveur HTTP
  • Charger le module adéquat dans le serveur HTTP (existe pour Apache, Nginx)
  • Configurer le poste de travail pour Kerberos (GUI sous MacOS, gestion de domaine sous Windows, /etc/krb5.conf sous Linux)
  • Ajouter les sites cibles dans les "sites de confiance" du navigateur

Presenter Notes