Aller au contenu principal

Se connecter à une autre Api Manager (APIM BSCC)

Ce plugin permet d'accéder aux APIs exposées par Apim (API manager de la BSCC). L'API Gateway va s'authentifier sur Apim grâce aux informations fournies dans le namespace dédié et récupérer un token qui servira d'accès aux APIs exposées par Apim. Ce token sera mis en cache et injecté dans la requête finale à l'API.

Cas d'usages

  • API Apim BSCC
  • API ControlAdresse v1

Principe de fonctionnement

L'API déclare dans son raccordement les données relatives au plugin sous le namespace authTokenParams dans les données optionnelles (extra). Les attributs du namespace authTokenParams sont les suivants :

  • password (string) : Mot de passe du client Apim "Okapi"

  • scopes (string[]) (facultatif) : Donnée spécifique qui permet de discriminer l'API finale interrogée

  • strictSSL (boolean?) (facultatif) : si true, vérifie si il y a un certificat SSL. Renvoie une 401 dans le cas contraire

  • url (string) : URL d'authentification sur Apim sur lequel l'API Gateway va récupérer son token

  • username (string) : Nom d'utilisateur du client Apim "Okapi"

Schéma du parcours {#schéma-du-parcours}

sequenceDiagram participant CL AS Client participant AGW AS API-Gateway participant APM AS APIM Manager participant APF AS Provider-API CL->>AGW: GET/POST $_OKAPI_BASE_URL/$_API/$_VERSION activate AGW note over AGW: Applique le plugin APIM AGW->>APM: POST $_AUTH_TOKEN_PARAMS_URL activate APM note over APM: Génère token APM->>AGW: token deactivate APM AGW->>APM: $_METHOD $_API_ENDPOINT_ activate APM note over APM: Vérifie token APM->>APF: Requête activate APF note over APF: Forward APF->>APM: Réponse de l'API deactivate APF note over APM: Forward APM->>AGW: Réponse de l'API deactivate APM note over AGW: Forward AGW->>CL: Réponse de l'API deactivate AGW

Configuration dans le raccordement de l'API

Configuration pour l'endpoint

api:
name: My Api
urlContext: myapi
version: "1"
...
extra:
authTokenParams:
url: <URL>
strictSSL: true
scopes: <SCOPES>
username: <USERNAME>
password: <PASSWORD>

Configuration pour l'endpoint sandbox

On a aussi la possibilité de configurer une API sandbox comme suit :

api:
name: My Api
urlContext: myapi
version: "1"
...
extra:
sandbox:
authTokenParams:
url: <URL>
strictSSL: true
scopes: <SANDBOX_SCOPES>
username: <SANDBOX_USERNAME>
password: <SANDBOX_PASSWORD>