Attributs externes basés sur l'affichage
Introduction
Il est très peu probable que les référentiels d'utilisateurs, tels que Active Directory ou Security Directory Server, contiennent toutes les données associées à l'utilisateur. Il est également moins probable que ces annuaires contiennent les données dans le format attendu par les applications. La normalisation des données dans un outil IAM est une activité courante qui s'effectue généralement à l'aide d'un langage de script ou de javascript.
IBM Security Verify a intégré des règles d'attributs qui permettent une plus grande flexibilité dans l'interaction avec le profil de l'utilisateur, en l'enrichissant, en l'inversant, en le divisant ou en le rejoignant. Il existe également un éditeur de code intégré qui permet d'écrire et d'essayer des fonctions très rapidement. Pour en savoir plus sur les règles d'attributs et commencer à les utiliser, consultez les fonctions d'attributs dans notre KnowledgeCenter.
Mais qu'en est-il si les données de l'utilisateur se trouvent ailleurs ou si vos données ont besoin d'une logique très complexe ? Verify prend en charge la possibilité d'appeler un point de terminaison HTTP externe (API REST), et dans ce guide, nous allons compléter l'incroyable fonctionnalité que les règles d'attributs de Verify fournissent avec la flexibilité d' IBM Cloud Functions
Prérequis
Pour commencer à utiliser les fonctions d'attributs d' IBM Security Verify, vous devez disposer des éléments suivants
- Disposer d'un abonnement payant à IBM Security Verify (cette fonctionnalité n'est pas disponible pour les instances d'essai)
- Se familiariser avec les fonctions d'attributs dans le KnowledgeCenter
- S'inscrire à IBM Cloud Functions (niveau gratuit disponible)
Créer une fonction IBM Cloud

Étapes de création d'une fonction IBM Cloud
- Cliquez sur Démarrer la création
- Choisissez " Action " dans la catégorie Droits uniques
- Donnez un nom à votre action
- Il servira de référence ultérieurement.
- Choisissez votre langage d' exécution
Pour ce faire, nous utiliserons Node.js
Un éditeur de code devrait être présenté avec une fonction de type "boilerplate". Des paramètres peuvent être transmis à cette fonction (au format JSON) et utilisés pour l'évaluation logique. Tout ce qui est renvoyé par cette fonction sera renvoyé à Verify pour être utilisé par les utilisateurs.
Renvoyer le mois et l'année en cours en utilisant Javascript (basic)
En utilisant la fonction Date de javascript, nous retournerons un objet JSON dans la fonction avec le mois, le jour et l'année en cours et nous ferons une comparaison rapide pour voir si nous sommes aujourd'hui le jour de Noël.
function main(params) {
var date = new Date(); // Check if today is Christmas Day
var isChristmas = (date.getMonth() == 12 && date.getDay() == 25) ? true : false;
return {
year: date.getFullYear(),
month: date.getMonth(),
day: date.getDay(),
isChristmas: isChristmas
};
}
Le résultat de cette opération est le suivant :
{
"day": 3,
"isChristmas": false,
"month": 9,
"year": 2020
}
Dans l'interface utilisateur d' IBM Cloud Functions, vous devriez voir quelque chose comme ceci :

Mise en place d'un point d'accès à l'API pour l'action

Étapes de création d'une fonction IBM Cloud
- Dans la navigation IBM Cloud, allez dans la section APIs
- Cliquez sur Créer une API
- Dans la section Créer une API de Cloud Functions, sélectionnez Définition de l'API
- Dans la section Principes de base de l'API, indiquez un nom descriptif, qui remplira automatiquement le chemin d'accès à la base.
- Ensuite, cliquez sur Créer une opération
- Créer un chemin appelé /date
- Sélectionnez GET dans la sélection Verbe
- Sélectionnez le nom de votre action dans la sélection Action
- Laisser le type de contenu de la réponse comme application/json
- Cliquez sur créer pour enregistrer l'opération
- Activer l'authentification de l'application
- Sélectionnez la clé API uniquement pour la méthode. La meilleure pratique consiste à inclure également un secret pour l'authentification, mais pour simplifier cette démonstration, nous ne le ferons pas pour l'instant.
- L'emplacement restera le même que celui de Header
- Laisser le paramètre pour l'en-tête de la clé API comme IBM
- Ignorer la limitation du débit et l'authentification des utilisateurs par OAuth
- Laisser CORS activé
- Cliquez sur créer
Le point de terminaison de l'API est désormais public et peut être utilisé par IBM Security Verify.

