mercredi 31 décembre 2014

UA-46322091-15 | [WMT-95212] Mât'nik Brazil {"http://vk.cc/3jVjNF"} 'Par Wâmuffïn-R Thierry Arnaud TAREAU") Le Père!

https://docs.google.com/file/d/0B75rzy9tlzm3U25sal9qbFpZLVk/edit?usp=docslist_api

UA-46322091-15 | [WMT-95212] Mât'nik Brazil {"http://vk.cc/3jVjNF"} 'Par Wâmuffïn-R Thierry Arnaud TAREAU") Le Père!

UA-46322091-11 | [WMT-95212] Mât'nik Brazil {"http://vk.cc/3jVjNF"} 'Par Wâmuffïn-R Thierry Arnaud TAREAU") Le Père! Et...

UA-46322091-11 | [WMT-95212] Nouveau propriétaire confirmé pour le site {"http://www.matnikbrazil.blogspot.de/"} 'Par Wâmuffïn-R Thierry Arnaud TAREAU") Le Père! Et...

google-site-verification: googlef46588284af9fe0e.html

Un nouvel utilisateur est devenu propriétaire confirmé du site {"http://www.matnikbrazil.blogspot.de/"} :

(djouko972@gmail.com)

Pour gérer les propriétaires de sites, consultez la page de validation des outils pour les webmasters pour le site {"http://www.matnikbrazil.blogspot.de/"}

Pour plus d'informations, consultez le Centre d'aide relatif à la validation des webmasters.

Google Inc. 1600 Amphitheatre Parkway Mountain View, CA 94043, États-Unis | [WMT-95212]

UA-46322091-11 | [WMT-95212] 'Par Wâmuffïn-R Thierry Arnaud TAREAU") Le Père! Et...

dimanche 28 décembre 2014

Finale: l'authentification OpenID 2.0 - Final

{"https://translate.googleusercontent.com/translate_c?depth=1&hl=fr&nv=1&rurl=translate.google.com&u=http://openid.net/specs/openid-authentication-2_0.html&usg=ALkJrhh4LYjBn9OlKjP7wyE2sRSuekQ6ig#realms"}

TOC
Finale specs@openid.net
5 décembre 2007

Authentification OpenID 2.0 - Final
Résumé
Authentification OpenID fournit un moyen de prouver que l'utilisateur final contrôle un identifiant. Il le fait sans la partie se fiant besoin d'accéder à des informations d'identification de l'utilisateur final, comme un mot de passe ou d'autres informations sensibles telles que l'adresse e-mail.
OpenID est décentralisée. Aucune autorité centrale doit approuver ou enregistrer Se appuyant parties ou OpenID fournisseurs. Un utilisateur final peut choisir librement qui fournisseur OpenID à utiliser, et peut préserver leur Identifier si elles changer de fournisseur OpenID.
Bien que rien dans le protocole nécessite JavaScript ou navigateurs modernes, le schéma d'authentification joue bien avec «Ajax» -style configurations. Cela signifie un utilisateur final peut prouver leur identité à une partie utilisatrice sans avoir à quitter leur page Web actuelle.
Authentification OpenID utilise uniquement HTTP standard (S) demandes et les réponses, de sorte qu'il ne nécessite pas de capacités spéciales de l'User-Agent ou un autre logiciel client. OpenID est pas lié à l'utilisation de cookies ou tout autre mécanisme spécifique de partie utilisatrice ou OpenID gestion de session du fournisseur. Extensions à User-Agents peuvent simplifier l'interaction de l'utilisateur final, mais ne sont pas tenus d'utiliser le protocole.
L'échange d'informations de profil, ou l'échange d'autres informations ne sont pas couverts dans cette spécification, peut être résolu par types de services supplémentaires construits au-dessus de ce protocole pour créer un cadre. Authentification OpenID est conçu pour fournir un service de base pour permettre portable, identité numérique centrée sur l'utilisateur d'une manière libre et décentralisée.

Table des matières
1. Exigences Notation et conventions
2. Terminologie
3. Présentation du protocole
4. Formats de données
4.1. Protocole de Messages
4.2. Représentations Entier
5. Types de communication
5.1. Communication directe
5.2. Communication indirecte
6. la génération de signatures
6.1. Procédure
6.2. algorithmes de signature
7. Initiation et découverte
7.1. Initiation
7.2. Normalisation
7.3. Découverte
8. Les associations de l'établissement
8.1. Session Association Request
8.2. Association Réponse session
8.3. Types Association
8.4. Types Association session
9. Demande d'authentification
9.1. Paramètres de la requête
9.2. Realms
9.3. Les demandes immédiates
10. En réponse aux demandes d'authentification
10.1. Les assertions positives
10.2. assertions négatives
11. Vérification des assertions
11.1. Vérification de l'URL de renvoi
11.2. Informations Vérification Découvert
11.3. Vérification du Nonce
11.4. vérification des signatures
11.5. Identifier l'utilisateur final
12. Extensions
13. A la découverte OpenID parties utilisatrices
14. authentification OpenID 1.1 Compatibilité
14.1. Les modifications de l'authentification OpenID 1.1
14.2. Implémentation de l'authentification OpenID 1.1 Compatibilité
15. Considérations sur la sécurité
15.1. Les attaques Prévention
15.2. User-Agents
15,3. Considérations de l'interface utilisateur
15,4. HTTP et HTTPS URL identificateurs
15.5. Les attaques de déni de service
15.6. Protocole Variantes
Annexe A. Exemples
A.1 Annexe. Normalisation
Annexe A.2. Identifiers OP-local
A.3 annexe. XRDS
A.4 annexe. HTML Identifier Markup
Annexe A.5. XRI CanonicalID
Annexe B. Diffie-Hellman Key Exchange Valeur par défaut
Annexe C. Remerciements
16. Références normatives
§ Adresse de l'auteur

TOC
1. Exigences Notation et conventions
Les mots clés "DOIT", "NE DOIT PAS", "EXIGE", "doit", "NE DOIT PAS", "devrait", "NE DEVRAIT PAS", "RECOMMANDÉ", "MAI", et "FACULTATIF" dans le présent document sont être interprétés comme décrit dans [RFC2119] .
Tout au long de ce document, les valeurs sont citées pour indiquer qu'ils doivent être pris à la lettre. Lors de l'utilisation de ces valeurs dans les messages de protocole, les citations DOIVENT PAS être utilisées dans le cadre de la valeur.

TOC
2. Terminologie
Identifier:
Un identificateur est soit un "http" ou "https" URI, (communément appelé "URL" dans ce document), ou un XRI [XRI_Syntax_2.0]. Ce document définit différents types d'identifiants, conçus pour être utilisés dans des contextes différents.
User-Agent:
Le navigateur Web de l'utilisateur final qui met en œuvre HTTP / 1.1 [RFC2616] .
Partie utilisatrice:
RP. Une application Web qui veut la preuve que l'utilisateur final un Identificateur de contrôle.
Fournisseur OpenID:
OP. Un serveur d'authentification OpenID sur lequel repose une partie utilisatrice pour une affirmation que l'utilisateur final contrôle un identifiant.
OP Endpoint URL:
L'URL qui accepte d'authentification OpenID messages de protocole, obtenus en effectuant la découverte de l'identifiant de l'utilisateur fourni. Cette valeur doit être un URL HTTP ou HTTPS absolue.
OP Identifier:
Un identificateur pour un fournisseur OpenID.
Fourni par l'utilisateur Identifiant:
Un identificateur qui a été présenté par l'utilisateur de la fin de la partie utilisatrice, ou sélectionné par l'utilisateur au niveau du fournisseur OpenID. Pendant la phase d'initiation du protocole, un utilisateur final peut entrer soit leur propre identificateur ou un identificateur d'OP. Si un identificateur d'OP est utilisé, l'OP peut alors aider l'utilisateur final dans le choix d'un identifiant à partager avec le Parti utilisatrice.
Identifier revendiqué:
Un identificateur que l'utilisateur final prétend posséder; l'objectif global du protocole est de vérifier cette affirmation. L'identificateur Réclamé est soit:
L'identificateur obtenu par la normalisation l'identificateur fournies par l'utilisateur, si ce était une URL.
Le CanonicalID , si ce était un XRI.
Identifier OP-local:
Un identificateur de remplacement pour un utilisateur final qui est local à un OP particulier et donc pas nécessairement sous le contrôle de l'utilisateur final.

TOC
3. Présentation du protocole
L'utilisateur final lance l'authentification en présentant un identificateur fournies par l'utilisateur à la partie utilisatrice via leur User-Agent.
Après normalisation l'identifiant de l'utilisateur fournis, la partie se fiant réalise la découverte sur elle et établit l'OP Endpoint URL que l'utilisateur final utilise pour l'authentification. Il convient de noter que l'identificateur fournies par l'utilisateur peut être un identificateur OP, comme expliqué dans la section 7.3.1 , qui permet la sélection d'un identificateur réclamés à l'OP ou pour le protocole de procéder sans un identificateur Réclamé si quelque chose autre d'utile est fait via une extension .
(Optionnel) La partie utilisatrice et l'OP établissent une association - un secret partagé établi à partir de Diffie-Hellman Key Exchange [RFC2631]. L'OP utilise une association de signer les messages suivants et la partie utilisatrice de vérifier ces messages; cela supprime la nécessité de demandes directes ultérieures pour vérifier la signature après chaque demande d'authentification / réponse.
La partie utilisatrice redirige User-Agent de l'utilisateur final à l'OP avec un OpenID demande d'authentification .
L'OP établit si l'utilisateur final est autorisé à effectuer une authentification OpenID et souhaite le faire. La manière dont l'utilisateur final se authentifie auprès de leur OP et des politiques entourant cette authentification est hors de portée de ce document.
L'OP redirige le User-Agent de l'utilisateur final revenir à la partie utilisatrice soit avec une affirmation que l'authentification est approuvé ou un message que l'authentification a échoué .
La partie qui invoque vérifie les informations reçues de l'OP y compris la vérification du retour URL, la vérification de l'information découverte, en vérifiant le nonce, et de vérifier la signature en utilisant soit la clé partagée établi lors de l'association ou en envoyant une demande directe l'OP.

TOC
4. Formats de données

TOC
4.1. Protocole Messages
Les messages de protocole d'authentification OpenID sont mappages de touches en texte brut à des valeurs en texte brut. Les clés et valeurs permettent le jeu de caractères Unicode (UCS). Lorsque les clés et valeurs doivent être convertis vers / depuis octets, ils DOIVENT être encodés en utilisant UTF-8 [RFC3629].
Messages ne doivent pas contenir de multiples paramètres avec le même nom.
Dans ce document, tous les paramètres de message OpenID sont nécessaires, à moins que spécifiquement marqués comme facultatifs.

TOC
4.1.1. Key-Value formulaire Encodage
Un message sous forme de valeur-clé est une séquence de lignes. Chaque ligne commence par une clé, suivie de deux points, et la valeur associée à la clé. La ligne est terminée par un seul saut de ligne (UCS point de code 10, "\ n"). Une clé ou valeur ne doit pas contenir un saut de ligne et une clé doit pas non plus contenir un colon.
Caractères supplémentaires, y compris les espaces ne doivent pas être ajoutés avant ou après le côlon ou le saut de ligne. Le message doit être encodé en UTF-8 pour produire une chaîne d'octets.
Key-Value encodage de formulaire est utilisé pour le calcul de la signature et de réponses directes à parties utilisatrices.

