Mappage de demande OpenID Connect pour le contexte d'autorisation
En fonction de la configuration, les flux OAuth ou Open ID Connect dans IBM® Verify peuvent effectuer des actions d'autorisation.
Les flux peuvent inclure ces actions.
- Évaluez la règle d'accès.
- Calculez les valeurs de réclamation qui sont stockées dans l'octroi d'autorisation et utilisées pour générer des jetons d'ID et la réponse de l'introspection.
La règle de mappage des demandes de contexte fournit un mécanisme pour étendre le contexte collecté à partir de la demande d'autorisation. Par exemple, la demande d'autorisation peut contenir un paramètre de demande personnalisé appelé contextID. La règle personnalisée peut inclure contextID dans une requête HTTP sur un nœud final externe. Le résultat de cette demande HTTP est un objet qui peut être décompressé et ajouté au requestContext utilisé lors de l'évaluation de la règle d'accès et de l'enrichissement de l'octroi. Voir Fonctions d'attribut
La règle peut être écrite à l'aide d'un langage simple d'expression à une seule ligne ou d'un document YAML multiligne plus avancé. Voir Exécuteur de règles multilignes.
Objets d'entrée disponibles
- Contexte de demande HTTP
- Lorsqu'un utilisateur se connecte à Verify, le contexte de requête HTTP entrant est accessible dans la règle de mappage des demandes. Tous les paramètres de requête OAuth, tels que
claimsetscope, sont disponibles dans cetterequestContext. La structure générale et l'utilisation derequestContextsont décrites dans la section « Contexte HTTP de requête » des fonctions d'attribut.Pour l'accès, certaines valeurs sont préétablies dansrequestContext. Le paramètre de requêteclaimsest généralement représenté comme un fichier JSON comme l'exemple suivant.{ "id_token": { "claim_name": { "essential": false, "value": "some_value" } }, "userinfo": { "claim_name": { "essential": false, "value": "some_value" } } }Ce format peut être difficile d'accès. La clé utilisée dans
requestContextest au formatclaims_claimType_claimName.claimTypeestuserinfoouidtoken(remarquez le trait de soulignement manquant). Par conséquent, à l'aide de l'exemple précédent, la valeurclaim_namepeut être obtenue à l'aide derequestContext.getValue('claims_idtoken_claim_name').De même,
scopeest divisé par le séparateur d'espace pour générer un tableau de chaînes. - Donnée d'identification de la source d'identité
- Lorsqu'un utilisateur se connecte à Verify, les attributs de données d'identification source d'identité sont ajoutés à la session de connexion et sont accessibles dans la règle de mappage des demandes.L'objet de domaine
idsuserest disponible sous la forme d'une mappe avec une clé de chaîne et une valeur de tableau de chaînes. Par exemple :
Voir Fonctions d'attribut.{ "realmName": ["cloudIdentityRealm"], "displayName": ["Jessica J. Hill"], "phone": ["+12324321234"] } - Autres fonctions et opérateurs
- Les opérateurs et fonctions standard sont disponibles dans la règle de mappage. Le client HTTP est également disponible pour effectuer des demandes sortantes. Les autres fonctions prises en charge incluent le hachage et les horodatages. Consultez les sections correspondantes dans Fonctions d'attribut.
Objet de retour
Cette règle personnalisée est censée renvoyer un objet JSON et la valeur de chaque propriété JSON doit être un tableau de chaînes.
{
"ageRange": ["toddler"],
"interests": ["sleeping", "other_misc_activities"]
}Cette valeur de retour est traitée et peut être ensuite accessible dans les attributs de règle avancés à l'aide de requestContext.ageRange et de requestContext.interests. Les attributs de règle avancés peuvent être utilisés dans des règles d'accès telles que {{requestContext.ageRange[0]
!= 'toddler'}} ou pour mapper des attributs dans la subvention d'autorisation requestContext.interests.Exemple - Ajouter des passe-temps au jeton d'ID
hobbies au jeton d'ID.
statements:
- context: "contextData := hc.getAsJSON('https://jke.com/users/' + idsuser.getValue('uid'), { 'Authorization': 'apikey supersecretkey' })"
- return: >-
{
"hobbies": request.Context.interests.filter(x, x != 'other')
}Dans cet exemple, la règle appelle un nœud final d'utilisateur externe pour obtenir des informations supplémentaires sur l'utilisateur. Il utilise l'objet idsuser, qui représente la session authentifiée de l'utilisateur sous Verify. Enfin, la règle extrait hobbies de la réponse.hobbies.- Création d'un attribut de règle avancé nommé
my_hobbiesavec une règle personnalisée définie en tant querequestContext.hobbies. Le type de données de cet attribut est une chaîne à plusieurs valeurs. - Ajout d'un mappage d'attributs pour cet attribut. Voir OpenID Connect introspect, jeton d'identification et mappage des informations utilisateur.