SASL EXTERNAL Technical Documentation/fr : Différence entre versions

De Trustedbird Client Wiki
(SASL External)
Ligne 1 : Ligne 1 :
= SASL External =
 
  +
{{lang|SASL External_Technical_Documentation|SASL External_Technical_Documentation/fr}}
  +
> [[Documentation/fr|Documentation]] > [[Trustedbird/fr|Trustedbird]] > [[SASL External/fr|SASL EXTERNAL]] > [[SASL External_Technical_Documentation/fr|Documentation technique]]
  +
   
 
Simple Authentication and Security Layer (signifiant « Couche d'authentification et de sécurité simple » ou SASL) est un cadre d'authentification et d'autorisation standardisé par l'IETF. Le cadre découple les mécanismes d'authentification des protocoles d'application, permettant en théorie à n'importe quel mécanisme d'authentification pris en charge par SASL d'être employé à partir de n'importe quel protocole d'application capable d'utiliser SASL. Les mécanismes d'authentification peuvent également opérer l'autorisation par serveur mandataire, une technique permettant à un utilisateur d'agir au nom d'un autre. Les mécanismes d'authentification peuvent également fournir une couche d'intégrité des données laquelle permet d'offrir des services de sécurité des données et de confidentialité des données. Un exemple connu d'une telle couche d'intégrité des données est DIGEST-MD5. Les protocoles d'application qui proposent SASL prennent très souvent en charge le protocole de sécurisation des échanges TLS en complément des services offerts par SASL.
 
Simple Authentication and Security Layer (signifiant « Couche d'authentification et de sécurité simple » ou SASL) est un cadre d'authentification et d'autorisation standardisé par l'IETF. Le cadre découple les mécanismes d'authentification des protocoles d'application, permettant en théorie à n'importe quel mécanisme d'authentification pris en charge par SASL d'être employé à partir de n'importe quel protocole d'application capable d'utiliser SASL. Les mécanismes d'authentification peuvent également opérer l'autorisation par serveur mandataire, une technique permettant à un utilisateur d'agir au nom d'un autre. Les mécanismes d'authentification peuvent également fournir une couche d'intégrité des données laquelle permet d'offrir des services de sécurité des données et de confidentialité des données. Un exemple connu d'une telle couche d'intégrité des données est DIGEST-MD5. Les protocoles d'application qui proposent SASL prennent très souvent en charge le protocole de sécurisation des échanges TLS en complément des services offerts par SASL.

Version du 15 octobre 2010 à 17:09

> Documentation > Trustedbird > SASL EXTERNAL > Documentation technique


Simple Authentication and Security Layer (signifiant « Couche d'authentification et de sécurité simple » ou SASL) est un cadre d'authentification et d'autorisation standardisé par l'IETF. Le cadre découple les mécanismes d'authentification des protocoles d'application, permettant en théorie à n'importe quel mécanisme d'authentification pris en charge par SASL d'être employé à partir de n'importe quel protocole d'application capable d'utiliser SASL. Les mécanismes d'authentification peuvent également opérer l'autorisation par serveur mandataire, une technique permettant à un utilisateur d'agir au nom d'un autre. Les mécanismes d'authentification peuvent également fournir une couche d'intégrité des données laquelle permet d'offrir des services de sécurité des données et de confidentialité des données. Un exemple connu d'une telle couche d'intégrité des données est DIGEST-MD5. Les protocoles d'application qui proposent SASL prennent très souvent en charge le protocole de sécurisation des échanges TLS en complément des services offerts par SASL.

source wikipedia

La norme de référence pour l'implémentation du SASL EXTERNAL est la RFC 4422.

Mécanismes

Un mécanisme SASL est conçu comme une série de demandes d'accès et de réponses. Le mécanisme utilisé ici est celui du “EXTERNAL” : l'authentification est dérivée du contexte (par exemple pour les protocoles employant déjà IPsec ou TLS) D'autres mécanismes SASL existent mais EXTERNAL est le seul qui ait été développé.

Dans le monde du logiciel libre, on trouve souvent deux manières pour un serveur d'authentifier un client par SASL EXTERNAL :

- En regardant le propriétaire d'une socket Unix que le client a ouvert,
- En utilisant le certificat X.509 utilisé par un client pour une autre couche logicielle : les échanges SSL ou TLS.

Architecture

Préférences de compte

Un nouveau choix est possible dans les paramètres du serveur. Ce choix permet de sélectionner le mécanisme STARTTLS et de choisir l'authentification par certificat.

Sasl sch settings.png

Connexion à l'IMAP/S

L'application va tenter de se connecter au serveur en utilisant le mécanisme SASL EXTERNAL pour s'authentifier via un certificat existant :

  • vérification de la configuration du serveur,
  • envoi de l'authentification au serveur : si le serveur est compatible, une fenêtre va s'ouvrir afin de demander le certificat à utiliser. le certificat est envoyé au serveur pour authentification. Si tout se passe bien, la connexion est établie et l'utilisateur peut lire et envoyer des messages.

Ci-dessous, les échanges entre le serveur S et client C utilisés dans la solution implémentée:

 S: * ACAP (SASL "DIGEST-MD5")
 C: a001 STARTTLS
 S: a001 OK "Begin TLS negotiation now"
 <TLS negotiation, further commands are under TLS layer>
 S: * ACAP (SASL "DIGEST-MD5" "EXTERNAL")
 C: a002 AUTHENTICATE "EXTERNAL"
 S: + ""
 C: + ""
 S: a002 OK "Authenticated"

Arborescence

La sécurisation des entêtes est intégrée dans les sources de Thunderbird pour le produit TrustedBird. La majorité du code se trouve dans comm-1.9.2\mailnews\imap, cette partie correspond au noyau IMAP de Thunderbird. Les fichiers concernés sont :

 ./comm-1.9.2/mailnews/imap/src/nsImapCore.h
                              /nsImapProtocol.cpp
                             /nsImapServerResponseParser.cpp
 ./comm-1.9.2/mozilla/security/manager/ssl/src/nsClientAuthRemember.cpp
                                            /nsClientAuthRemember.h
                                            /nsCMS.cpp
                                            /nsCMS.h
                                            /nsMsgSMIMECID.h
                                            /nsNSSIOLayer.cpp
                                            /nsNSSIOLayer.h