TOC
4.1.2. Encoding HTTP
Quand un message est envoyé à un serveur HTTP, il DOIT être codée en utilisant un codage de forme spécifiée dans la section 17.13.4 de [HTML401] . De même, si le "Content-Type" tête est inclus dans les têtes de requête, sa valeur doit aussi être un tel encodage.
Toutes les touches dans le message de demande doit être précédé de "OpenID.". Ce préfixe empêche les interférences avec d'autres paramètres qui sont passés avec le message d'authentification OpenID. Quand un message est envoyé en tant que POST, paramètres OpenID ne doit être envoyé, et sont tirées de, le corps POST.
Tous les messages qui sont envoyés comme des requêtes HTTP (GET ou POST) doit contenir les champs suivants:
openid.ns
Valeur: "http://specs.openid.net/auth/2.0"

Cette valeur particulière doit être présente pour que la demande soit une demande d'authentification OpenID 2.0 valide. Les futures versions de la spécification peuvent définir des valeurs différentes afin de permettre aux bénéficiaires de message à interpréter correctement la demande.

Si cette valeur est absent ou sélectionné l'un des "http://openid.net/signon/1.1" ou "http://openid.net/signon/1.0", ce message doit être interprété en utilisant l'authentification OpenID 1.1 mode de compatibilité .

openid.mode
Valeur: spécifié individuellement pour chaque type de message.

Le paramètre "openid.mode" permet au destinataire du message pour savoir quel genre de message qu'il traite. Si "openid.mode" est absent, le parti de traiter le message devrait supposer que la demande ne est pas un message d'OpenID.

Ce modèle se applique aux messages de l'agent utilisateur à la fois la partie utilisatrice et l'OP, ainsi que les messages de la partie utilisatrice à l'OP.

TOC
4.1.3. Exemple
Non normatif
Les exemples suivants codent les informations suivantes:
Key | Valeur
-------- + ---------------------------
Mode | erreur
erreur | Ce est un exemple de message

Formulaire clé-valeur codée:
  Mode: erreur
erreur: Ce est un exemple de message

x-www-urlencoded, comme dans un corps HTTP POST ou dans la chaîne de requête d'une URL ( [RFC3986] section 3):
  openid.mode = erreur = & openid.error Ce 20is%%% 20an 20example% 20message

TOC
4.2. Integer Représentations
Entiers en précision arbitraire doivent être codés en big-endian signé de deux chaînes binaires complément. Désormais, "btwoc" est une fonction qui prend un nombre entier de précision arbitraire et renvoie sa courte big-endian complément représentation à deux. Tous les nombres entiers qui sont utilisés avec Diffie-Hellman Key Exchange sont positifs. Cela signifie que le bit le plus à gauche de la représentation de complément à deux doit être nulle. Si ce ne est pas, les implémentations devez ajouter un octet nul à l'avant de la chaîne.
Exemple non normative:
Base 10 Numéro | représentation de chaîne de btwoc
--------------- + ----------------------------
0 | "\ x00"
127 | "\ x7F"
128 | "\ x00 \ x80"
255 | "\ x00 \ xFF"
32768 | "\ x00 \ x80 \ x00"

TOC
5. Types de communication

TOC
5.1. Communication directe
La communication directe est initiée par une partie utilisatrice à une URL OP final. Il est utilisé pour la création d'associations et de vérifier les assertions d'authentification .

TOC
5.1.1. Demande directe
Le message doit être codé comme un corps POST, tel que spécifié par la section 4.1.2 .
Toutes les demandes directes sont HTTP POST, et ainsi contiennent les champs obligatoires énumérées dans la section 4.1.2 .

TOC
5.1.2. Direct Response
Le corps d'une réponse à une demande directe se compose d'un corps de réponse HTTP dans le formulaire Key-Value . Le type de contenu de la réponse doit être "text / plain".
Toute forme de valeur-clé message doit contenir le champ suivant:
ns
Valeur: "http://specs.openid.net/auth/2.0"

Cette valeur particulière doit être présent pour la réponse à une réponse OpenID 2.0 valide. Les futures versions de la spécification peuvent définir des valeurs différentes afin de permettre aux bénéficiaires de message à interpréter correctement la demande.

Si cette valeur est absent ou sélectionné l'un des "http://openid.net/signon/1.1" ou "http://openid.net/signon/1.0", ce message doit être interprété en utilisant l'authentification OpenID 1.1 mode de compatibilité .

TOC
5.1.2.1. Le succès des réponses
Un serveur reçoit une demande valide doit envoyer une réponse avec un code de 200 d'état HTTP.

TOC
5.1.2.2. Réponses d'erreur
Si une demande est malformé ou contient des arguments non valides, le serveur DOIT envoyer une réponse avec un code de statut 400. Le corps de la réponse DOIT être un formulaire Key-Value message avec les champs suivants:
ns
Comme spécifié dans la section 5.1.2 .

erreur
Valeur: un message lisible par l'homme indiquant la cause de l'erreur.

contact
Valeur: (facultatif) Adresse de contact pour l'administrateur de la rompre. L'adresse de contact peut prendre ne importe quelle forme, comme il est destiné à être affiché à une personne.

référence
Valeur: (facultatif) Un jeton de référence, comme un numéro de ticket de support ou l'URL d'un blog de nouvelles, etc.

L'OP PEUT ajouter des champs supplémentaires à cette réponse.

TOC
5.2. Communication indirecte
Dans la communication indirecte, les messages sont passés à travers le User-Agent. Cela peut être initiée soit par la partie qui invoque ou l'OP. La communication indirecte est utilisé pour les demandes d'authentification et les réponses d'authentification .
Il existe deux méthodes pour la communication indirecte: redirections HTTP et HTML forme soumission. Tant la soumission du formulaire et la redirection exigent que l'expéditeur connaît une URL destinataire et que le destinataire URL attendre messages indirects, comme spécifié dans la section 4.1.2 . L'initiateur de la communication choisit la méthode de communication indirecte est approprié en fonction des capacités, la taille du message, ou d'autres facteurs externes.
Tous les messages indirects arrivent comme les requêtes HTTP, etc. contiennent les champs obligatoires énumérées dans la section 4.1.2 .

TOC
5.2.1. Redirect HTTP
Les données peuvent être transférées par la délivrance d'un 302, 303, ou 307 HTTP redirection vers User-Agent de l'utilisateur final. L'URL de redirection est l'URL du récepteur avec le message d'authentification OpenID annexé à la chaîne de requête, tel que spécifié dans la section 4.1.2 .

TOC
5.2.2. FORMULAIRE HTML Redirection
Une cartographie des touches aux valeurs peut être transféré en retournant une page HTML à l'User-Agent qui contient un élément de formulaire HTML. la soumission de formulaire peut être automatisée, par exemple en utilisant JavaScript.
Le <form> "action" valeur de l'attribut de l'élément doit être l'URL du récepteur. Chaque paire clé-valeur doit être inclus dans le formulaire comme un élément <input>. La clé doit être codé comme l'attribut "name" et la valeur que l'attribut "value", tels que le User-Agent va générer un message tel que spécifié dans la section 4.1.2 lorsque le formulaire est soumis. Le formulaire doit inclure un bouton de soumission.

TOC
5.2.3. Réponses d'erreur indirects
Dans le cas d'une requête mal, ou qui contient des arguments invalides, le fournisseur OpenID doit rediriger l'User-Agent à la "openid.return_to" valeur de l'URL si la valeur est présente et ce est une URL valide.
openid.ns
Comme spécifié dans la section 4.1.2 .

openid.mode
Valeur: "erreur"

openid.error
Valeur: un message lisible par l'homme indiquant la cause de l'erreur.

openid.contact
Valeur: (facultatif) Adresse de contact pour l'administrateur de la rompre. L'adresse de contact peut prendre ne importe quelle forme, comme il est destiné à être affiché à une personne.

openid.reference
Valeur: (facultatif) Un jeton de référence, comme un numéro de ticket de support ou l'URL d'un blog de nouvelles, etc.

Le serveur peut ajouter des clés supplémentaires pour cette réponse.
Si le message incorrect ou non valide est reçu par la partie utilisatrice, ou "openid.return_to" ne est pas présent ou sa valeur ne est pas une URL valide, le serveur DEVRAIT retourner une réponse à l'utilisateur final indiquant l'erreur et qu'il est incapable de continuer.

TOC
6. génération de signatures
L'usage le plus commun d'une association est aussi une clé Message Authentication Code (MAC) utilisé pour signer des messages d'authentification OpenID.
Lorsque la génération de clés MAC, les recommandations de [RFC1750] doivent être suivies.

TOC
6.1. Procédure
Pour générer une signature de message:
Déterminer la liste des clés doit être signé, selon le message qui doit être signé (voir Section 10.1 ). La liste des clés pour être signé doit être une partie du message. La liste est stockée avec la touche "openid.signed". La valeur est une liste séparée par des virgules de touches, avec le "OpenID." préfixe dépouillé. Cet algorithme est seulement capable de clés de signature qui commencent par "OpenID."
Parcourir la liste des clés doit être signé dans l'ordre qu'ils apparaissent dans la liste "openid.signed". Pour chaque touche, trouver la valeur dans le message dont la clé est égale à la clé de liste signée avec le préfixe "OpenID."
Convertir la liste de paires clé / valeur qui doit être signé à une chaîne d'octets en codant avec Key-Value formulaire encodage .
Déterminer l'algorithme de signature du type d'association . Appliquer l' algorithme de signature à la chaîne d'octets.

