Créer par programmation des clients OAuth pour IAP

Cette page décrit comment créer par programmation des clients OAuth à utiliser avec IAP, vous permettant de configurer de bout en bout IAP par programmation pour les applications internes.

Limites connues

Il existe quelques limitations connues pour les clients OAuth créés par programmation :

  • Les clients OAuth créés par l'API ne peuvent être modifiés qu'à l'aide de l'API. Vous ne pouvez pas modifier un client OAuth via Cloud Console si vous le créez à l'aide de l'API.
  • Seuls 500 clients OAuth sont autorisés par projet lors de l'utilisation de l'API.
  • Les marques d'écran d'autorisation OAuth créées par l'API ont des limitations spécifiques. Pour en savoir plus, consultez la section ci-dessous.

Comprendre les marques et leur état

L'l'écran d'autorisation OAuth, qui contient des informations sur les marques pour les utilisateurs, est appelé marque. Les marques peuvent être limitées aux utilisateurs internes ou publics. Une marque interne rend le flux OAuth accessible à une personne qui appartient à la même organisation Google Workspace que le projet. Une marque publique rend le flux OAuth disponible à tous sur Internet.

Les marques peuvent être créées manuellement ou par programmation via une API. Les marques créées par l'API sont automatiquement configurées avec différents paramètres :

  • Elles sont définies sur interne et doivent être définis manuellement sur public si vous le souhaitez.
  • Elles sont définies sur un état "non révisé" et un examen de la marque doit être déclenché.

Pour définir manuellement une marque interne sur public :

  1. Ouvrez l'écran d'autorisation OAuth.
  2. Sélectionnez le projet souhaité dans le menu déroulant.
  3. Sur l'écran d'autorisation OAuth, notez que le Type d'utilisateur est automatiquement défini sur Interne. Pour le définir sur Public, cliquez sur Modifier l'application. D'autres options de configuration sont disponibles.
  4. Sous Type d'application, cliquez sur Public.

Pour déclencher une révision de marque pour une marque non révisée créée par l'API :

  1. Ouvrez l'écran d'autorisation OAuth.
  2. Sélectionnez le projet souhaité dans le menu déroulant.
  3. Sur la page Écran d'autorisation OAuth, saisissez les informations requises, puis cliquez sur Soumettre pour validation.

Le processus de validation peut prendre plusieurs semaines. Vous recevrez des informations concernant la progression de l'opération par e-mail. En savoir plus sur la validation. Tant que le processus de validation est en cours, vous pouvez toujours utiliser l'application dans votre organisation Google Workspace. En savoir plus sur le comportement de votre application avant sa validation.

Avant de commencer

Avant de pouvoir créer un client, assurez-vous d'abord que l'appelant a reçu les autorisations suivantes :

  • clientauthconfig.brands.list
  • clientauthconfig.brands.create
  • clientauthconfig.brands.get
  • clientauthconfig.clients.create
  • clientauthconfig.clients.listWithSecrets
  • clientauthconfig.clients.getWithSecret
  • clientauthconfig.clients.delete
  • clientauthconfig.clients.update

Ces autorisations sont incluses dans les rôles de base d'éditeur (roles/editor) et de propriétaire (roles/owner), mais nous vous recommandons de créer un rôle personnalisé qui contient ces autorisations et les accorde à l'appelant à la place.

Configurer OAuth pour IAP

Les étapes suivantes décrivent comment configurer l'écran d'autorisation et créer et autoriser un client pour IAP.

  1. Vérifiez que vous disposez déjà d'une marque à l'aide de la commande list. Vous ne pouvez disposer que d'une seule marque par projet.

    gcloud alpha iap oauth-brands list
    

    Voici un exemple de réponse gcloud, si la marque existe :

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_ID]
    applicationTitle: [APPLICATION_TITLE]
    supportEmail: [SUPPORT_EMAIL]
    orgInternalOnly: true
    
  2. Si aucune marque n'existe, utilisez la commande create :

    gcloud alpha iap oauth-brands create --application_title=APPLICATION_TITLE --support_email=SUPPORT_EMAIL
    

    Les champs ci-dessus sont obligatoires lors de l'appel de cette API :

    • supportEmail : l'adresse e-mail d'assistance affichée sur l'écran d'autorisation OAuth. Il peut s'agir de l'adresse e-mail d'un utilisateur ou d'un alias d'adresses e-mail de Google Groupes. Bien que les comptes de service possèdent également une adresse e-mail, celles-ci ne sont pas valides et ne peuvent pas être utilisées lors de la création d'une marque. Toutefois, un compte de service peut être propriétaire d'un groupe Google. Créez un groupe Google ou configurez un groupe existant, puis définissez le compte de service souhaité en tant que propriétaire du groupe.

    • applicationTitle : nom de l'application affiché sur l'écran d'autorisation OAuth.

    La réponse contient les champs suivants :

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_ID]
    applicationTitle: [APPLICATION_TITLE]
    supportEmail: [SUPPORT_EMAIL]
    orgInternalOnly: true
    

Créer un client OAuth IAP

  1. Utilisez la commande "create" pour créer un client. Utilisez la marque name de l'étape précédente.

    gcloud alpha iap oauth-clients create projects/PROJECT_ID/brands/BRAND-ID --display_name=NAME
    

    La réponse contient les champs suivants :

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_NAME]/identityAwareProxyClients/[CLIENT_ID]
    secret: [CLIENT_SECRET]
    displayName: [NAME]
    
  2. Utilisez l'ID client (client_id dans l'exemple ci-dessus) et le secret pour activer IAP. Consultez les rubriques suivantes pour en savoir plus sur l'activation d'IAP à l'aide des identifiants que vous venez de créer :

Authentification

Une fois IAP configuré pour une application, toutes les requêtes doivent être authentifiées. Les étapes suivantes décrivent comment accéder par programmation à une application protégée par IAP.

Authentification de l'utilisateur final

Après avoir suivi les étapes ci-dessus, consultez cet article pour en savoir plus sur l'authentification à l'aide d'OAuth 2.0. Assurez-vous de demander un jeton d'actualisation pour autoriser l'automatisation. Une autorisation manuelle est requise pendant le flux OAuth, mais le jeton d'actualisation peut être utilisé pour obtenir de nouveaux jetons d'accès par programmation.

Comptes de service et gcloud

Pour vous authentifier à l'aide d'un compte de service et de gcloud :

  1. Créez un compte de service et accordez-lui les autorisations requises.
  2. Créez une clé de compte de service, en la téléchargeant dans le chemin d'accès souhaité.
  3. Exécutez la commande gcloud suivante, en spécifiant le chemin d'accès à la clé de compte de service :

    gcloud auth activate-service-account [ACCOUNT-NAME]
        --key-file=/path/to/service-key.json --project=[PROJECT_ID]
    
  4. Faites des requêtes API à l'aide de gcloud auth print-access-token :

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)"
        https://iap.googleapis.com/v1/projects/[PROJECT_ID_OR_NUMBER]/brands