Accepter des paramètres pour appliquer une logique conditionnelle (avancé)
IBM Cloud Functions nous permet également de passer des paramètres dans la logique afin que celle-ci puisse être dynamique en fonction des données de l'utilisateur provenant de Verify. Dans cet exemple, nous acceptons le code pays de l'utilisateur pour déterminer l'identifiant de facturation à envoyer à l'application.

Le résultat ressemble à ce que l'on obtient lorsque country = “us”
est passé comme paramètre d'entrée :
{
"country": "US",
"value": "1"
}
Créer une fonction de règle avancée dans Verify
Dans votre console d'administration IBM Security Verify, accédez à Configuration. Passez à l'onglet Attributs et cliquez sur Ajouter un attribut.

Donnez un nom à l'attribut. Il est utilisé pour référencer l'attribut lors de la sélection des attributs pendant le SSO et la configuration du provisionnement. Nous l'appellerons Attribut de la fonction cloud.

Sélectionnez Règle avancée dans la liste des types d'attributs et sélectionnez au moins l'une des options suivantes : Connexion unique ou Provisionnement.

Pour l'expression de l'attribut, nous utiliserons la fonction d'attribut du service client HTTP de Verify. Pour en savoir plus sur le client HTTP, consultez la documentation sur les fonctions d'attributs. La syntaxe du client HTTP est la suivante : hc.GetAsJson($url, $headers)
. L' URL doit être entre guillemets et les en-têtes seront un tableau JSON des en-têtes.
L'insertion de l' URL et du jeton IBM Cloud Function dans cette syntaxe ressemble à ce qui suit :
hc.GetAsJson("https://123123123.us-south.apigw.appdomain.cloud/attribute-functions/date",
{"X-IBM-Client-Id":"1748b19e-xxxx-xxxx-xxxx-e5d0f17e900e"})
En option, si vous utilisez quelque chose de plus avancé où vous devez passer des attributs Verify à la fonction IBM Cloud pour qu'elle puisse être évaluée, comme dans le cas des paramètres, la syntaxe ressemblerait à ce qui suit. Nous devons transmettre un attribut personnalisé de Verify qui contient l'attribut du pays de l'utilisateur dans la chaîne de requête du point de terminaison de l'API.
hc.GetAsJson("https://123123.us-east.apigw.appdomain.cloud/hello/world?country="+userOp.GetCustomValue('deptCountry'),
{"x-ibm-client-id":"ffec5287-349d-497b-xxxx-0c6b3b8ad045"})
Introduisez votre expression dans l'éditeur de code. Dans la section "Assurez-vous que cela fonctionne", cliquez sur Afficher. Cliquez sur Test pour voir les résultats de l'appel HTTP.

Comme il s'agit de JSON, vous pouvez ajouter la syntaxe JSON pour référencer des objets dans la réponse. En d'autres termes, si vous vouliez créer un attribut spécifique pour indiquer si c'est le jour de Noël ou non, cela ressemblerait à ce qui suit :
hc.GetAsJson("https://123123.us-south.apigw.appdomain.cloud/attribute-functions/date",
{"X-IBM-Client-Id":"1748b19e-xxxx-xxxx-xxxx-e5d0f17e900e"}).isChristmas
Bien que nous puissions effectuer beaucoup de logique commerciale avec les fonctions IBM Cloud, nous pouvons appliquer des conditions supplémentaires au résultat à l'aide des règles d'attributs Verify natives. Par exemple, si nous voulions modifier le résultat du booléen isChristmas, nous pourrions faire quelque chose comme ce qui suit :
hc.GetAsJson("https://123123.us-south.apigw.appdomain.cloud/attribute-functions/date",
{"X-IBM-Client-Id":"1748b19e-4303-4a8b-9e8b-e5d0f17e900e"}).isChristmas == true ? "Ho ho ho!" : "You got coal"
Une fois enregistré, cet attribut peut être utilisé pour l'authentification unique et le provisionnement. Les possibilités sont infinies avec IBM Cloud Functions et IBM Security Verify. L'enrichissement du profil de l'utilisateur avec des données externes ouvre radicalement la voie à d'autres cas d'utilisation, comme l'apport d'informations sur les consentements externes, l'intégration d'outils de marketing, les informations sur les cartes de paiement, le statut de fidélité et d'autres sources de données que Verify ne possède pas au niveau local.
Updated about 1 month ago