OAuthSD intègre la plupart des fonctionnalités d’OAuth 2.0. Les fonctionnalités d’OAuth 2.0 et de OpenID Connect peuvent être atteintes par les Points d’extrémité d’OpenID Connect.
Type de flux selon les paramètres de l’appel
1. Requêtes adressées au point d’extrémité authorize. Les différentes valeurs du paramètre response_type (obligatoire) et du scope openid (facultatif) déterminent les flux d’autorisation (Grant Type) suivants :
Grant Type | response_type | openid | Rem. |
OAuth 2.0 Authorization Code | code | Non | RFC 6749 |
OIDC Authorization Code | code | Oui | |
OAuth 2.0 Implicit | token | X [1] | RFC 6749 |
OIDC Implicit | id_token, id_token token | Oui [2] | OpenID Connect Implicit Client. ’nonce’ est requis. |
OIDC Hybrid | code id_token | Oui | ’c_hash’ est requis |
Hybrid | code token | X | Invalid [3] |
Hybrid | code id_token token | Oui | Invalid [4] |
Références :
The OAuth 2.0 Authorization Framework.
OpenID Connect Core 1.0 incorporating errata set 1 : Authentication using the Hybrid Flow.
Notes :
A propos des response type "id_token" et "id_token token" :
ces types de réponse correspondent à des flux implicites retournant directement les jetons. Le paramètre "nonce" doit être présent dans la requête.
A propos des response type "code token" et "code token-id token" :
ces types de réponse correspondent à des flux hybrides retournant directement le ou les jetons en même temps que le code d’autorisation. OAuthSD est fondé sur la librairie OAuth 2.0 Server PHP développée par Brent Shaffer. Dans le cadre d’OpenID Connect, celle-ci n’accepte que la demande de flux hybride "code id_token".
2. Requêtes adressées directement au point d’extrémité token. Ces flux ne sont définis que par OAuth 2.0 et ne retournent pas de jeton d’identité, que le scope openid soit indiqué ou non.
Grant Type | grant_type | Access Token | Refresh Token | Rem. |
Client Credentials | client_credentials | Oui | Oui | [4] |
User Credentials [5] | password | Oui | Non | |
JWT Bearer | - | Oui | Non | [6] |
References :
RFC 6749 Client Credentials Grant,
Spécification draft-ietf-oauth-jwt-bearer-07 section 1
Synthèse des fonctionnalités offertes par les différents flux OpenID Connect
Voir : https://openid.net/specs/openid-connect-core-1_0.html#Authentication
Propriété | Flux de codes d’autorisation | Flux implicite | Flux hybride |
Tous les jetons renvoyés depuis le contrôleur Authorization | non | oui | non |
Tous les jetons renvoyés par le contrôleur Token | oui | non | non |
Jetons non révélés à l’agent utilisateur | oui | non | non |
Le client peut être authentifié [7] | oui | non | oui |
Actualisation du jeton d’accès possible | oui | non | oui |
Communication en un aller-retour | non | oui | non |
La plupart des communications serveur à serveur | oui | non | varie |
Choix du flux en fonction de la configuration
Tous les flux n’ont pas la même valeur pour la protection des données confidentielles.
Avant de choisir un flux OpenID Connect, il est important d’identifier la configuration des parties prenantes (applications, serveur OIDC, serveurs de ressource etc.).
Cette problématique est exposée ici : Typologie des applications au regard de la sécurité des données.
Pour tester le serveur OAuthSD avec vos applications :
Inscrivez-vous comme auteur d’applications
Lier une application cliente au serveur OAuthSD