Académique Documents
Professionnel Documents
Culture Documents
Séances
• Cours (8h)
• Mercredi 13/01/2020 : 8h30 --> 12h30 (4h)
13h30 --> 17h30 (4h)
• Skype Business
1
13/01/2021
1ère partie
Service d’annuaires LDAP
Plan
1. Introduction
2. Modèle de données
3. Modèle de nommage
4. Protocole de communication
5. Modèle fonctionnel
6. Modèle de sécurité
2
13/01/2021
1. Introduction
LDAP
• LDAP: Lightweight Directory Access Protocol
• Protocole permettant l'interrogation et la modification d'annuaires
• Un annuaire électronique est une base de données spécialisée qui
permet de partager des informations et les rendre disponibles à des
applications, des systèmes d'exploitation ou des utilisateurs, dans un
réseau
• p. ex. des coordonnées téléphoniques, des données systèmes
• Service 'write-once-read-many-times‘ : performant en lecture mais moins en
écriture (≠ système de gestion de bases de données)
Standards
3
13/01/2021
Annuaire LDAP
Requête
Comptes :
login/pw
…
Réponse (Profil utilisateur)
Annuaire LDAP
Comptes :
login/pw
…
login
password
4
13/01/2021
Modèles
2. Modèle de données
Base de données
DIB (Directory
Information Base)
Annuaire
Configuration, LDAP
droits d’accès,
Serveur LDAP schémas, …
Client LDAP
5
13/01/2021
Base de données
ou=finance ou=IT
DIB
6
13/01/2021
DIT
• Les informations sont présentées sous forme d'une arborescence
d'informations hiérarchique DIT (Directory Information Tree)
• Les informations, dites entrées DSE (Directory Service Entry) sont
représentées sous forme de branches de l’arbre DIT
• Une branche située à la racine d'une ramification est appelée racine ou
suffixe (root entry)
• Chaque entrée de l’arbre contient des informations sur un objet :
– Ensemble de classes d’objets qui spécifient
l’objet (au moins une classe d’objets)
– Ensemble d'attributs (paires type/valeur)
permettant de caractériser l'objet: attributs
obligatoires ou optionnels
Identificateur d’objet
7
13/01/2021
Attribut
OID Nom
8
13/01/2021
Classe d’objets
9
13/01/2021
top
objectclass
organizationalPerson residentialPerson
Street l
PostalAddress street
PostalCode PostalCode
10
13/01/2021
11
13/01/2021
12
13/01/2021
rootDSE
• Attributs du rootDSE
• altServer: serveurs alternatifs
• namingContexts: sous-arbre d’entrées
• supportedControl: les contrôles LDAP reconnus
• supportedExtension: opérations LDAP étendues reconnues
• supportedFeatures: caractéristiques LDAP reconnus
• supportedLDAPVersion: version LDAP supportée
• supportedSASLMechanisms: mécanismes d’authentification SASL reconnus
LDIF
dn: cn=bar,dc=exemple,dc=fr
objectClass: top
Serveur …
LDAP dn: cn=oualha,ou=Personnel,
dc=exemple,dc=fr
objectClass: person
cn:Nouha Oualha
sn: oualha
Serveur …
LDAP
13
13/01/2021
Exercice 1
objectClass ( 1.3.6.1.1.1.2.7
NAME 'ipNetwork'
DESC 'Standard LDAP objectclass'
SUP top
STRUCTURAL
MUST ( ipNetworkNumber $ cn )
MAY ( ipNetmaskNumber $ manager $ l $ description )
X-ORIGIN 'RFC 2307' )
3. Modèle de nommage
14
13/01/2021
Exemple
• Dans la norme X500, le niveau top est le pays et vient ensuite le nom de
l'organisation, ce qui donne par exemple comme suffixe : dc=exemple,dc=fr
dc=fr
Exercice 2
• Donnez les DNs des quatre entrées illustrées dans le graphe suivant:
dc=fr
objectClass: top
objectClass: organization
objectClass: dcObject dc=ups
dc: ups
o: ups
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: 1 uid=1
cn: Jean Dupont
sn: Dupont
givenName: Jean
userPassword: 2Mzrhc9cAR0RQ
15
13/01/2021
Referrals et Aliases
• referral permet à une entrée de l'annuaire de pointer vers une entrée dans un autre
annuaire
• Utilisant un URI p. ex. URL
• Syntaxe: scheme://domain:port/path?query_string#fragment_id
• Exemple :
dn: o=UPS,dc=exemple,dc=fr
objectClass: referral
objectClass: extensibleObject
o: UPS
ref: ldap://ldap2.exemple.fr/o=UPS,dc=exemple,dc=net
4. Protocole de communication
• Communication client-serveur
• Modèle client/serveur
• (dé)connexion: bind, unbind, abandon
• Le client envoie des requêtes d'opération au serveur et le serveur envoie en
retour des réponses
• Communication serveur-serveur
• Liens entre différents annuaires (service referral)
• Transport des données
• Protocole TCP/IP (port 389, port 636 pour LDAPs)
• Basic Encoding Rules (BER)
16
13/01/2021
(1) Requête
(2) Réponse {Referral}
Serveur
Client LDAP
LDAP
Serveur
LDAP
17
13/01/2021
5. Modèle fonctionnel
Requête “Search”
18
13/01/2021
Scope de la requête
Filtre
• Un filtre définit les conditions qui doivent être remplies pour que la
recherche correspond à une entrée donnée
• Forme : <attribut operateur valeur>
Type Operateur Exemple(s)
Equality = cn=Bob Johnson
Substring =string* string cn=Bob* cn=*Johnson cn=*John* cn=B*John
Greater than or equal to >= buildingname >= alpha
Less than or equal to <= buildingname <= alpha.
Presence =* cn=* telephonenumber=* manager=*.
Approximate ~= cn~=suret l~=san
19
13/01/2021
Modification
• Les serveurs LDAP doivent s'assurer que les entrées restent toujours
conformes aux règles d'utilisation (p. ex. syntaxe), le schéma du système,
et autres contraintes du modèle de données
6. Modèle de sécurité
Données protégées
Application Couche SASL
par SASL
20
13/01/2021
Attaques
1) Accès non autorisé aux données de l'annuaire en contrôlant l'accès d’autres clients (c.
à. d. en regardant les réponses destinées à d’autres clients)
2) Accès non autorisé aux données d'annuaire via des opérations de récupération de
données (p. ex. opération Search)
3) Accès non autorisé à l'information d'authentification d’un client qui peut être
réutilisable (p. ex. mot de passe en clair)
4) Toute modification non autorisée de données de l'annuaire
5) Toute modification non autorisée d'informations de configuration
6) Déni de service: utilisation des ressources (souvent en excès) d'une manière destinée à
refuser le service à d'autres clients
7) Spoofing:
• Tromper un utilisateur ou un client en lui faisant croire que l'information qui est fausse venait de
l’annuaire (en modifiant les données en transit ou leur destination)
• Inciter un utilisateur ou client à envoyer une information privilégiée (p. ex. mot de passe) à une
entité hostile en se faisant passer pour un serveur d'annuaire
• Tromper un serveur d'annuaire en lui faisant croire que l'information venant en réalité d’une
entité hostile, vient d'un client particulier
8) Détournement (Hijacking): un attaquant prend le contrôle d'une session établie
Mécanismes de sécurité
• Contrôle d'accès aux données: généralement basé sur des listes de contrôle
d’accès
21
13/01/2021
TLS 1/2
SYN
SYN ACK
TCP
ACK
ClientHello
ServerHello Certificate
ServerHelloDone SSL/TLS poignée de mains
ClientKeyExchange
(Handshake)
ChangeCipherSpec Finished
ChangeCipherSpec Finished
TLS 2/2
• Canal sécurisé en TLS peut être aussi établi et utilisé (d’une manière
implicite) sans les requêtes/réponses StartTLS de LDAP
• Le client vérifie l'identité du serveur qui est utilisée pour établir la connexion
TLS (identité de référence)
• Le client peut se servir d’autres moyens p. ex. nom ou adresse IP dans DNS
(Domain Name System)
22
13/01/2021
StartTLS Response
Handshake TLS
Bind Request
Bind Response
Search/Add/Delete … Request
Response done
…
Unbind Request
Requête “Bind”
23
13/01/2021
Authentification simple
• Nom de longueur non nulle est sous forme de chaîne de caractères et est
distinctif dans le serveur LDAP (c. à. d. DN)
• Valeur de mot de passe de longueur non nulle est sous forme d’octets
24
13/01/2021
SASL
• SASL : Simple Authentication and Security Layer
• SASL est supporté par LDAPv3
• LDAPv2 ne supporte pas SASL
D’autres
SMTP LDAP
protocoles …
D’autres
EXTERNAL GSSAPI
mécanismes …
25
13/01/2021
Client Serveur
Bind_Request(DIGEST-MD5)
Bind_Response(Challenge) Challenge=nonce
HA1=MD5(username:realm:password)
HA2=MD5(method:digestURI)
response=MD5(HA1:nonce:HA2) Bind_Request(Response)
Bind_Response(Success/Failure)
Contrôle d’accès
26
13/01/2021
Exercice 3
27
13/01/2021
28
13/01/2021
Règles de correspondance
• Exemple OpenLDAP:
• DN obtenu de SASL est représentée sous la forme :
uid=<username>,cn=<mechanism>,cn=auth
• username: nom d’utilisateur communiqué par SASL
• mechanism: nom du mécanisme utilisé par le client lors de l’authentification
• Utilisation de « authz-regexp » dans le fichier de configuration
• Exemple :
authz-regexp
uid=(.*),cn=digest-md5,cn=auth
ldap:///o=UPS,c=FR??sub?(uid=$1)
29
13/01/2021
Conclusions
Références
30
13/01/2021
2ème partie
Identité fédérée & Authentification unique
Plan
31
13/01/2021
32
13/01/2021
Fournisseurs de services
• Modèle centralisé : partage des identités des utilisateurs
• Tous les SPs ont une relation de confiance avec IdP
• IdP est responsable de l'authentification des utilisateurs et
la fourniture d’informations sur les attributs des utilisateurs
aux SPs
• Concept d'authentification unique (SSO : Single Sign-on)
Fournisseur
Utilisateur d’identités
Service d'annuaire LDAP - N. Oualha 65
Fournisseur Fournisseur
Utilisateur Utilisateur d’identités
d’identités
Domaine administratif 1 Domaine administratif 2
Service d'annuaire LDAP - N. Oualha 66
33
13/01/2021
Fournisseurs
de services
Utilisateur
Service d'annuaire LDAP - N. Oualha 67
34
13/01/2021
Serveur
d’authentification
3 4
LDAP
Login/PW
Domaine
administratif local
Service d'annuaire LDAP - N. Oualha 69
• Plusieurs standards SSO ont été créés: CoSign (Weblogin), Pubcookie, Webauth, CAH, CAS,
WebID, BrowserID (Persona), SAML, WS-*, Liberty alliance, SAML 2, Shibboleth, OpenID,
OpenID Connect...
35
13/01/2021
Redirection pour
Premier s’authentifier
accès
Jeton Jeton
d’accès d’accès
LDAP
Validation du
jeton d’accès/
assertion Portail
Application
Web d’authentification
Jetons d’accès
36
13/01/2021
SAML
Assertions SAML
• Attribute Assertion: contient les attributs associés au sujet, telles que le nom,
affiliation, certificat numérique
37
13/01/2021
Protocoles SAML
38
13/01/2021
• Requête d’authentification :
<authnRequest>
<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="identifier_1" Version="2.0"
IssueInstant="2004-12-05T09:21:59Z" AssertionConsumerServiceIndex="1">
<saml:Issuer>https://sp.example.com/SAML2</saml:Issuer>
<samlp:NameIDPolicy AllowCreate="true" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>
</samlp:AuthnRequest>
• Réponse d’authentification :
<samlp:Response
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="identifier_2"
InResponseTo="identifier_1" Version="2.0" IssueInstant="2004-12-05T09:22:05Z" Destination="https://sp.example.com/SAML2/SSO/POST">
<saml:Issuer>https://idp.example.org/SAML2</saml:Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<saml:Assertion
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="identifier_3" Version="2.0" IssueInstant="2004-12-05T09:22:05Z">
…
</saml:AuthnStatement>
</saml:Assertion>
</samlp:Response>
Composants SAML
• SAML est spécifié en cinq composants
Profils
Combinaison d’assertions, protocoles, et bindings pour un cas d’utilisation particulier
Bindings
Mappage des protocoles à des messages standards et des protocoles de communication
Protocoles
Requêtes et réponses pour obtenir des assertions et pour la gestion des identités
Assertions
Authentification, attribut, informations sur les droits
39
13/01/2021
OAuth
• OAuth 2.0 (RFC 6749) n’est pas compatible avec les versions précédentes
OAuth 1.x
40
13/01/2021
Architecture d’OAuth
Opérations d’OAuth
Authorisation Request Propriétaire de la
Authorisation Grant ressource
41
13/01/2021
contacts.google.com
Request
Request profile consent
and contacts with
access token
accounts.google.com
toto.com/callback Back to redirect URI autorisez-vous toto.com à
With authorization code accéder à votre profile et
contacts ?
Non Oui
42
13/01/2021
OpenID Connect
• OpenID Connect est une couche d'identification basée sur OAuth 2.0
• Scope: openid profile
OpenID Connect
OAuth 2.0
HTTP
• OpenID Connect permet à l’application “Client” d’authentifier un utilisateur
43
13/01/2021
Fournisseur OpenID
Application Point Point de Point de
Utilisateur client d’autorisation jetons userInfo
Requête d’accès
Requête d’authentification
OpenID
Authentification de l’utilisateur
Code d’autorisation
Jeton d’accès
Information utilisateur
44
13/01/2021
Fournisseur OpenID
Application Point Point de Point de
Utilisateur client d’autorisation jetons userInfo
Requête d’accès
Requête d’authentification
OpenID
Authentification de l’utilisateur
Jeton d’accès
Information utilisateur
Conclusions
45
13/01/2021
Références
Séances
• Cours (8h)
• Mercredi 13/01/2020 : 8h30 --> 12h30 (4h)
13h30 --> 17h30 (4h)
• Skype Business
46