Génération d'un jeton bearer

Dans les rares cas où vous ne pouvez pas utiliser les jetons d'autorisation ZenApiKey , vous pouvez générer un jeton de porteur à l'aide de vos informations d'identification IBM watsonx informations d'identification. Vous pouvez utiliser le jeton du porteur pour vous authentifier auprès des IBM watsonx Et accéder aux IBM watsonx et d'accéder aux points d'extrémité.

A propos de cette tâche

Les jetons et les clés d'API sont soumis à des vérifications d'autorisation. L'invocation des points de terminaison de l'API dépend du rôle et des autorisations qui vous sont accordés sur la plateforme et dans les services.

Important : certaines cURL commandes ne fonctionnent qu'avec certaines méthodes d'authentification. Lorsque SAML SSO est activé, vous devez vous authentifier avec une clé API.

Si vous souhaitez vous authentifier avec une clé API pour générer un jeton porteur, générez d'abord la clé API. Pour plus d'informations, voir Générer des clés API pour l'authentification.

Procédure

  1. Si vous souhaitez vous authentifier à l'aide d'un Red Hat® OpenShift® nom d'utilisateur et d'un mot de passe, mais que le OpenShift nom d'utilisateur ne contient pas le préfixe IAM#, vous devez mettre à jour le roksUserPrefix paramètre avec une valeur vide afin de supprimer le préfixe requis.
    1. Exécutez la commande suivante pour effectuer la mise à jour roksUserPrefix directement à partir de la ressource personnalisée d'authentification (CR) :
      oc patch Authentication.operator.ibm.com example-authentication \
      --type=merge \
      -p '{"spec":{"config":{"roksUserPrefix":""}}}'

      Après avoir exécuté la commande, les pods de la plateforme devraient redémarrer automatiquement.

    2. Exécutez la commande suivante pour vérifier que roksUserPrefix a été corrigé :
      oc get Authentication.operator.ibm.com example-authentication \
      -o jsonpath='{.spec.config.roksUserPrefix}'

    Pour plus d'informations, roksUserPrefix consultez Déléguer l'authentification à OpenShift

  2. Appelez l'API en utilisant l'une des commandes suivantes : cURL. Choisissez la commande qui utilise les informations d'identification avec lesquelles vous souhaitez vous authentifier.
    • S'authentifier avec un nom d'utilisateur et un mot de passe :
      curl -k -X POST \
          "https://<instance_route>/icp4d-api/v1/authorize" \
          -H "Content-Type: application/json" \
          -d '{
              "username": "<username>",
              "password": "<password>"
      }'
    • S'authentifier à l'aide d'un mot de passe et valider un certificat auto-signé :
      curl -X POST \
          "https://<instance_route>/icp4d-api/v1/authorize" \
          --cacert /<path_to_root-ca>.crt
          -H "Content-Type: application/json" \
          -d "{
              "username": <username>,
              "password": <password>
      }"

      Si le certificat est signé par une autorité de certification racine appropriée, les paramètres -k et --cacert ne sont pas nécessaires, car curl connaît déjà l'autorité de certification racine.

    • S'authentifier avec une clé API :
      curl -k -X POST \
          "https://<instance_route>/icp4d-api/v1/authorize" \
          -H "Content-Type: application/json" \
          -d '{
            "username":"<username>",
            "api_key":"<api_key>"
      }'

    Remplacez <instance_route> par les détails de l'instance de service. Remplacez <username>, <password>, et <api_key> par vos informations d'identification IBM watsonx informations d'identification. Si vous utilisez un certificat auto-signé, remplacez également <path_to_root-ca> .

Cette commande renvoie une réponse qui contient le jeton bearer.
{
    "_messageCode_": "200",
    "message": "Success",
    "accessToken": "<bearer-token>"
}

Pour plus d'informations sur les /icp4d-api/v1/authorize points de terminaison, consultez la section Obtenir un jeton d'autorisation dans l'API IBM® Software Hub de la plateforme.

Etape suivante

Utilisez le jeton de porteur que vous avez généré dans l'en-tête d'autorisation des appels d'API ultérieurs.

curl -H "Authorization: Bearer <token>" "https://<platform_instance_route>/<endpoint>"