Configurer un fournisseur OIDC OAuth pour accepter les jetons tiers

  • Rversion finale: Yokohama
  • Mis à jour 30 janv. 2025
  • 4 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 Authentification unique (SSO de plusieurs fournisseurs).

    Avant de commencer

    Rôle requis : admin

    Pourquoi et quand exécuter cette tâche

    Prend Now Platform en charge OIDC via notre implémentation Single Sign-On (SSO) 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 à SSO, consultez Créer une configuration OpenID Connect (OIDC) pour Single Sign-On (SSO).

    Procédure

    1. Accédez à la Tout > OAuth système > Registre d'application.
      • Sélectionnez Nouveau, sélectionnez 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 L’ID client de l’application enregistré sur le serveur OAuth OIDC tiers. Cette valeur doit être la même que 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 adressées à 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 la configuration de votre fournisseur OIDC pour valider que la réclamation de l’utilisateur et le champ de l’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 validation du ServiceNow jeton JWT valide également le JTI envoyé par le fournisseur.
      • URL des métadonnées OIDC : détails de la configuration 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 de secondes, pour que la contrainte soit considérée comme valide. La valeur par défaut est 300.
      Appliquer les restrictions de jeton Sélectionnez cette option pour activer uniquement l’utilisation des jetons avec les API définies pour activer le profil d’authentification. Vous pouvez définir l’octroi de l’accès à l’aide d’une stratégie 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 cette 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 sur 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 aucun champ d’application.
      Vous pouvez modifier ou ajouter un profil de fournisseur OAuth comprenant le nom, le type d’accord et le périmètre OAuth.
    4. Facultatif : Accédez à la liste connexe sur 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 lorsque vous créez ou mettez à jour un profil. Chaque champ d’application OAuth défini contient un nom et un champ d’application que vous devez obtenir de la spécification du fournisseur, telle qu’un champ d’application en lecture ou en écriture. Chaque périmètre 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 utilisateur ServiceNow . 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 de , JWT tokenles champs cibles sont ceux de la sys_user table.
      Rôles d'utilisateur appliqués aux utilisateurs attribués Les rôles d’utilisateur appliqués aux utilisateurs nouvellement mis en ServiceNow service.

    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 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 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 relecture.
    • 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 application/json valide est renvoyée. Sinon, un message d’erreur utilisateur non authentifié est renvoyé.
        User Not Authenticated
        {"error":{"message":"User Not Authenticated","detail":"Required to provide Auth information"},"status":"failure"}