Utilisation de l'authentification basée sur un jeton avec l'API REST

Les utilisateurs de REST API peuvent s'authentifier en fournissant un nom d'utilisateur et un mot de passe à la ressource REST API login à l'aide de la méthode HTTP POST. Un jeton LTPA est généré pour permettre à l'utilisateur d'authentifier les demandes futures. Ce jeton LTPA a le préfixe LtpaToken2. L'utilisateur peut se déconnecter en utilisant la méthode HTTP DELETE, et peut demander les informations de connexion de l'utilisateur actuel avec la méthode HTTP GET.

Avant de commencer

  • Configurez les utilisateurs, les groupes et les rôles pour qu'ils soient autorisés à utiliser le REST API. Pour plus d'informations, voir Configuration des utilisateurs et des rôles.
  • Par défaut, le nom du cookie qui inclut le jeton LTPA commence par LtpaToken2et inclut un suffixe qui peut être modifié lorsque le serveur mqweb est redémarré. Ce nom de cookie aléatoire permet à plusieurs serveurs mqweb de s'exécuter sur le même système. Toutefois, si vous souhaitez que le nom du cookie reste cohérent, vous pouvez spécifier le nom du cookie à l'aide de la commande setmqweb . Pour plus d'informations, voir Configuration du jeton LTPA.
  • Par défaut, le cookie de jeton LTPA expire au bout de 120 minutes. Vous pouvez configurer l'heure d'expiration du cookie de jeton LTPA à l'aide de la commande setmqweb . Pour plus d'informations, voir Configuration du jeton LTPA.
  • Vérifiez que vous utilisez une connexion sécurisée lorsque vous envoyez des demandes REST. Lorsque vous utilisez la méthode HTTP POST sur la ressource login, la combinaison du nom d'utilisateur et du mot de passe envoyée avec la requête n'est pas cryptée. Par conséquent, vous devez utiliser une connexion sécurisée HTTPS lorsque vous utilisez l'authentification par jeton avec le site REST API. Par défaut, vous ne pouvez pas utiliser HTTP avec l'authentification par jeton LTPA. Vous pouvez permettre au jeton LTPA d'être utilisé par des connexions HTTP non sécurisées en définissant secureLTPA sur False. Pour plus d'informations, voir Configuration du jeton LTPA.
  • Vous pouvez demander les informations d'identification de l'utilisateur actuel en utilisant la méthode HTTP GET sur la ressource login, en fournissant le jeton LTPA pour authentifier la demande. Cette demande renvoie des informations sur le nom d'utilisateur et les rôles affectés à l'utilisateur. Pour plus d'informations, voir GET /login.

Procédure

  1. Connectez-vous à un utilisateur:
    1. Utilisez la méthode HTTP POST pour la ressource login :
      https://host:port/ibmmq/rest/v3/login
      Incluez le nom d'utilisateur et le mot de passe dans le corps de la demande JSON, au format suivant:
      {
          "username" : "name",
          "password" : "password"
      }
    2. Stocke le jeton LTPA renvoyé par la demande dans le magasin de cookies local. Par défaut, ce jeton LTPA a le préfixe LtpaToken2.
  2. Authentifiez les demandes REST avec le jeton LTPA stocké en tant que cookie avec chaque demande.
    Pour les demandes qui utilisent les méthodes HTTP PUT, PATCH ou DELETE, incluez un en-tête ibm-mq-rest-csrf-token. La valeur de cet en-tête peut être n'importe quoi, y compris vide.
  3. Déconnecter un utilisateur:
    1. Utilisez la méthode HTTP DELETE sur la ressource login :
      https://host:9443/ibmmq/rest/v3/login
      Vous devez fournir le jeton LTPA en tant que cookie pour authentifier la demande et inclure un en-tête ibm-mq-rest-csrf-token . La valeur de cet en-tête peut être n'importe quoi, y compris vide
    2. Traitez l'instruction de suppression du jeton LTPA du magasin de cookies local.
      Remarque: Si l'instruction n'est pas traitée et que le jeton LTPA reste dans le magasin de cookies local, il peut être utilisé pour authentifier les futures demandes REST. C'est-à-dire que lorsque l'utilisateur tente de s'authentifier avec le jeton LTPA après la fin de la session, une nouvelle session est créée qui utilise le jeton existant.

Exemple

L'exemple cURL suivant montre comment créer une nouvelle file d'attente Q1, sur le gestionnaire de files d'attente QM1, avec authentification basée sur un jeton, sur les systèmes Windows :
  • Connectez-vous et ajoutez le jeton LTPA avec le préfixe LtpaToken2au magasin de cookies local. Les informations de nom d'utilisateur et de mot de passe sont incluses dans le corps JSON. L'indicateur -c spécifie l'emplacement du fichier dans lequel stocker le jeton:
    curl -k https://localhost:9443/ibmmq/rest/v3/login -X POST 
    -H "Content-Type: application/json" --data "{\"username\":\"mqadmin\",\"password\":\"mqadmin\"}" 
    -c c:\cookiejar.txt
  • Créez une file d'attente. Utilisez la méthode HTTP POST avec la ressource mqsc, en vous authentifiant avec le jeton LTPA. Le jeton LTPA avec le préfixe LtpaToken2 est extrait du fichier cookiejar.txt à l'aide de l'indicateur -b . La protection CSRF est assurée par la présence de l'en-tête HTTP ibm-mq-rest-csrf-token :
    curl -k https://localhost:9443/ibmmq/rest/v3/admin/admin/action/qmgr/QM1/mqsc -X POST -b 
    c:\cookiejar.txt -H "ibm-mq-rest-csrf-token: value" -H "Content-Type: application/json" 
    --data "{\"type\": \"runCommandJSON\", \"command\": \"define\", \"qualifier\": \"qlocal\", \"name\": \"Q1\"}"
  • Déconnectez-vous et supprimez le jeton LTPA du magasin de cookies local. Le jeton LTPA est extrait du fichier cookiejar.txt à l'aide de l'indicateur -b . La protection CSRF est assurée par la présence de l'en-tête HTTP ibm-mq-rest-csrf-token. L'emplacement du fichier cookiejar.txt est spécifié par l'indicateur -c afin que le jeton LTPA soit supprimé du fichier:
    curl -k https://localhost:9443/ibmmq/rest/v3/login -X DELETE 
    -H "ibm-mq-rest-csrf-token: value" -b c:\cookiejar.txt 
    -c c:\cookiejar.txt