Authentification API est nécessaire pour sécuriser l’accès à l’API de tout utilisateur non autorisé. Il existe plusieurs façons de sécuriser les API. OAuth la validation de jeton est utilisée pour authentifier l’utilisateur. L’une des méthodes consiste à utiliser Azure AD en tant que fournisseur OAuth pour sécuriser un appel d’API. Azure AD fournit un jeton d’authentification lorsque l’utilisateur envoie une demande à l’URL de connexion avec un valide client_id
et client_secret
à la connexion microsoftonline.com.
Architecture
Le diagramme de séquence ci-dessous montre la conception du processus d’authentification OAuth lorsqu’Azure AD est utilisé comme fournisseur OAuth pour authentifier l’accès à l’API REST implémenté dans IBM API Connect.
Figure 1 : Diagramme de séquence d’autorisation Azure AD dans IBM API Connect
Le diagramme de séquence est explicite.
Azure AD ne fournit pas d’URL d’introspection prête à l’emploi. L’URL d’introspection doit être implémentée dans API Connect. Cet article décrit les étapes de création d’un service REST d’introspection dans IBM API Connect dans le diagramme de séquence ci-dessus. Il fournit des étapes pour implémenter l’URL d’introspection dans IBM API Connect et des étapes pour utiliser l’URL d’introspection implémentée dans la configuration du fournisseur API Connect OAuth pour activer Azure AD en tant que fournisseur OAuth pour l’authentification d’API implémentée dans IBM API Connect.
Mise en œuvre
Voici les étapes pour configurer et configurer l’authentification du fournisseur OAuth2 :
1. Création d’URL d’introspection
Pour créer une configuration de fournisseur OAuth tiers dans IBM API Connect, nous avons besoin d’une URL d’introspection. Ce service REST doit introspecter le jeton d’authentification envoyé par le client et générer un jeton JWT valide si l’introspection réussit. Sinon, il doit rejeter la demande d’introspection.
La Service REPOS est créé dans API Connect pour examiner le jeton d’autorisation fourni par l’utilisateur et valider si l’enfant correspond. S’il y a un enfant correspondant, renvoyez l’enfant en tant que jeton JWT.
- https://
/jwtvalidation
L’API REST peut être implémentée à l’aide de l’implémentation de passerelle ci-dessous et publiée sur les passerelles respectives.
Figure 2 : Script de passerelle
1.1 GatewayScript : étape 1
Obtenez l’autorisation à partir des paramètres de requête de requête et définissez-la dans une variable de jeton. Cette variable de jeton sera utilisée dans le Gatewayscript-Step2. Définissez également la variable de jeton dans message.headers.Authorization
variable.
var apim = require('apim'); console.log("======== step1 =========");
var token=apim.getvariable('request.parameters.token'); apim.setvariable('message.headers.Authorization', token);
context.set('token1',token);
1.2 Invoquer
Obtenez la clé de découverte à partir de l’URL en ligne de Microsoft pour votre ID de locataire et stockez-la dans rsa256-key
. Utilisez le Get
méthode.
- https://login.microsoftonline.com/
/discovery/keys
1.3 GatewayScript : étape 2
- Obtenez le jeton d’autorisation stocké à l’étape 1.
- Divisez le jeton d’autorisation du premier point (.) et stockez la partie gauche du token avant le point dans une variable.
- Décodez ce jeton à l’aide de l’algorithme Base64.
- Analysez le jeton à l’aide de l’analyseur JSON et stockez kid dans une variable.
- Comparez l’enfant ci-dessus avec la liste des enfants découverts dans le
rsa256-key
variable défini dans la sortie de l’appel d’appel de découverte précédent. S’il y a un enfant correspondant entre l’enfant symbolique et les enfants découverts, puis placez l’enfant correspondant dans unjwt_key
variable.
var apim = require('apim');
var ctxAuth = context.get('token1');
// =====start step 3==========
// get bearer token from request
var token = ctxAuth;
context.set('myctx.bearerToken', token);
//decode and parse the token to find the key id (kid)
var base64Payload = token.split('.')[0];
var base64 = base64Payload.replace(/-/g, '+').replace(/_/g, "http://dzone.com/");
var payload = Buffer.from(base64, 'base64');
var oppayload = JSON.parse(payload.toString());
var kidInToken = oppayload.kid
session.output.write(kidInToken);
// search in rsa256 Keys
var jwt_keys1 = context.get('rsa256-key.body');
var jwt_keys = JSON.parse(jwt_keys1);
session.output.write(jwt_keys);
//identify the key to provide for validation from the keys list
var jwt_key;
for(var i=0;i<jwt_keys.keys.length;i++){
if(kidInToken == jwt_keys.keys[i].kid){
jwt_key = jwt_keys.keys[i];
break;
}
}
session.output.write(jwt_key);
apim.setvariable('jwk-key', JSON.stringify(jwt_key));
context.message.body.write(jwt_keys);
1.4 Valider JWT
Utilisez le nœud de sécurité « Valider JWT » pour valider la clé JWT en transmettant le message.headers.authorization
et jwk-key
.
1.5. PasserelleScript : étape 3
Obtenir le ‘decoded.claims’
dans le resp
variable et créez une message.body
avec le resp
variable.
var apim = require('apim');
var resp=apim.getvariable('decoded.claims');
resp.active=true;
resp.token_type="bearer";
apim.setvariable('message.body', resp);
2. Ajouter le fournisseur OAuth dans les ressources
2.1 Titre
- Aller à Ressources -> Fournisseurs OAuth –> ajouter –> Fournisseur OAuth tiers.
- Écrivez le Titre comme « AzureAD ».
Figure 3 : Configuration du fournisseur OAuth
2.2. Type de subvention pris en charge
- Indiquez le nom du fournisseur tiers sous Titre –> « AzureAD. »
- Sélectionnez le type de subvention pris en charge comme Application.
Figure 4 : Configuration du fournisseur OAuth
2.3. Valider le jeton
Configurez les points de terminaison pour autoriser et valider le jeton.
Figure 5 : Configuration du fournisseur OAuth
- Définissez un fournisseur OAuth tiers pour émettre et valider des jetons afin de protéger l’accès à l’API.
- URL d’autorisation : https://login.microsoftonline.com/
/oauth2/authorize
- URL d’autorisation : https://login.microsoftonline.com/
- Appelez l’URL du jeton pour obtenir le jeton OAuth.
- https://login.microsoftonline.com/
ID>/oauth2/token
- https://login.microsoftonline.com/
- Fournissez l’URL Introspect qui est développée à l’étape 1 en tant qu’API REST.
- https://
/jwtvalidation
- https://
Figure 6 : Configuration des points de terminaison du fournisseur OAuth
3. Configurer le catalogue pour utiliser le fournisseur OAuth
1. Aller à Gestionnaire –> Sélectionnez
Figure 7 : Sélectionnez le fournisseur OAuth pour le catalogue
2. Sélectionnez le Tierce personne Fournisseur OAuth « AzureAD » en cliquant sur la case à cocher.
Figure 8 : Sélectionnez et enregistrez le fournisseur OAuth pour l’utilisation de l’API
Conclusion
Cet article explique les étapes de mise en œuvre de l’autorisation OAuth pour l’API. Ici, le fournisseur OAuth est Azur. Plus de détails sur les étapes seront publiés dans la prochaine version de cet article.
Références
- Notion de fournisseur OAuth : Concepts OAuth pour API Connect – IBM Documentation
- Analyse du jeton JWT : Jetons Web JSON