Configurer un fournisseur OIDC OAuth pour accepter un jeton tiers

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 5 minutes de lecture
  • Vous pouvez configurer un fournisseur OIDC OAuth pour qu’il accepte les jetons d’identité générés par un fournisseur OIDC tiers à l’aide d’appels d’API entrants à l’aide de l’option Single Sign-On (SSO de plusieurs fournisseurs).

    Avant de commencer

    Rôle requis : administrateur

    Pourquoi et quand exécuter cette tâche

    Ils Now Platform prennent en charge OIDC via notre implémentation SSO (Single Sign-On) externe en plus des appels d’API entrants. Pour obtenir un exemple de configuration de fournisseur OIDC, consultez Configuration d’Azure AD. Pour obtenir un exemple de configuration de fournisseur OIDC spécifique à l’authentification unique, consultez Créer une configuration OpenID Connect (OIDC) pour l’authentification unique (SSO).

    Procédure

    1. Accédez à la Tout > OAuth système > Registre d'application.
      • Sélectionnez Nouveau, Configurer un fournisseur OIDC pour vérifier les jetons d’ID, puis remplissez le formulaire.
      • Sélectionnez un modèle existant pour un fournisseur OIDC (ADFS, Auth0, Azure AD, Google, Okta), puis remplissez le formulaire.
        Remarque :
        les modèles de fournisseur OIDC sont disponibles après le chargement des données de démonstration avec le module d'extension OAuth 2.0.
      Champ Description
      Nom Nom unique qui identifie l’entité OIDC OAuth.
      ID client ID client de l’application enregistré sur le serveur OAuth OIDC tiers. Cette valeur doit être identique à la valeur de la réclamation aud dans le jeton JWT.
      Script de l'API OAuth Script que vous pouvez utiliser pour personnaliser les demandes et les réponses à un fournisseur OAuth externe.
      Configuration du fournisseur OIDC OAuth Les fournisseurs OIDC (ADFS, Auth0, Azure AD, Google, Okta) peuvent être utilisés pour valider le jeton JWT. Sélectionnez l’enregistrement de votre configuration de fournisseur OIDC pour valider que la réclamation de l’utilisateur et le champ d’utilisateur sont définis de manière appropriée.
      Assurez-vous également de remplir les champs suivants :
      • Activer la vérification de la réclamation JTI : lorsque cette option est activée, la ServiceNow validation du jeton JWT valide également le JTI envoyé par le fournisseur.
      • URL des métadonnées OIDC : détails de la configuration bien connue du fournisseur OIDC.
      Remarque :
      Si la validation n’est pas vérifiée, le jti ne peut pas être validé, qu’il soit présent ou non dans le jeton JWT. Le nom de la réclamation dans le jeton doit être jti.
      Décalage d'horloge Nombre, en secondes, pendant lequel la contrainte doit être considérée comme valide. La valeur par défaut est 300.
      Appliquer les restrictions de jeton Sélectionnez cette option pour autoriser uniquement l’utilisation des jetons avec des API définies pour activer le profil d’authentification. Vous pouvez définir l’octroi d’accès à l’aide d’une politique d’accès API. Pour plus d’informations, consultez Créer une politique d’accès REST API.

      Par défaut : non sélectionné.

      Actif Cochez la case pour activer l’application OAuth.
      Type de client Choisissez le type de client en fonction du type de votre client. Options :
      • Iframe incorporé
      • Intégration en tant qu'utilisateur
      • Intégration en tant que service
      Pour en savoir plus, reportez-vous à la section Configurer le type de client pour les enregistrements OAuth et SSO.
    2. Sélectionnez Soumettre.
      L’enregistrement est enregistré dans la table Registres d’application [oauth_entity].
      Lorsque votre instance émet des jetons et des codes d’autorisation, elle crée un enregistrement dans la table Registres d’application [oauth_entity] avec le type Fournisseur OIDC externe. Consultez pour plus d'informations.
    3. Facultatif : Accédez à la liste connexe de l’enregistrement Profils des entités OAuth pour valider un profil par défaut généré par le système pour le nouveau fournisseur OAuth sans champ d’application.
      Vous pouvez modifier ou ajouter un profil de fournisseur OAuth incluant le nom, le type d’accord et le champ d’application OAuth.
    4. Facultatif : Accédez à la liste connexe de l’enregistrement Périmètres des entités OAuth pour définir tous les champs d’application OAuth disponibles pour ce fournisseur OAuth.
      Les champs d’application définis peuvent être sélectionnés lors de la création ou de la mise à jour d’un profil. Chaque champ d’application OAuth défini contient un nom et un champ d’application que vous devez obtenir à partir de la spécification du fournisseur, par exemple un champ d’application de lecture ou un champ d’application d’écriture. Chaque champ d’application doit être défini séparément.
    5. Facultatif : Accédez à la liste connexe de l’enregistrement Attribution d’utilisateurs pour activer l’attribution automatique d’utilisateurs.
      OptionDescription
      Attribuer automatiquement les utilisateurs Option permettant d’activer l’authentification forcée pour les utilisateurs.
      Mettre en service la source de données La source de données à utiliser pour transformer un jeton OIDC en ServiceNow utilisateur. Utilisez la liste de recherche pour sélectionner le modèle de source de données prédéfini, puis ouvrez l’enregistrement pour configurer le mappage de la table transformée. Lors de la configuration du mappage de transformation, les champs sources proviennent du JWT token, les champs cibles proviennent de la sys_user table.
      Rôles d'utilisateur appliqués aux utilisateurs attribués Les rôles d’utilisateur appliqués aux nouveaux utilisateurs approvisionnés ServiceNow .

    Voici un exemple de requête cURL pour invoquer un appel d’API REST

    Invoquez un appel d’API REST.

    Procédez comme suit :

    • Enregistrez l’application dans le fournisseur OpenID Connect.
    • Configurez l’entité OIDC OAuth.
    • Configurez le fournisseur OIDC :
      Tableau 1. Fournisseur OIDC
      Fournisseur OIDC Nom du fournisseur OIDC.
      URL des métadonnées OIDC Spécifiez l’URL des métadonnées OIDC (URL de configuration bien connue). Ces informations sont utilisées pour extraire les clés publiques afin de valider le jeton via le point de terminaison JWKS .
      Réclamation de l'utilisateur La réclamation qui est validée par rapport à la table utilisateur.
      Champ d'utilisateur Réclamation de l’utilisateur qui identifie l’enregistrement de l’utilisateur.
      Activer la vérification de la réclamation JTI Lorsqu’elle est activée, la validation du jeton JWT ServiceNow valide également le JTI envoyé par le fournisseur.
      Remarque :
      Si la validation n’est pas vérifiée, le jti ne peut pas être validé, qu’il soit présent ou non dans le jeton JWT. Le nom de la réclamation dans le jeton doit être jti. Ces informations sont utilisées pour prévenir les attaques par rejeu.
    • Obtenez un jeton JWT.
    • Invoquez un appel d’API REST.
      • Jeton d’ID dans l’en-tête d’autorisation pour accéder à l’API de table ou au service Web scripté.
        curl -X GET --header "Accept:application/json" https://<instance_name>.service-now.com/api/now/table/incident/897b04f2dbd4a300a135364e9d961952 -k 
        --header "Authorization: Bearer eyJraWQiOiJjNTZtZTlXU0xPVnY3UFMwcTg4Qzl1b0lzNjFQYTdmUG4yZFVFOW9RNUg4IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiIwMHVnZDg1OD
        VkczI1WXpUSjBoNyIsIm5hbWUiOiJpbXJhbiBhbGkiLCJsb2NhbGUiOiJlbi1VUyIsImVtYWlsIjoiaW1yb241NDNAZ21haWwuY29tIiwidmVyIjoxLCJpc3MiOiJodHRwczovL2Rldi05MzQ
        xMjEub2t0YXByZXZpZXcuY29tIiwiYXVkIjoiMG9hZ2Q4bzk3a2lCT3dwd0IwaDciLCJpYXQiOjE1Mzc5MzMzMjYsImV4cCI6MTUzNzkzNjkyNiwianRpIjoiSUQueThVdXpWNUg2bm16SzRs
        OTI1RFVrQnJoR1o1MmJzVVpGVHRVTEphQjg3ayIsImFtciI6WyJwd2QiXSwiaWRwIjoiMDBvZ2Q4NTgycEFqZDZTemcwaDciLCJub25jZSI6InNub3ciLCJwcmVmZXJyZWRfdXNlcm5hbWUiO
        iJpbXJvbjU0M0BnbWFpbC5jb20iLCJnaXZlbl9uYW1lIjoiaW1yYW4iLCJmYW1pbHlfbmFtZSI6ImFsaSIsInpvbmVpbmZvIjoiQW1lcmljYS9Mb3NfQW5nZWxlcyIsInVwZGF0ZWRfYXQiOj
        E1Mzc5MzAxOTcsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhdXRoX3RpbWUiOjE1Mzc5Mjk2NjF9.OG87SYxWFgHGlhBYby2H79diRm9rlYZTeEkIINRUatwg-p4739htB8xEY-5_t6yU_6k5w1
        0pdgtt5M5QFZRPXVbQZNoGtY-Bxn0BjaimcFgoWfhY_0ldnGTkzN2RYyIHvrf9-yhxg347zvczmLrgMMa_VwG4rxrtE6rUXaIpIeIK5b-Deq8ADz8UTUTKpF_5RWk4X-oh5xK6BLniFHk4ShO
        Zq2v_mjproXwKk5euJKrVrar2lQ4adZCOSTRuTf3ThMO5WDh0sel-82LngXtLzRJJ51IqxAsXns0kJHLLqLtH1hXNRKfwT1ScQoE_OfWm4t0KryI2j4wSMEanFtLXIw"
      • Si l’utilisateur est authentifié, une réponse/json d’application/json valide est renvoyée. Dans le cas contraire, un message d’erreur d’utilisateur non authentifié est renvoyé.
        User Not Authenticated
        {"error":{"message":"User Not Authenticated","detail":"Required to provide Auth information"},"status":"failure"}