SASL EXTERNAL Technical Documentation/fr : Différence entre versions
(→SASL External) |
(→Connexion à l'IMAP/S) |
||
Ligne 23 : | Ligne 23 : | ||
* vérification de la configuration du serveur, |
* 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. |
* 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") |
S: * ACAP (SASL "DIGEST-MD5") |
Version du 8 octobre 2010 à 09:51
Sommaire
SASL External
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.
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 est été développé.
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.
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