Ce qui suit est une traduction d’extraits de OpenID Connect Core 1.0
3.1.3.8. Validation du jeton d’accès
Lors de l’utilisation du flux de code d’autorisation, si le jeton d’ID contient une déclaration at_hash, le client PEUT l’utiliser pour valider le jeton d’accès de la même manière que pour le flux implicite, tel que défini dans la section 3.2.2.9, Jeton d’accès renvoyé à partir du point d’extrémité Token.
3.2.2.9. Validation du jeton d’accès
Pour valider un jeton d’accès émis à partir du point d’extrémité d’autorisation avec un jeton d’ID, le client DOIT faire ce qui suit :
- Hash les octets de la représentation ASCII de l’access_token avec l’algorithme de hachage spécifié dans JWA pour le paramètre Alg Header de l’en-tête JOSE de Token ID. Par exemple, si l’alg est RS256, l’algorithme de hachage utilisé est SHA-256.
Prendre la moitié la plus à gauche du hachage et base64url encoder.
La valeur de at_hash dans le jeton d’identification DOIT correspondre à la valeur produite à l’étape précédente.
Exemple de code :
PHP
- if ( @$jwt['at_hash'] ) {
- // Verify access token
- $encryptionUtil = new \OAuth2\Encryption\Jwt();
- $ath = $encryptionUtil->urlSafeB64Encode($ath);
- if ( $ath !== $jwt['at_hash'] ) {
- // Token request error
- }
- }
Note :
Dans l’état actuel du développement, le flux Authorization Code d’OpenID Connect ne comporte la déclaration at_hash que dans le cadre du flux Implicit (type de réponse ’idtoken token’). La généralisation de at_hash est à l’étude. Voyez : https://github.com/bshaffer/oauth2-server-php-docs/issues/113.