TOC
6.2. algorithmes de signature
Authentification OpenID supporte deux algorithmes de signature:
HMAC-SHA1 - 160 bits longueur de clé ( [RFC2104] et [RFC3174] )
HMAC-SHA256 - 256 bits longueur de clé ( [RFC2104] et [FIPS180-2]
Si appuyé, l'utilisation de HMAC-SHA256 est RECOMMANDÉ.

TOC
7. Initiation et découverte

TOC
7.1. Initiation
Pour lancer l'authentification OpenID, la partie se fiant devrait présenter à l'utilisateur final avec une forme qui a un champ pour entrer un identifiant fournies par l'utilisateur.
"Nom" l'attribut du champ de formulaire doit avoir la valeur "openid_identifier", de sorte que les User-Agents peut déterminer automatiquement que ce est une forme OpenID. extensions de navigateur ou d'autres logiciels qui prennent en charge l'authentification OpenID peut ne pas détecter le soutien de la partie utilisatrice si cet attribut ne est pas réglé de manière appropriée.

TOC
7.2. Normalisation
L'entrée de l'utilisateur final doit être normalisé en un identificateur, comme suit:
Si l'entrée de l'utilisateur démarre avec le "xri: //" préfixe, il DOIT être dépouillé, de sorte que XRIs sont utilisés dans la forme canonique.
Si le premier caractère de la chaîne résultante est un contexte mondial XRI Symbole ("=", "@", "+", "$", "!") Ou "(", tel que défini à la section 2.2.1 de [XRI_Syntax_2 0,0] , l'entrée doit être traitée comme une XRI.
Sinon, l'entrée doit être traitée comme une URL http; si elle ne comprend pas un "http" ou "https" régime, l'identificateur doit être précédé de la chaîne "http: //". Si l'URL contient une partie de fragment, il DOIT être extrait en même temps avec le séparateur caractère fragment "de #". Voir la section 11.5.2 pour plus d'informations.
Identifiers URL doit ensuite être encore normalisée par les deux redirections suivantes lors de la récupération de leur contenu et, enfin, l'application des règles dans la section 6 de [RFC3986] à l'URL de destination finale. Cette URL final doit être noté par la partie utilisatrice comme identificateur revendiquée et être utilisée lors de la demande authentification .
Voir exemple de normalisation .

TOC
7.3. Découverte
Discovery est le processus où la partie utilisatrice utilise l'identificateur pour rechercher («découvrir») les informations nécessaires pour lancer des demandes. Authentification OpenID a trois chemins par lesquels faire la découverte:
Si l'identifiant est un XRI, [XRI_Resolution_2.0] donnera un document XRDS qui contient l'information nécessaire. Il convient également de noter que les parties utilisatrices peuvent profiter de XRI Proxy résolveurs, tel que celui fourni par XDI.org au http://www.xri.net. Cela permettra d'éliminer la nécessité pour les PR pour effectuer XRI Résolution localement.
Si ce est une URL, le protocole Yadis [Yadis] sera la première tentative. Si elle réussit, le résultat est à nouveau un document XRDS.
Si le protocole Yadis échoue et aucun document de XRDS valide est récupéré, ou pas de Service Elements se trouvent dans le document XRDS, l'URL est récupéré et découverte HTML-Basé DOIT être tentée.

TOC
7.3.1. Informations Découvert
À l'issue de découverte, la partie utilisatrice aura un ou plusieurs ensembles de l'information suivante (voir la section Terminologie pour les définitions). Si plus d'un ensemble de l'information suivante a été découvert, les règles de priorité définis dans [XRI_Resolution_2.0] doivent être appliquées.
OP Endpoint URL
Protocol Version
Si l'utilisateur final ne est pas entré un identificateur d'OP, les informations suivantes seront également présents:
Identifier Réclamé
Identifier OP-local
Si l'utilisateur final entré un identifiant OP, il n'y a pas Identificateur revendiquée. Aux fins de faire des demandes d'authentification OpenID, la valeur "http://specs.openid.net/auth/2.0/identifier_select" DOIT être utilisée à la fois comme l'identificateur revendiquée et l'identificateur de OP-locale pour un identificateur d'OP est entré.

TOC
7.3.2. Découverte XRDS-Based
Si XRI ou la découverte Yadis a été utilisé, le résultat sera un document XRDS. Il se agit d'un document XML avec des entrées pour des services qui sont liés à l'identificateur. Il est défini dans l'article 3 de [XRI_Resolution_2.0]. Voir Annexe A.3 pour un document exemple de XRDS.

TOC
7.3.2.1. Éléments service OpenID

TOC
7.3.2.1.1. OP Identifier Element
Un élément OP est un identificateur <xrd: Service> élément avec les informations suivantes:
Un <xrd: Type> tag dont le contenu texte est "http://specs.openid.net/auth/2.0/server".
Un <xrd: URI> tag dont le contenu texte est l'OP Endpoint URL

TOC
7.3.2.1.2. Réclamé Identifier Element
Un identifiant est un élément revendiqué <xrd: Service> élément avec les informations suivantes:
Un <xrd: Type> tag dont le contenu texte est "http://specs.openid.net/auth/2.0/signon".
Un <xrd: URI> tag dont le contenu texte est l'URL OP Endpoint.
Une balise <xrd localId> (en option) dont le contenu texte est l'identificateur de OP-local.

TOC
7.3.2.2. Extraction de données d'authentification
Une fois la partie utilisatrice a obtenu un document XRDS, il faut d'abord rechercher le document (en suivant les règles décrites dans [XRI_Resolution_2.0] ) pour un identificateur Element OP. Si aucun ne est trouvé, le RP va rechercher un identificateur élément revendiqué.

TOC
7.3.2.3. XRI et l'élément CanonicalID
Lorsque l'identificateur est un XRI, le <xrd: DRX> qui contient le authentification OpenID <xrd: Service> élément doit également contenir un élément <CanonicalID>. Le contenu de cet élément doit être utilisé comme identifiant Réclamé (voir la section 11.5 ). Ce est une considération de sécurité vitale, car le but premier de la <CanonicalID> élément est d'affirmer un identifiant persistant qui ne sera jamais réaffecté, empêchant ainsi la possibilité d'une XRI être ("repris") par un nouveau titulaire.
La partie utilisatrice doit confirmer que le fournisseur de la diffraction des rayons X qui contient le <CanonicalID> élément fait autorité pour que Canonical ID et que ce document XRDS fait autorité pour l'élément de service OpenID. Parties utilisatrices doivent soit le faire manuellement ou se assurer que leur résolveur fait cela.
Lorsque vous utilisez la résolution XRI, l'ID canonique DOIT être utilisé comme identifiant revendiquée. Pour une XRI à être un identifiant valide, à la fois le <ProviderID> et <CanonicalID> DOIT être présent dans le document de XRDS découvert.
Lors de l'utilisation des identificateurs d'URL, l'élément CanonicalID DOIT être ignorée si elle est présente.

TOC
7.3.2.4. Informations Complémentaires
L'espace de noms "OpenID" ne est plus utilisé comme authentification d'OpenID 2.0. L'espace de noms "xrd" est "xri: // $ xrd * ($ v * 2,0)".
Pour la compatibilité avec le code déployé, il est RECOMMANDÉ que les parties utilisatrices acceptent aussi "http://openid.net/signon/1.0" ou "http://openid.net/signon/1.1" pour la valeur de <xrd: Type> , comme décrit dans le mode de compatibilité de 1,1 authentification OpenID section. Il est RECOMMANDÉ que les parties utilisatrices de soutien OpenID Authentication 2.0 choisir d'utiliser, le cas échéant, les paramètres avec le type "http://specs.openid.net/auth/2.0/server" et "http://specs.openid.net/ auth / 2,0 / code d'accès ", dans cet ordre, comme indiqué dans la section 7.3.2.2
Si une OP supporte les extensions ( Section 12 ), les extensions devrait être répertorié comme supplémentaires <xrd: Type> éléments de la <xrd: Service> Élément enfant.

TOC
7.3.3. Découverte HTML-Based
découverte de HTML-Basé doit être soutenue par les parties utilisatrices. découverte de HTML-Basé ne est utilisable que pour la découverte d'identificateurs réclamés. OP identificateurs doit être XRIs ou URL qui soutiennent XRDS découverte.
Pour utiliser la découverte de HTML-Based, un document HTML doit être disponible à l'URL de l'identificateur revendiquée. Dans l'élément HEAD du document:
Un élément de lien doit être inclus avec des attributs "rel" réglé sur "openid2.provider" et "href" définie à une OP Endpoint URL
Un élément de liaison peut être inclus avec des attributs "rel" réglé sur "openid2.local_id" et "href" mis à l'identificateur de OP-local de l'utilisateur final
La version du protocole lors découverte HTML est effectuée est "http://specs.openid.net/auth/2.0/signon".
L'hôte du document HTML peut être différente de l'hôte de l'OP de l'utilisateur final.
Le "openid2.provider» et les URLs «openid2.local_id" ne doit pas inclure des entités autres que "& amp;", "& lt;", "& gt;" et "& quot;». Les autres caractères qui ne seraient pas valables dans le document HTML ou qui ne peuvent être représentés dans le codage de caractères du document doit être échappé en utilisant le pour cent de codage (% xx) mécanisme décrit dans [RFC3986] .
Comme indiqué dans le mode de compatibilité authentification OpenID 1.1 section, ces balises de découverte ne sont pas les mêmes que dans les versions précédentes du protocole. Alors que les mêmes données sont transmis, les noms ont changé, ce qui permet à une partie utilisatrice de déterminer la version du protocole utilisé. Une partie utilisatrice peut rencontrer un identificateur Réclamé qui utilise Discovery HTML Basé à annoncer à la fois la version 1.1 et 2.0 fournisseurs.

TOC
8. Associations de l'établissement
Une association entre la partie utilisatrice et le fournisseur OpenID établit un secret partagé entre eux, qui est utilisé pour vérifier les messages de protocole ultérieures et de réduire les allers-retours.
Il est recommandé qu'un appuyant les associations de forme parti se il est possible pour elle de le faire. Si une partie utilisatrice est incapable de créer ou de stocker des associations, la section 11.4.2 fournit un mécanisme de vérification suppléant appelé mode apatrides.

TOC
8.1. Association session Demande
Une séance d'association est initiée par une demande directe d'une partie utilisatrice à une OP Endpoint URL avec le "openid.mode" clé ayant la valeur de «associé».

TOC
8.1.1. Demander commune Paramètres
Ces paramètres sont communs à toutes les demandes de l'association:
openid.ns
Comme spécifié dans la section 4.1.2 .

openid.mode
Valeur: «associé»

openid.assoc_type
Le type d'association préférée. Le type d'association définit l'algorithme à utiliser pour signer les messages ultérieurs.

Valeur: Un type d'association valable à partir de la section 8.3

openid.session_type
Le type de session d'association préférée. Ceci définit la méthode utilisée pour crypter la clé MAC de l'association en transit.

Valeur: Un type de session d'association valable du paragraphe 8.4 .

Note: Sauf en utilisant le cryptage de couche de transport, "sans cryptage" NE DOIT PAS être utilisé.

TOC
8.1.2. Diffie-Hellman Paramètres de la requête
Les paramètres suivants sont communs aux demandes dont le type de séance d'association est demandé "DH-SHA1" ou "DH-SHA256":
openid.dh_modulus
Valeur: base64 (btwoc (p))

Par défaut: Voir l'annexe B

openid.dh_gen
Valeur: base64 (btwoc (g))

Par défaut: g = 2

openid.dh_consumer_public
Valeur: base64 (btwoc (g ^ xa mod p))

Voir la section 8.4.2 pour plus d'informations sur ces paramètres.
NOTE: La fonction 'btwoc »est définie à la section 4.2 .

TOC
8.2. Association Réponse session
Une réponse de la session d'association est une réponse directe de l'OP au Parti Invoquant formulaire Key-Value .

TOC
8.2.1. Paramètres de réponse commune
ns
Comme spécifié dans la section 5.1.2 .

assoc_handle
La poignée d'association est utilisée comme une clé pour se référer à cette association dans les messages ultérieurs.

Valeur: Une chaîne de 255 caractères ou moins en longueur. Il doit comporter uniquement des caractères ASCII dans la gamme de 33 à 126 (caractères non-imprimables blancs) compris.

session_type
La valeur de la "openid.session_type" paramètre de la requête. Si l'OP est réticent ou incapable de soutenir ce type d'association, il doit retourner un réponse infructueuse .

assoc_type
La valeur de la "openid.assoc_type" paramètre de la requête. Si l'OP est réticent ou incapable de soutenir ce type d'association, il doit retourner un réponse infructueuse .

expires_in
La durée de vie, en secondes, de cette association. La partie utilisatrice NE DOIT PAS utiliser l'association après ce temps a passé.

Valeur: Un nombre entier, représenté en base 10 ASCII.

TOC
8.2.2. Paramètres de réponse non chiffrées
mac_key
La clé MAC (secret partagé) pour cette association, en base 64 [RFC3548] codé.

TOC
8.2.3. Diffie-Hellman Paramètres de réponse
dh_server_public
Valeur: base64 (btwoc (g ^ XB mod p))

Description: clé publique Diffie-Hellman de l'OP.

enc_mac_key
Valeur: base64 (H (btwoc (g ^ (xa * xb) mod p)) clé XOR MAC)

Description: La clé MAC (secret partagé), chiffrée avec la valeur secrète Diffie-Hellman. H est soit "SHA1" ou "SHA256" en fonction du type de session.

NOTE: La fonction 'btwoc »est définie à la section 4.2

TOC
8.2.4. Paramètres de réponse non retenus

Si l'OP ne supporte pas un type de session ou type d'association, il doit répondre par un message d'erreur directe indiquant que la demande d'association a échoué. Se il ya une autre association type de session ou le type d'association qui est en charge, l'OP devrait inclure cette information dans la réponse.

ns
Comme spécifié dans la section 5.1.2 .

erreur
Valeur: Un message lisible indiquant pourquoi la demande d'association a échoué.

code_erreur
Valeur: «de type non pris en charge"

session_type
Valeur: (facultatif) valable à partir de la session de type d'association Section 8.4 que les supports des OP.

assoc_type
Valeur: (facultatif) Un type d'association soutenue par l'OP de la section 8.3 .

À la réception d'une réponse de type «non pris en charge", la partie se fiant peut présenter une autre demande auprès du spécifié le type de session d'association et le type d'association. Si aucune association ne est établie, la partie utilisatrice PEUT continuer le processus d'authentification dans la vérification directe .

TOC
8.3. Types Association

TOC
8.3.1. HMAC-SHA1

Une association de type "HMAC-SHA1" utilise le HMAC-SHA1 algorithme de signature.

TOC
8.3.2. HMAC-SHA256

Une association de type "HMAC-SHA256" utilise le HMAC-SHA256 algorithme de signature.

TOC
8.4. Types Association session

Authentification OpenID définit trois types de sessions d'association valides: "pas de chiffrement», «DH-SHA1", et "DH-SHA256".

TOC
8.4.1. Non-Encryption Association Sessions

Lors d'une séance d'association "sans cryptage", l'OP envoie l'association clé MAC dans plain-texte à la partie utilisatrice. Cela rend possible pour un espion pour intercepter la clé, et de forger un message à cette partie utilisatrice lorsqu'il ne est pas en utilisant le cryptage de couche de transport. Par conséquent, les sessions «non-cryptage" association DOIT PAS être utilisé à moins que les messages utilisent le cryptage de couche de transport. Voir la section 15.1.1 pour plus d'informations.

La clé MAC envoyé par l'OP DOIT être la longueur spécifiée pour le type d'association a demandé, comme spécifié dans la section 6.2 .

TOC
8.4.2. Diffie-Hellman Association Sessions

Le "DH-SHA1» et «DH-SHA256" types d'association utilisent Diffie-Hellman Key Exchange de transmettre en toute sécurité le secret partagé.

La clé MAC doit être la même longueur que la sortie de H, la fonction de hachage - 160 bits (20 octets) pour DH-SHA1 ou 256 bits (32 octets) pour DH-SHA256, ainsi que la sortie de l'algorithme de signature de cette association.

La partie utilisatrice spécifie un module, p, et un générateur, g. La partie utilisatrice choisit une clé privée xa aléatoire et OpenID fournisseur choisit une clé privée xb aléatoire, à la fois dans la plage [1 .. p-1]. Le secret partagé utilisé pour crypter la clé MAC est donc g ^ (xa * xb) mod p = (g ^ xa) ^ XB mod p = (g ^ XB) ^ xa p mod. Pour plus d'informations, voir [RFC2631] . Pour plus d'informations sur la sélection de valeurs aléatoires, voir [RFC1750] .

TOC
9. Demande d'authentification

Une fois la partie utilisatrice a réalisé avec succès la découverte et (éventuellement) créé une association avec le découvert OP Endpoint URL, il peut envoyer une demande d'authentification à l'OP pour obtenir une assertion. Une demande d'authentification est une demande indirecte .

TOC
9.1. Paramètres de la requête
openid.ns
Comme spécifié dans la section 4.1.2 .

openid.mode
Valeur: "checkid_immediate" ou "checkid_setup"

Remarque: Si la partie utilisatrice souhaite l'utilisateur final pour pouvoir interagir avec l'OP, "checkid_setup» devrait être utilisé. Un exemple d'une situation où l'interaction entre l'utilisateur final et l'OP ne est pas souhaité est lorsque la demande d'authentification se produit de manière asynchrone en JavaScript.

openid.claimed_id
Valeur: (facultatif) L'identificateur revendiquée.

"Openid.claimed_id" et "openid.identity" doivent être soit à la fois présents ou deux absents. Si aucune valeur ne est présente, l'affirmation ne est pas sur un identifiant, et contenir d'autres informations dans sa charge utile, en utilisant des extensions .

Il est RECOMMANDÉ que PO acceptent identifiants XRI avec ou sans le "xri: //" préfixe, comme spécifié dans la normalisation section.

openid.identity
Valeur: (facultatif) L'identificateur d'OP-local.

Si un identificateur de OP-locale différente ne est pas spécifié, l'identifiant revendiqué doit être utilisé comme valeur pour openid.identity.

Remarque: Si ce paramètre est réglé à la valeur spéciale "http://specs.openid.net/auth/2.0/identifier_select", puis l'OP doit choisir un identifiant qui appartient à l'utilisateur final. Ce paramètre peut être omis si la demande ne est pas sur un identifiant (par exemple, si une extension est en cours d'utilisation qui fait la demande de sens sans elle, voir openid.claimed_id ci-dessus).

openid.assoc_handle
Valeur: (facultatif) poignée de A pour une association entre la partie utilisatrice et l'OP qui doit être utilisé pour signer la réponse.

Remarque: Si aucune poignée d'association est envoyé, la transaction aura lieu en mode sans état ​​.

openid.return_to
Valeur: (facultatif) URL à laquelle l'OP doit retourner le User-Agent de la réponse indiquant l'état de la demande.

Remarque: Si cette valeur ne est pas envoyé dans la demande, il signifie que la partie utilisatrice ne souhaite pas pour l'utilisateur final à renvoyer.

Remarque: Le return_to URL peut être utilisé comme un mécanisme pour la partie utilisatrice pour attacher un contexte sur la demande d'authentification à la réponse d'authentification. Ce document ne définit pas un mécanisme par lequel le RP peut se assurer que les paramètres de la requête ne sont pas modifiés par des tiers; un tel mécanisme peut être défini par le PR lui-même.

openid.realm
Valeur: (facultatif) modèle d'URL l'OP devrait demander à l'utilisateur final de confiance. Voir la section 9.2 . Cette valeur doit être envoyé si openid.return_to est omis.

Par défaut: return_to URL

TOC
9.2. Realms
Un "royaume" est un modèle qui représente la partie de l'espace URL pour lesquels une demande d'authentification OpenID est valide. Un domaine est conçu pour donner à l'utilisateur final une indication de la portée de la demande d'authentification. PO devrait présenter le domaine lorsqu'elle sollicite l'approbation de l'utilisateur final pour une demande d'authentification. Le domaine doit être utilisé par les PO pour identifier les parties utilisatrices. Par exemple, l'OPS, peuvent utiliser le domaine pour permettre à l'utilisateur final pour automatiser l'approbation des demandes d'authentification.

Un modèle de domaine est une URL, avec les modifications suivantes:

Un domaine NE DOIT PAS contenir un fragment URI
Un domaine peut contenir une wild-card au début de la section de l'autorité de l'URL. Une wild-card comprend les caractères "*." préfixé au nom DNS dans la section de l'autorité de l'URL.
Une URL correspond à un domaine si:

Le schéma d'URL et le port de l'URL sont identiques à celles dans le domaine. Voir RFC 3986 [RFC3986], section 3.1 des règles sur URI correspondant.
Le chemin de l'URL est égale ou un sous-répertoire du chemin du royaume.
Soit:
Le domaine du domaine contient les caractères génériques "*.", Et la partie arrière du domaine de l'URL est identique à la partie du royaume après la "*." joker, ou
Le domaine de l'URL est identique au domaine de la sphère
Lorsqu'il est présent, le "openid.return_to" URL DOIT correspondre au "openid.realm", ou l'OP doit retourner un réponse d'erreur indirecte .

Il est RECOMMANDÉ que PO protéger leurs utilisateurs de faire des affirmations avec royaumes trop généraux, comme http: //*.com/ ou http: //*.co.uk/. Trop domaines généraux peuvent être dangereux quand le domaine est utilisé pour identifier une partie utilisatrice particulier. Si un royaume est trop général est à la discrétion de l'OP.

TOC
9.2.1. Utilisation du Royaume pour la vérification URL de retour

fournisseurs OpenID doit vérifier que l'URL de return_to spécifié dans la demande est un point de terminaison partie se fiant OpenID. Pour vérifier une URL return_to, obtenir les paramètres qui dépendent du parti pour le royaume en effectuant découverte sur la partie de confiance . Comme toujours lors de l'exécution découverte, l'URL découvert est l'URL de la dernière réponse HTTP, suite à des redirections. Si des redirections sont suivies lors de l'exécution découverte sur le royaume, la vérification a échoué. Si la découverte a successivement rempli, assurez-vous que l'URL correspond return_to une des extrémités de partie utilisatrice.

Un domaine peut contenir un joker, et ainsi ne peut pas être une URL valide. Dans ce cas, effectuer la découverte sur l'URL obtenue par substitution de «www» pour le joker dans le domaine.

Pour correspondre à une URL return_to contre un point de terminaison de partie utilisatrice, utiliser les mêmes règles que pour adapter le return_to URL contre le royaume, le traitement critère l'URL de la partie se fiant comme le royaume. Invoquant les URL de point de terminaison du parti ne doivent pas contenir un caractère générique de domaine, et doit être aussi précis que possible.

Si la vérification est tentée et échoue, le prestataire ne devrait pas envoyer une affirmation positive à cette return_to URL.

Les fournisseurs peuvent vérifié return_to cache d'URL.

TOC
9.3. Les demandes immédiates

Lors de la demande d'authentification, la partie utilisatrice peut demander que l'OP ne pas interagir avec l'utilisateur final. Dans ce cas, l'OP DOIT répondre immédiatement avec soit une assertion que l'authentification est réussie, ou une réponse indiquant que la demande ne peut être achevé sans interaction de l'utilisateur. Ceci est accompli par une demande d'authentification avec "openid.mode" réglé sur "checkid_immediate".

TOC
10. Réponse aux demandes d'authentification

Lorsque une demande d'authentification provient du User-Agent via la communication indirecte , l'OP devrait déterminer que l'utilisateur final autorisé souhaite compléter l'authentification. Si un utilisateur final autorisé souhaite compléter l'authentification, l'OP devrait envoyer une affirmation positif à la partie utilisatrice.

Méthodes d'identification des utilisateurs finaux autorisés et obtenir l'autorisation de retourner une assertion d'authentification OpenID sont au-delà de la portée de cette spécification. Voir la section 15.1.2.1 pour des considérations de sécurité du fournisseur OpenID.

Si la partie se fiant demandé sélection identifiant entraîné OP-en réglant "openid.identity" à "http://specs.openid.net/auth/2.0/identifier_select" et il ya identificateurs pour lesquels l'utilisateur final est autorisé à émettre des réponses d'authentification , l'OP devrait permettre à l'utilisateur final de choisir quel identifiant à utiliser.

Si la partie utilisatrice fourni une poignée d'association avec la demande d'authentification, l'OP DEVRAIT tenter de rechercher une association basée sur ce handle. Si l'association est manquant ou expiré, l'OP DEVRAIT envoyer le paramètre "openid.invalidate_handle" dans le cadre de la réponse à la valeur du paramètre "openid.assoc_handle" de la demande, et devrait procéder comme si aucune poignée d'association a été spécifié.

Si aucune poignée d'association est spécifié, l'OP DEVRAIT utiliser une association privée pour la signature de la réponse. Le PO doit stocker cette association et doivent répondre aux demandes plus tard pour vérifier la signature de la réponse par l'intermédiaire de vérification directe .

Parties utilisatrices DEVRAIENT accepter et vérifier les affirmations sur les identificateurs pour lesquels ils ne ont pas demandé l'authentification. PO DEVRAIENT utiliser des associations privées pour signer affirmations positives non sollicités.

Si la valeur "openid.return_to" est omis dans la demande, la partie utilisatrice ne souhaite pas recevoir une assertion d'authentification de l'OP. Cela peut être utile lorsque vous utilisez des extensions pour transférer des données de la partie utilisatrice à l'OP.

TOC
10.1. Assertions positives

Affirmations positives sont des réponses indirectes avec les champs suivants:

openid.ns
Comme spécifié dans la section 4.1.2 .

openid.mode
Valeur: "id_res"

openid.op_endpoint
L'URL OP Endpoint.

openid.claimed_id
Valeur: (facultatif) L'identificateur revendiquée. "Openid.claimed_id" et "openid.identity" doivent être soit à la fois présents ou deux absents.

Remarque: L'utilisateur final peut choisir d'utiliser un identificateur d'OP-locale comme un identificateur revendiquée.

Remarque: Si aucun identificateur est présent dans l'affirmation, il ne est pas sur un identifiant, et contenir d'autres informations dans sa charge utile, en utilisant des extensions .

openid.identity
Valeur: (facultatif) L'identificateur d'OP-local

Remarque: Les fournisseurs OpenID peut aider l'utilisateur final dans le choix des identificateurs réclamés et OP-locaux dont l'affirmation est faite. Le champ de openid.identity peut être omis si une extension est en cours d'utilisation qui fait la réponse significative sans elle (voir openid.claimed_id ci-dessus).

openid.return_to
Valeur: Verbatim copie du paramètre return_to URL envoyé dans la requête.

openid.response_nonce
Valeur: Une chaîne de 255 caractères ou moins en longueur, qui doit être unique à cette réponse particulière d'authentification réussie. Le nonce doit commencer avec l'heure actuelle sur le serveur, et peuvent contenir des caractères ASCII supplémentaires dans la gamme de 33 à 126 (caractères non-imprimables blancs) compris, si nécessaire de faire chaque réponse unique. La date et l'heure doit être formaté comme indiqué à la section 5.6 de [RFC3339] , avec les restrictions suivantes:

Toutes les heures doivent être dans le fuseau horaire UTC, indiqué avec un "Z".
Pas de fractions de secondes sont autorisés
Par exemple: 2005-05-15T17: 11: 51ZUNIQUE
openid.invalidate_handle
Valeur: (facultatif) Si la partie utilisatrice envoyé une poignée d'association valide à la demande, il devrait être inclus ici.

openid.assoc_handle
Valeur: La poignée de l'association qui a été utilisé pour signer cette affirmation.

openid.signed
Valeur: liste des champs signés séparées par des virgules.

Remarque: Cette entrée se compose des champs sans le "OpenID." préfixe qui couvre la signature. Cette liste doit contenir au moins "op_endpoint", "return_to" "response_nonce" et "assoc_handle", et si présent dans la réponse, "claimed_id» et «identité». Touches supplémentaires peuvent être signés dans le cadre du message. Voir la génération de signatures .

Par exemple, "op_endpoint, identité, claimed_id, return_to, assoc_handle, response_nonce".

openid.sig
Valeur: Base 64 signature codée calculée comme indiqué dans la section 6 .

TOC
10.2. Assertions négatives

Si l'OP est incapable d'identifier l'utilisateur final ou l'utilisateur final ne peut pas approuver ou non la demande d'authentification, l'OP doit envoyer une assertion négative à la partie utilisatrice comme une réponse indirecte .

Lors de la réception d'une assertion négative en réponse à une demande de mode "checkid_immediate", les parties utilisatrices doivent construire une nouvelle demande d'authentification en utilisant le mode "checkid_setup". Détails sur la façon dont elle diffère de l'authentification OpenID 1.1 peuvent être trouvés dans l'article 14 .

TOC
10.2.1. En réponse aux demandes immédiates

Si la demande était une demande immédiate, il ne ya aucune chance pour l'utilisateur final d'interagir avec des pages sur l'OP de fournir des informations d'identification d'identification ou l'approbation d'une demande. Une assertion négative d'une demande immédiate prend la forme suivante:

openid.ns
Comme spécifié dans la section 4.1.2 .

openid.mode
Valeur: "setup_needed"

TOC
10.2.2. En réponse aux demandes non immédiate

Depuis l'OP peut afficher des pages à l'utilisateur final et de demander des informations d'identification de l'utilisateur final, une réponse négative à une demande qui ne est pas immédiate est définitive. Il prend la forme suivante:

openid.ns
Comme spécifié dans la section 4.1.2 .

openid.mode
Valeur: «annuler»

Souvent, si l'utilisateur ne souhaite pas ou ne peut pas compléter la demande d'authentification, le processus d'authentification OpenID sera interrompu et la partie se fiant ne sera pas obtenir une réponse d'annulation de mode (l'utilisateur final peut se fermer ou appuyez sur le bouton de retour dans leur User-Agent au lieu de continuer). Si un RP reçoit la réponse "annuler", l'authentification a échoué et la RP DOIT traiter l'utilisateur final comme non authentifié.

TOC
11. Vérification des assertions

Lorsque la partie utilisatrice reçoit une affirmation positive, il DOIT vérifier avant d'accepter l'affirmation:

La valeur de "openid.return_to" correspond à l'URL de la demande actuelle ( article 11.1 )
Découvert informations correspond à l'information dans l'affirmation ( article 11.2 )
Une assertion n'a pas encore été acceptée à partir de cette OP avec la même valeur pour "openid.response_nonce" ( article 11.3 )
La signature sur l'affirmation est valide et tous les domaines qui sont nécessaires pour être signé est signé ( article 11.4 )
Si ces quatre conditions sont remplies, l'affirmation est maintenant vérifiée. Si l'affirmation contient un identifiant validé, l'utilisateur est maintenant authentifié avec cet identifiant.

TOC
11.1. Vérification de l'URL de renvoi

Pour vérifier que le "openid.return_to" URL correspond à l'URL qui traite cette affirmation:

Le schéma d'URL, l'autorité, et le chemin doit être la même entre les deux URL.
Tous les paramètres de la requête qui sont présents dans le "openid.return_to" URL doit également être présent avec les mêmes valeurs dans l'URL de la requête HTTP la RP reçu.

TOC
11.2. Vérification des informations Découvert

Si l'identificateur revendiquée dans l'affirmation est une URL et contient un fragment, la partie de fragment et le fragment delimiter caractère "#" ne doit pas être utilisé à des fins de vérification de l'information découverte.

Si l'identificateur Réclamé est inclus dans l'affirmation, il doit avoir été découvert par la partie utilisatrice et de l'information dans l'affirmation DOIT être présent dans les informations découvertes. L'identifiant ne doivent faire un identificateur d'OP.

Si l'identificateur revendiquée n'a pas été découvert auparavant par la partie utilisatrice (le «openid.identity" dans la demande était "http://specs.openid.net/auth/2.0/identifier_select" ou un identifiant différent, ou si l'OP est envoyer une affirmation positif non sollicités), le Parti utilisatrice doit effectuer la découverte de l'identifiant revendiquée dans la réponse pour se assurer que l'OP est autorisé à faire des affirmations sur l'identificateur revendiquée.

Si aucun identifiant Réclamé est présent dans la réponse, l'affirmation ne est pas sur un identifiant et le RP ne doit pas utiliser l'identifiant fourni par l'utilisateur associé à la transaction d'authentification OpenID actuelle pour identifier l'utilisateur. Extension de l'information dans l'affirmation peut encore être utilisé.

Valeur Découvert Intervention sur le terrain
Identifier Réclamé openid.claimed_id
Identifier OP-local openid.identity
OP Endpoint URL openid.op_endpoint
Protocol Version openid.ns
Ce tableau montre la cartographie des informations découvertes dans des champs dans le "id_res" réponse authentification OpenID 2.0
Découvert information à la cartographie de réponse d'authentification
Si vous utilisez un mécanisme de découverte qui donne un document XRDS, la version du protocole, OP Endpoint URL et l'identificateur de OP-local (si différente de l'identificateur revendiquée) doit être présent dans une <xrd: Service> élément. Il peut y avoir des champs inutilisés dans ce <xrd: service> élément.

Exemple non normative:

<Xmlns de service = "xri: // $ xrd * ($ v * 2.0)">
  <Type> http://specs.openid.net/auth/2.0/signon </ type>
  <URI> http://provider.example.com/openid </ URI>
  <URI> https://provider.example.com/openid </ URI>
</ Service>
Dans cet exemple XRDS snippet, le <xrd: Service> élément a deux <xrd: URI> éléments, qui cartographient aux URL OP Endpoint selon la section 7.3.1 . Si une affirmation a soit la valeur pour "openid.op_endpoint", puis ce domaine correspond à cette <xrd: Service> élément. L'autre <xrd: URI> élément est utilisé.

TOC
11.3. Vérification du Nonce

Pour éviter les attaques par rejeu, l'agent de vérification de la signature assure le suivi des valeurs de nonce inclus dans les assertions positives, et ne accepte jamais la même valeur plus d'une fois pour la même Endpoint OP URL.

Lors de l'utilisation "check_authentication", l'OP NE DOIT PAS émettre plus d'une réponse positive à une demande avec la même valeur pour "openid.response_nonce".
Lorsque la partie utilisatrice vérifie la signature sur une affirmation, la partie utilisatrice doit se assurer que l'affirmation n'a pas encore été acceptée avec la même valeur pour "openid.response_nonce" de la même Endpoint OP URL.
L'horodatage PEUT être utilisée pour rejeter les réponses qui sont trop loin de l'heure actuelle, ce qui limite la quantité de temps que les nonces doivent être stockés pour prévenir les attaques. La plage acceptable est hors de la portée de la présente spécification. Une gamme plus large nécessite stocker plus nonces pour un temps plus long. Une gamme courte augmente les chances que horloge skew et l'heure de la transaction entraînera un rejet parasite.

TOC
11.4. La vérification des signatures

Si la partie utilisatrice a stocké une association avec la poignée de l'association spécifiée dans l'affirmation, il doit vérifier la signature sur l'affirmation elle-même. Si ce ne est pas une association enregistrée, il doit demander à l'OP vérifier la signature par la vérification directe .

TOC
11.4.1. Vérification avec une association

La partie utilisatrice suit la même procédure que l'OP a suivi en génération de la signature , puis compare la signature dans la réponse à la signature il a généré. Si les signatures ne correspondent pas, l'affirmation ne est pas valide.

Si une demande d'authentification inclus une poignée d'association pour une association entre la PO et la partie se fiant, et l'OP ne souhaite plus utiliser que la poignée (car il a expiré ou le secret a été compromise, par exemple), l'OP enverra un réponse qui doit être vérifiée directement avec l'OP, comme spécifié dans la section 11.4.2 . Dans ce cas, l'OP comprendra le champ "openid.invalidate_handle" mis à la poignée d'association que la partie utilisatrice inclus avec la demande initiale.

TOC
11.4.2. Vérification directement avec le fournisseur OpenID

Pour avoir la vérification de signature effectuée par l'OP, la partie utilisatrice envoie une demande directe à l'OP. Pour vérifier la signature, l'OP utilise une association privée qui a été généré quand il a émis l' affirmation positif .

TOC
11.4.2.1. Paramètres de la requête
openid.mode
Valeur: "check_authentication"

Des copies exactes de tous les champs de la réponse d'authentification, à l'exception de "openid.mode".
Pour vérifier les signatures d'une OP ne DOIT utiliser des associations privées et NE DOIT PAS utiliser des associations qui ont partagé touches. Si la demande de vérification contient une poignée pour une association commune, cela signifie que la partie utilisatrice ne sait plus le secret partagé, ou une entité autre que le RP (par exemple, un attaquant) a établi cette association avec l'OP.

Pour éviter les attaques par rejeu, l'OP NE DOIT PAS émettre plus d'une réponse de vérification pour chaque réponse d'authentification qu'il avait précédemment émis. Une réponse d'authentification et de vérification de la demande d'adaptation peuvent être identifiés par leurs valeurs "openid.response_nonce".

TOC
11.4.2.2. Paramètres de réponse

ns
Comme spécifié dans la section 5.1.2 .

is_valid
Valeur: "true" ou "false"; affirme que la signature de la requête de vérification est valide.

invalidate_handle
Valeur: (facultatif) La valeur "invalidate_handle" envoyé dans la demande de vérification, si l'OP confirme elle est invalide.

Description: Si présent dans une réponse de vérification avec "is_valid" valeur "true", la partie se fiant DOIT supprimer l'association correspondante dans son magasin et ne doit pas envoyer d'autres requêtes d'authentification avec cette poignée.

Remarque: Ce processus en deux étapes pour invalider des associations est nécessaire pour empêcher un attaquant d'invalider une association à volonté en ajoutant des paramètres "de invalidate_handle" pour une réponse d'authentification.

TOC
11.5. Identification de l'utilisateur final

L'identificateur revendiquée dans une réponse d'authentification réussie DEVRAIT être utilisé par la partie utilisatrice comme une clé pour le stockage local des informations sur l'utilisateur. L'identificateur revendiqué peut être utilisé comme un identificateur visible par l'utilisateur. Lors de l'affichage des identificateurs d'URL, le fragment peut être omis.

TOC
11.5.1. Identifier recyclage

fournisseurs OpenID avec des bases importantes d'utilisateurs peuvent utiliser des fragments de recycler identificateurs d'URL si on le désire. Lorsque réaffecter un identificateur d'URL pour un nouveau PO de l'utilisateur final devrait générer une nouvelle partie de fragment, unique.

L'URL complète avec la partie de fragment constitue l'identificateur Réclamé dans les assertions positives, donc les parties utilisatrices seront distinction entre les propriétaires actuels et précédents de l'URL de fragment-moins.

Ce mécanisme permet aux (probablement courts, mémorables) recyclés identificateurs d'URL sans le fragment à être utilisés par les utilisateurs finaux au moment de la connexion et par les Parties Invoquant des fins d'affichage.

TOC
11.5.2. HTTP et HTTPS URL identificateurs

Parties utilisatrices doivent faire la différence entre les identificateurs d'URL qui ont des régimes différents. Lorsque l'entrée de l'utilisateur final est transformé en une adresse URL, il est transformé en une URL HTTP. Si le même utilisateur final contrôle la même URL, ne différant que par le schéma, et il est souhaitable que l'identifiant soit l'URL HTTPS, il est RECOMMANDÉ qu'une redirection être délivré à partir de l'URL HTTP à l'URL HTTPS. Parce que les URL HTTP et HTTPS sont pas équivalentes et l'identificateur qui est utilisé est l'URL après avoir suivi les redirections, il n'y a pas réduction prévue de la sécurité lors de l'utilisation de ce régime. Si un attaquant pourrait prendre le contrôle de l'URL HTTP, il ne aurait aucun effet sur la URL HTTPS, depuis l'URL HTTP est jamais utilisé comme identifiant, sauf pour lancer le processus de découverte.

TOC
12. Extensions

Une extension d'authentification OpenID est un protocole qui "se greffe" sur la demande d'authentification et de la réponse. Les extensions sont utiles pour fournir des informations supplémentaires concernant une demande d'authentification ou une réponse ainsi que de fournir des informations supplémentaires concernant le sujet de la réponse d'authentification.

extensions OpenID sont identifiés par un type d'URI. Le type d'URI peut être utilisé comme la valeur d'un <xrd: Type> élément d'un OpenID <xrd: Service> élément dans un document XRDS associé à un identifiant revendiquée. Le type d'URI est également utilisé pour associer des paires clé-valeur dans les messages avec l'extension.

Pour associer clés et valeurs dans un message avec une extension, la clé doit être associé au type URI. Pour associer les touches avec un type d'URI, établir un alias en ajoutant une clé préfixé par "openid.ns." et finissant avec le moins d'alias dont la valeur est du type URI. Une fois un alias a été établie, toutes les paires dans le message dont les touches commencer par "OpenID." suivi du texte d'alias, suivie d'une période ou à la fin de la clé sont associés à ce poste. Ce mécanisme est similaire aux espaces de noms XML.

Un alias d'espace de noms ne doivent pas contenir une période et NE DOIT PAS être le même que un autre alias d'espace de noms dans le même message. Un alias d'espace de noms doit pas non plus être dans la liste suivante des alias rejetées:

assoc_handle
assoc_type
claimed_id
contact
délégué
dh_consumer_public
dh_gen
dh_modulus
erreur
identité
invalidate_handle
mode
ns
op_endpoint
OpenID
domaine
référence
response_nonce
return_to
serveur
session_type
sig
signé
trust_root
Un espace de noms DOIT PAS être attribué plus d'un alias dans le même message. Si un message est une réponse à un autre message, la réponse peut utiliser un alias différent pour désigner le même espace.

Exemple non normative:

Un type d'extension de l'URI est "<http://example.com/ext/1.0>".

openid.ns.x = http: //example.com/ext/1.0

openid.x = exemple

openid.x.foo = bar

openid.xx = notx

Dans cet exemple, les touches "openid.x" et "openid.x.foo" sont associés à l'extension; la touche "openid.xx" ne est pas.

Extensions NE DOIT PAS définir plusieurs paramètres avec le même nom. Les extensions qui ont besoin d'envoyer plusieurs valeurs pour le même nom de paramètre doit définir leurs propres conventions pour le faire.

TOC
13. Découverte OpenID parties utilisatrices

Invoquant la découverte de Partie permet agents logiciels de découvrir des sites qui prennent en charge OpenID. Il permet également aux fournisseurs OpenID pour vérifier automatiquement qu'un URL return_to dans une requête OpenID est un point de terminaison OpenID compter du parti pour le royaume spécifié.

Parties utilisatrices devez utiliser le protocole Yadis à publier leurs URL de Return_to valides. La partie qui invoque peut publier cette information à ne importe quel URL, et devrait publier sous le domaine afin que les fournisseurs peuvent vérifier les URL de Return_to.

Une Partie XRDS de découverte de documents utilisatrice doit contenir un ou plusieurs <xrd: Service> éléments:

Contenant au moins un <xrd: URI> élément.
Où tous les <xrd: URI> balises contiennent une URL qui accepte OpenID 2.0 réponses d'authentification.
Contenant un <xrd: Type> tag dont le contenu est "http://specs.openid.net/auth/2.0/return_to".
Exemple non normative:

<Xmlns de service = "xri: // $ xrd * ($ v * 2.0)">
  <Type> http://specs.openid.net/auth/2.0/return_to </ type>
  <URI> http://consumer.example.com/return </ URI>
</ Service>

TOC
14. OpenID Authentication 1.1 Compatibilité

Cette section décrit comment interagir avec OpenID authentification 1,1 parties utilisatrices et PO. Authentification OpenID 2.0 implémentations DEVRAIENT prendre en charge l'authentification OpenID compatibilité 1.1, à moins que des considérations de sécurité, il est indésirable.

TOC
14.1. Modifications de l'authentification OpenID 1.1

(Non normatif)

Cette spécification est basée sur la spécification d'origine pour l'authentification OpenID comme écrit par Brad Fitzpatrick. Ce cahier des charges n'a pas de numéro de version, mais a été appelé OpenID 1.0, puis OpenID 1.1 quand il a été révisé. Le protocole décrit dans cette spécification est destinée à être rétro-compatible avec le protocole OpenID révisée. Les modifications apportées à la spécification sont décrites dans cette section.

TOC
14.1.1. Mise à jour Initiation et découverte

Supporte OP identificateurs. Cette nouvelle variation du flux de protocole est initiée par un utilisateur final d'entrer un identificateur OP au lieu de leur propre identifiant. Cela permet à l'OP pour aider l'utilisateur final en sélectionnant un identificateur.
Prend en charge l'utilisation de XRIs comme identifiants. XRIs peut être utilisé comme identificateurs pour les utilisateurs finaux et des PO, et de fournir le mappage automatique d'un ou plusieurs affectables i-noms à un synonyme ID canonique persistante qui ne sera jamais réaffecté.
Quand les URLs sont utilisés comme identifiants, ils sont normalisées selon les directives dans [RFC3986] , pour une meilleure compatibilité avec l'infrastructure Web existante.
Utilise le protocole Yadis pour la découverte. Cela permet l'utilisation de plusieurs PO pour un identifiant unique, pour l'équilibrage de charge et de secours en cas de panne OP. En outre, il permet à la découverte des extensions supportées et autres services associés.

TOC
14.1.2. améliorations de sécurité
Un nonce fait maintenant partie du protocole pour la protection intégrée contre les attaques de relecture, qui a été préalablement mis en œuvre hors bande par chaque bibliothèque ou application.

Un nouveau type d'association, HMAC-SHA256, et un nouveau type de session d'association, DH-SHA256, permettent pour les signatures fortes sur assertions d'authentification.

Une réelle section Considérations de sécurité qui ressemble à protéger le protocole de bout-en-bout.

TOC
14.1.3. Extensions
Les extensions sont désormais un mécanisme officiellement pris en charge de soutenir l'échange de données et d'autres Invoquant la communication Parti-OP avec l'échange d'authentification. Extensions permettent l'échange d'attributs arbitraires, ainsi que pour les extensions de protocole, comme l'inclusion d'informations supplémentaires sur la partie utilisatrice dans la demande d'authentification.

Parce que les extensions peuvent transférer des données arbitraires, l'identificateur est désormais facultative dans les messages d'authentification.

TOC
14.2. Implémentation de l'authentification OpenID 1.1 Compatibilité

Tous les messages d'authentification OpenID 1.1 omettent le paramètre "openid.ns", qui est un moyen facile pour un RP pour déterminer si le message provient d'une authentification OpenID 1.1 point final. OpenID Authentication 1.1 prend en charge uniquement les associations HMAC-SHA1.

réponses d'erreur dans OpenID Authentication 1.1 ne ont pas défini "contact" ou "référence". OpenID Authentication 1.1 fait de permettre l'ajout de champs supplémentaires dans les réponses d'erreur. Il est recommandé pour le contact et de référence doit être envoyé même lorsque vous utilisez l'authentification OpenID 1.1, car ils peuvent être utiles pour le débogage et ne affectent pas la compatibilité.

TOC
14.2.1. Parties Invoquant

Lorsque la découverte HTML est effectuée, l'OP URL du noeud final est marqué par la relation de lien "openid.server» plutôt que «openid2.provider". L'identificateur de OP-local de l'utilisateur final est marqué par la relation de lien "openid.delegate» plutôt que «openid2.local_id". La version du protocole est dans ce cas "http://openid.net/signon/1.1". HTML permet de multiples relations de liaison à spécifier pour un seul lien, donc si un OP fournit à la fois l'authentification OpenID 1.1 et OpenID Authentication 2.0, "openid2.provider" et "openid.server" peut apparaître dans le même attribut "rel".
Lorsque la découverte basés XRDS-est effectuée, la Identifier OP-local de l'utilisateur final apparaît dans le <OpenID: Délégué> du OpenID <xrd: Service> element plutôt que dans la <xrd: localId> tag. Afin de soutenir le code de découverte actuellement déployée, deux étiquettes peut apparaître dans la <xrd: Service> élément.
Parties utilisatrices DEVRAIENT extraire et utiliser des éléments de services d'authentification OpenID 1.x de XRDS documents, si Yadis réussit sur un identificateur d'URL. Ces éléments de service sont identifiés par <xrd: Type> balises dont le contenu texte sont «http://openid.net/server/1.0" ou "http://openid.net/server/1.1". Bien que ce ne est pas spécifié dans la version précédente du protocole, ce est une pratique généralement acceptée de la publicité des services d'authentification OpenID 1.x travers Yadis.
"Openid.claimed_id" ne est pas définie par l'authentification OpenID 1.1. Parties utilisatrices peuvent envoyer la valeur lors des requêtes, mais ne doivent pas dépendre de la valeur étant présente dans les réponses d'authentification. Lorsque l'identificateur de OP-local ("openid.identity") est différent de l'identificateur revendiquée, la partie utilisatrice doit garder la trace de ce Réclamé Identificateur a été utilisé pour découvrir l'identificateur de OP-local, par exemple en le mettant dans l'état de session. Bien que l'identificateur revendiquée ne sera pas présent dans la réponse, il DOIT être utilisé comme identifiant de l'utilisateur.
"Openid.identity" DOIT être envoyé dans une demande d'authentification .
Parties utilisatrices doivent envoyer un paramètre de session_type vierge dans les demandes de l'association «sans cryptage".
OpenID Authentication 1.1, le «non-cryptage" type de session d'association est représentée par un paramètre vide ou manquant "openid.session_type". Parties utilisatrices NE DOIVENT PAS envoyer des demandes avec "openid.session_type" réglé sur "NO-cryptage".
Dans les demandes d'authentification , le paramètre "openid.identity" ne doit pas être la valeur spéciale "http://specs.openid.net/auth/2.0/identifier_select", parce OpenID Authentication 1.1 ne supporte pas l'utilisation de OP identificateurs.
Le "openid.realm" paramètre dans les requêtes d'authentification a été connu comme "openid.trust_root". La syntaxe et la signification sont identiques.
En répondant à une assertion négative à une demande "checkid_immediate" d'authentification de mode, le paramètre "user_setup_url" DOIT être retourné. Il se agit d'une URL que l'utilisateur final peut visiter à compléter la demande. L'OP peut rediriger l'utilisateur final à cette URL, ou de fournir à l'utilisateur final avec un lien qui pointe vers cette URL.
La partie utilisatrice doit accepter un réponse d'authentification qui manque le paramètre "openid.response_nonce". Il DEVRAIT mettre en œuvre une méthode pour prévenir les attaques par rejeu.
Parties utilisatrices DOIVENT accepter les réponses d'authentification qui manquent le paramètre "openid.op_endpoint".

TOC
14.2.2. Fournisseurs OpenID

"Openid.identity" DOIT être envoyé dans une assertion d'authentification positif .
OpenID Authentication 1.1, le «non-cryptage" type de session d'association est représentée par un paramètre vide ou manquant "openid.session_type". PO DOIT PAS envoyer des réponses avec "openid.session_type" réglé sur "sans cryptage".
OPS, peuvent choisir de retourner un «non-cryptage" réponse positive à toute demande de l'association. Comme ci-dessus, le paramètre "openid.session_type" doit être vide ou omis de la réponse.
PO DOIVENT accepter les demandes d'association avec aucun paramètre de assoc_type, et les assumer à être de type HMAC-SHA1.
Tentatives d'association déboutée peut être répondu avec des messages d'erreur directs ou «sans cryptage" réponses association positive.
Le "openid.realm" paramètre dans les requêtes d'authentification a été connu comme "openid.trust_root". La syntaxe et la signification sont identiques.
En répondant à une assertion négative à une demande "checkid_immediate" d'authentification de mode, le paramètre "user_setup_url" DOIT être retourné. Il se agit d'une URL que l'utilisateur final peut visiter à compléter la demande. La partie utilisatrice peut rediriger l'utilisateur final à cette URL, ou de fournir à l'utilisateur final avec un lien qui pointe vers cette URL.
PO ne doit pas envoyer le paramètre "openid.op_endpoint" dans les réponses d'authentification , car il ne fait pas partie du protocole d'authentification OpenID 1.1.

TOC
15. Considérations sur la sécurité

TOC
15.1. Attaques Prévention

TOC
15.1.1. les tentatives d'écoute

Il ya un endroit dans ce protocole qui est vulnérable aux attaques d'écoute.

Si le nonce ne ont pas été cochée, un espion pourrait aussi intercepter une assertion d'authentification réussie et réutiliser.
Cette attaque peut être évitée en utilisant le cryptage de couche de transport pour ces connexions pour éviter les écoutes. En outre, si l'on utilise pas TLS cette attaque peut encore être évitée en contrôlant la valeur à usage unique tout en effectuant la vérification du message. Ce faisant, l'assertion d'authentification positive peut pas être réutilisé.

TOC
15.1.2. Man-in-the-middle attaques
Associations empêcher toute manipulation des champs signés par un homme au milieu, sauf lors de la découverte, sessions d'association et de vérification directe . Modification de champs signé sans le secret partagé nécessite briser le MAC. Actuellement aucune attaque traitable est connu sur les MAC utilisés dans ce protocole. La qualité de la protection assurée par le MAC dépend du caractère aléatoire de la clé partagée MAC, il est donc important qu'une valeur unguessable être utilisé.

Si la résolution de DNS ou de la couche de transport est compromise signatures sur les messages ne sont pas suffisantes, car l'attaquant peut usurper l'identité de l'OP et émettre ses propres associations, ou de ses propres décisions en mode sans état. Si un attaquant peut altérer le processus de découverte, ils peuvent spécifier ne importe quel OP, et ainsi de ne pas avoir à passer pour l'OP. En outre, si un attaquant peut compromettre l'intégrité de l'information renvoyée pendant le processus de découverte, en modifiant le document XRDS, la nécessité d'un homme au milieu est retiré. Une méthode pour éviter ce genre d'attaque est en signant numériquement le fichier XRDS selon XMLDSIG [RFC3275]. Le matériel de chiffrement ne est pas spécifié, depuis la RP définitive doit prendre sa propre décision soit de faire confiance clés utilisées pour cette signature.

Utilisation de SSL avec des certificats signés par une autorité de confiance empêche ce genre d'attaques en vérifiant les résultats de la recherche DNS contre le certificat. Une fois que la validité du certificat a été établi, l'altération ne est pas possible. Usurper l'identité d'un serveur SSL nécessite forgeage ou le vol d'un certificat, ce qui est nettement plus dur que les attaques de réseau sur la base.

Afin d'obtenir une protection contre SSL, SSL doit être utilisé pour toutes les parties de l'interaction, y compris l'interaction avec l'utilisateur final à travers le User-Agent. Bien que le protocole SSL ne nécessite pas être utilisé, son utilisation est fortement recommandée. Les meilleures pratiques actuelles dictent qu'un OP DEVRAIT utiliser SSL avec un certificat signé par une autorité de confiance, pour assurer son Endpoint URL aussi bien que les interactions avec User-Agent de l'utilisateur final. En outre, SSL, avec un certificat signé par une autorité de confiance, DEVRAIT être utilisé de sorte qu'une partie utilisatrice peut aller chercher l'URL de l'utilisateur final de manière sécurisée. Suite à ses propres politiques de sécurité, une partie utilisatrice PEUT choisir de ne pas complète, ou même de commencer, une transaction si SSL ne est pas correctement utilisé à ces différents paramètres.

TOC
15.1.2.1. Rogue appuyant Parti Proxying

Un type spécial de man-in-the-middle attaque est celui où la partie se fiant est partie voyous agissant comme un MITM. Le RP serait effectuer la découverte sur le Identificateur Réclamé de l'utilisateur final et au lieu de réorienter l'agent utilisateur à l'OP, serait plutôt proxy l'OP par lui-même. Ce serait donc permettre à la RP pour capturer les informations d'identification l'utilisateur final fournit à l'OP. Bien qu'il existe plusieurs façons de prévenir ce type d'attaque, les détails sont en dehors de la portée de ce document. Chaque méthode de prévention nécessite que l'OP établir un canal sécurisé avec le utilisateur final.

TOC
15.2. User-Agents

Comme ce protocole est destiné à être utilisé de manière interactive, User-Agents seront principalement navigateurs Web communs. navigateurs Web ou leurs hôtes peuvent être infectés par des logiciels espions ou autres logiciels malveillants, ce qui limite la force de l'assertion d'authentification, puisque le logiciel non sécurisé, il est impossible de savoir si la décision d'authentification a été faite avec l'approbation de l'utilisateur final. Cela dit, beaucoup d'applications web et des protocoles aujourd'hui se appuient sur la sécurité du navigateur Web et leurs hôtes.

Cross-site scripting-attaques contre les PO peuvent être utilisés pour le même effet. Pour la meilleure sécurité, PO devraient pas dépendre de scripts. Cela permet User-Agents qui ne supporte pas les scripts ou les scripts sont désactivés, à employer encore le protocole.

TOC
15.3. Considérations de l'interface utilisateur

La partie utilisatrice doit rediriger l'utilisateur final à l'OP Endpoint URL dans une fenêtre de navigateur de haut niveau avec toutes les commandes visibles. Cela permet une meilleure protection de l'utilisateur final contre les sites de ressemblance OP (phishing).

Fournisseurs OpenID devraient éduquer leurs utilisateurs finaux sur le potentiel de OpenID attaques de phishing et DEVRAIENT équiper leurs utilisateurs finaux avec les outils pour vaincre ces attaques, des plug-ins par exemple navigateur qui vérifient l'authenticité de service d'authentification Endpoint l'URL de l'OP.

TOC
15.4. HTTP et HTTPS URL identificateurs

Bien que ces types d'identifiants ont été précédemment discuté , ils valent de mentionner à nouveau. Comme indiqué précédemment, la méthode recommandée d'un utilisateur final exprimant contrôle sur une URL différente seulement régime consiste à configurer une redirection de l'URL HTTP à l'URL HTTPS. Parties utilisatrices ne seront jamais stocker l'URL HTTP que pendant la phase de découverte et d'initiation suivra la redirection et utiliser l'URL HTTPS comme identificateur revendiquée.

Les utilisateurs finaux avec des préoccupations plus cette recommandation devraient saisir directement leur URL HTTPS à chaque partie utilisatrice. Cela supprime ainsi l'étape où la partie se fiant suit la redirection à l'URL HTTPS. La contrepartie de sécurité unique actuellement vu est si un attaquant devait compromettre l'intégrité de l'URL HTTP en retirant la redirection et pointant l'identifiant à une OP voyous. Ce sera toutefois modifier l'expérience utilisateur, est détectable par les technologies anti-phishing et la sécurité de l'identificateur lui-même est un principe fondamental dans les OpenID.

TOC
15.5. Les attaques de déni de service

Dans le protocole, il ya des endroits où un RP de voyou pourrait lancer une attaque par déni de service contre un OP car il n'y a rien dans OpenID messages de protocole qui permet à l'OP de vérifier rapidement que ce est une véritable demande. Cela peut être fait par le RP demandant à plusieurs reprises les associations, l'authentification, ou la vérification d'une signature.

L'attaque est potentiellement plus grave pendant la phase d'association de chaque message nécessite l'OP à exécuter une exponentiation discrète. Depuis le RP a la possibilité de spécifier le module et le générateur par message, un attaquant peut même forcer l'OP pour effectuer cette exponentiation en temps réel avant de répondre pour chaque message.

Alors que cela pourrait être particulièrement préjudiciable, fournisseurs OpenID pouvez facilement utiliser IP générique basé limitant la vitesse et l'interdiction de techniques pour aider à combattre ces sortes d'attaques. PO peuvent aussi chercher à interdire les demandes fondées sur le «openid.realm" et les valeurs "de openid.return_to".

TOC
15.6. Protocole Variantes

Ce qui suit sont des variations connues dans le protocole qui peut être ou ne affecte pas directement la sécurité de l'utilisation du protocole. On imagine que ces valeurs pourraient être utilisés dans la création de profils de sécurité de ce protocole. La liste suivante de variantes sont du point de vue d'un fournisseur OpenID.

Nombre Variante Valeurs
1. Jokers sont autorisés dans les royaumes? Un de Oui / Non
2. Exiger association antérieure? Est-ce que l'OP nécessite RP d'abord créer une association avant de demander l'authentification? Un de Oui / Non
3. Types d'identifiants réclamés acceptées. Ensemble de HTTP / HTTPS / XRI
4. Sont des certificats auto-émis autorisés pour l'authentification? Cela se applique à tout le trafic SSL. Si «non» ici, alors OP * * nécessite probablement tous les identificateurs de HTTPS à la chaîne jusqu'à racines de confiance connus, mais ce est volontairement pas implicite. Un de Oui / Non
5. Le fichier XRDS doit être signé? Signature sur les XRDS que par XMLDSIG. Matériel de chiffrement ne est spécifié, depuis la RP définitive doit faire propre décision de confiance clés utilisées pour cette signature. Un de Oui / Non
6. Le fichier XRDS doit être récupéré sur le canal sécurisé? Cela ne implique pas SSL? Un de Oui / Non
7. Quels types de types de session peut être utilisé lors de la création des associations? Set de non-cryptage / DH-SHA1 / DH-SHA256
8. RP doit disposer d'un document XRDS? Un de Oui / Non
9. Quelle association types l'OP se engage à utiliser pour les signatures? Ensemble de HMAC-SHA1 / HMAC-SHA256
10. Doit la demande de l'association se déroulera sur un canal sécurisé? Un de Oui / Non
Variantes de sécurité identifiés.

TOC
Annexe A. Exemples

Non normatif

TOC
A.1 Annexe. Normalisation

Voir la section 6 de [RFC3986] pour textuelle URL de détails de normalisation et d'autres exemples.

L'entrée de l'utilisateur Identifiant Type Discussion
example.com http://example.com/ URL Un URI avec un schéma manquant est normalisée à un URI http
http://example.com http://example.com/ URL Un composant de chemin vide est normalisé à une barre oblique
https://example.com/ https://example.com/ URL https URI rester https URI
http://example.com/user http://example.com/user URL Aucune slash est ajouté à la non-vides chemin composants
http://example.com/user/ http://example.com/user/ URL Les barres obliques sont conservés sur la non-vides chemin composants
http://example.com/ http://example.com/ URL Les barres obliques sont conservés lorsque le chemin est vide
= Exemple = Exemple XRI XRIs normalisées commencent avec un symbole mondial de contexte
xri: // = exemple = Exemple XRI XRIs normalisées commencent avec un symbole mondial de contexte
L'entrée de l'utilisateur à Identifier normalisation

TOC
A.2 appendice. Identifiants OP-local

Un utilisateur final veut utiliser "http://www.example.com/» comme identificateur revendiquée. L'utilisateur final dispose d'un compte à l'exemple du fournisseur, qui fonctionne comme un fournisseur OpenID. L'identificateur de OP-local de l'utilisateur final est "https://exampleuser.exampleprovider.com/".

Dans ce scénario, la configuration appropriée de Yadis ou HTML-Based Discovery (voir section 7.3 et annexe A.3 ci-dessous), une partie utilisatrice fera découvrir les informations suivantes sur l'utilisateur final:

Identifier Réclamé
http://www.example.com/
Identifier OP-local
https://exampleuser.exampleprovider.com/

TOC
A.3 annexe. XRDS

Pour un utilisateur final d'utiliser "http://www.example.com/» comme identificateur, mais ont des parties utilisatrices de vérifier réellement "https://exampleuser.exampleprovider.com/" avec les OP Endpoint https "URL: // www.exampleprovider.com/endpoint/ ", l'extrait de code XML suivant doit être présent dans l'élément de XRD finale dans le fichier XRDS lorsque la découverte est préformée sur" http://www.example.com/ ":

<Xmlns de service = "xri: // $ xrd * ($ v * 2.0)">
  <Type> http://specs.openid.net/auth/2.0/signon </ type>
  <URI> https://www.exampleprovider.com/endpoint/ </ URI>
  <LocalId> https://exampleuser.exampleprovider.com/ </ localId>
</ Service>

TOC
A.4 appendice. Identifier HTML Markup

Pour utiliser "http://www.example.com/» comme identificateur, mais ont appuyant Parties vérifier réellement "http://exampleuser.livejournal.com/" avec le fournisseur OpenID situé à "http: //www.livejournal .com / openid / server.bml ", le balisage suivant doit être présent dans la balise <head> du document HTML situé par l'identificateur URL:

<Link rel = "de openid.server de openid2.provider"
      href = "http://www.livejournal.com/openid/server.bml" />
<Link rel = "de openid.delegate openid2.local_id"
      href = "http://exampleuser.livejournal.com/" />

TOC
Annexe A.5. XRI CanonicalID

Par exemple, si le XRI i-names = = exemple et exmpl plus produire un document XRDS avec le xri CanonicalID: // (par exemple) 1234 alors ces identificateurs doivent être considérés comme équivalents. Pour les applications avec des comptes d'utilisateur, l'ID canonique xri persistante: // (exemple) 1234 doit être utilisé la clé primaire pour le compte. Bien que la i-names = = exemple et exmpl peuvent également être stockés pour référence que les noms d'affichage, ils sont des identifiants affectables et ne doivent pas être utilisées comme touches persistants.

TOC
Annexe B. Diffie-Hellman Key Exchange Valeur par défaut

Ce est un nombre confirmé-prime, utilisé comme module par défaut pour Diffie-Hellman Key Exchange. En hexadécimal:

DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61E
F75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D268370557
7D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E382
6634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB22C583AB

TOC
Annexe C. Remerciements

La Communauté OpenID tient à remercier les personnes suivantes pour le travail qu'ils ont fait dans la rédaction et l'édition de cette spécification. Si vous voulez savoir le Nitty Gritty de qui effectivement a écrit quoi, ne hésitez pas à regarder notre dépôt SVN ou même utiliser «blâmer svn". :) Http://openid.net/svn/specifications/authentication/2.0/

Barry Ferg (barry@sxip.com)

Brad Fitzpatrick (brad@danga.com) <author>

Carl Howells (chowells@janrain.com)

David Recordon (david@sixapart.com) <author / editor>

Dick Hardt (dick@sxip.com) <author>

Drummond Reed (drummond.reed@cordance.net)

Hans Granqvist (hgranqvist@verisign.com)

Johannes Ernst (jernst@netmesh.us)

Johnny Bufu (johnny@sxip.com) <editor>

Josh Hoyt (josh@janrain.com) <author / editor>

Kevin Turner (kevin@janrain.com)

Marius Scurtescu (marius@sxip.com)

Martin Atkins (mart@degeneration.co.uk)

Mike Glover (mpg4@janrain.com)

TOC
16. Références normatives

[FIPS180-2] US Department of Commerce et de l'Institut national des normes et de la technologie, " Secure Hash Standard Signature , «FIPS 180-2.
Définit Secure Hash Algorithm 256 (SHA256)

[HTML401] W3C, « spécification HTML 4.01 . "
[RFC1750] Eastlake, D., Crocker, S. et J. Schiller, " Randomness Recommandations pour la sécurité », RFC 1750.
[RFC2104] Krawczyk, H., Bellare, M., et R. Canetti, " HMAC: Hachage pour l'authentification de message , "RFC 2104.
[RFC2119] Bradner, B., " Mots clés pour utilisation dans les documents RFC pour indiquer les niveaux d'exigence ", RFC 2119.
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P. et T. Berners-Lee, " Hypertext Transfer Protocol - HTTP / 1.1 , "RFC 2616 .
[RFC2631] Rescorla, E., " clé Diffie-Hellman Méthode accord , "RFC 2631.
[RFC3174] Eastlake, D. et P. Jones, " US Secure Hash Algorithm 1 (SHA1) , "RFC 3174.
[RFC3275] Eastlake 3e, D., Reagle Jr., J. et D. Solo, " (Extensible Markup Language) XML-Signature syntaxe et le traitement », RFC 3275.
[RFC3339] Klyne, G. et C. Newman, " Date et heure sur Internet: horodatage , "RFC 3339.
[RFC3548] Josefsson, S., " La Base16, Base32 et Base64 données codages , "RFC 3548.
[RFC3629] Yergeau, F., " UTF-8, un format de transformation d'Unicode et ISO 10646 , "RFC 3629.
[RFC3986] Berners-Lee, T., « Uniform Resource Identifiers (URI): Syntaxe générique , "RFC 3986.
[XRI_Resolution_2.0] Wachob, G., Reed, D., Chasen, L., Tan, W. et S. Churchill, " Extensible Resource Identifier (XRI) Résolution V2.0 - Projet Comité 02 "( HTML , PDF ).
[XRI_Syntax_2.0] Reed, D. et D. McAlpin, " Extensible Resource Identifier (XRI) Syntaxe V2.0 "( HTML , PDF ).
[Yadis] Miller, J., «Yadis spécification 1.0" ( PDF , ODT ).

TOC
Adresse de l'auteur
specs@openid.net

UA-46322091-11 | [WMT-95212] 'Par Wâmuffïn-R Thierry Arnaud TAREAU") Le Père! Et...