Creazione programmatica di client OAuth per IAP

In questa pagina viene descritto come creare in modo programmatico client OAuth da utilizzare con IAP, così puoi configurare IAP in modo programmatico end-to-end per le applicazioni interne.

Limitazioni note

Esistono alcune limitazioni note ai client OAuth creati in modo programmatico:

  • I client OAuth creati dall'API possono essere modificati solo utilizzando l'API. Non puoi modificare un client OAuth tramite Google Cloud Console se lo crei utilizzando l'API.
  • Quando utilizzi l'API, sono consentiti solo 500 client OAuth per progetto.
  • Le marche di schermate di consenso OAuth create dall'API hanno limitazioni specifiche. Per ulteriori informazioni, consulta la sezione di seguito.

Informazioni sui brand e sullo stato del branding

La schermata di consenso OAuth, che contiene informazioni sul branding per gli utenti, è nota come brand. I brand possono essere limitati a utenti interni o utenti pubblici. Un brand interno rende il flusso OAuth accessibile a chi appartiene alla stessa organizzazione Google Workspace del progetto. Un brand pubblico rende disponibile il flusso OAuth a chiunque su Internet.

I brand possono essere creati manualmente o a livello di programmazione tramite un'API. I brand creati mediante l'API vengono configurati automaticamente con impostazioni diverse:

  • Sono impostati come interni e devono essere impostati manualmente su Google, se preferiti
  • Sono impostati su uno stato "non rivisto" e deve essere attivata una revisione del brand.

Per impostare manualmente un brand interno come pubblico:

  1. Apri la schermata di consenso OAuth.
  2. Seleziona il progetto desiderato nel menu a discesa.
  3. Nella pagina Schermata di consenso OAuth, tieni presente che il Tipo di utente viene impostato automaticamente su Interno. Per impostarlo come Pubblico, fai clic su Modifica app. Saranno disponibili altre opzioni di configurazione.
  4. In Tipo di applicazione, fai clic su Pubblico.

Per attivare una revisione del brand per un brand creato da un API non rivisto:

  1. Apri la schermata di consenso OAuth.
  2. Seleziona il progetto desiderato nel menu a discesa.
  3. Nella pagina Schermata di consenso OAuth, inserisci le informazioni richieste, quindi fai clic su Invia per la verifica.

La procedura di verifica può richiedere diverse settimane. Riceverai aggiornamenti via email nel corso dell'avanzamento. Scopri di più sulla verifica. Durante la procedura di verifica, puoi comunque utilizzare l'applicazione all'interno della tua organizzazione Google Workspace. Scopri di più sul comportamento dell'applicazione prima della verifica.

Prima di iniziare

Prima di poter creare un client, devi assicurarti che al chiamante siano state concesse le seguenti autorizzazioni:

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

Queste autorizzazioni sono incluse nei ruoli di base dell'editor (roles/editor) e del proprietario (roles/owner), ma ti consigliamo di creare un ruolo personalizzato che contenga queste autorizzazioni e concederlo al chiamante.

Configurare OAuth per IAP

I seguenti passaggi spiegano come configurare la schermata per il consenso e creare e autenticare il client per IAP.

  1. Controlla se hai già un brand esistente utilizzando il comando list. Puoi avere un solo brand per progetto.

    gcloud alpha iap oauth-brands list
    

    Di seguito è riportato un esempio di risposta gcloud, se il brand esiste:

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_ID]
    applicationTitle: [APPLICATION_TITLE]
    supportEmail: [SUPPORT_EMAIL]
    orgInternalOnly: true
    
  2. Se non esiste un brand, utilizza il comando create:

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

    I campi riportati sopra sono obbligatori quando chiami questa API:

    • supportEmail: l'email dell'assistenza visualizzata nella schermata di consenso OAuth. Può trattarsi dell'indirizzo di un utente o di un alias di Google Gruppi. Anche gli account di servizio hanno un indirizzo email, ma non sono indirizzi email validi e non possono essere utilizzati durante la creazione di un brand. Tuttavia, un account di servizio può essere proprietario di un gruppo Google. Crea un nuovo gruppo Google o configura un gruppo esistente e imposta l'account di servizio desiderato come proprietario del gruppo.

    • applicationTitle: nome dell'applicazione visualizzato nella schermata di consenso OAuth.

    La risposta contiene i seguenti campi:

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

Creazione di un client OAuth in-app

  1. Usa il comando create per creare un client. Utilizza il brand name del passaggio precedente.

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

    La risposta contiene i seguenti campi:

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_NAME]/identityAwareProxyClients/[CLIENT_ID]
    secret: [CLIENT_SECRET]
    displayName: [NAME]
    
  2. Utilizza l'ID client (client_id nell'esempio sopra) e secret per abilitare IAP. Vedi i seguenti argomenti per ulteriori informazioni sull'attivazione di IAP utilizzando le credenziali appena create:

Autenticazione

Dopo aver configurato IAP per un'app, è necessario autenticare tutte le richieste. I passaggi seguenti spiegano come accedere a un'applicazione protetta da IAP in modo programmatico.

Autenticazione degli utenti finali

Dopo aver seguito i passaggi precedenti, consulta questo argomento per ulteriori informazioni su come autenticarsi utilizzando OAuth 2.0. Assicurati di richiedere un token di aggiornamento per consentire l'automazione. È richiesto il consenso manuale durante il flusso OAuth, tuttavia il token di aggiornamento può essere utilizzato per ottenere token di accesso aggiornati a livello di programmazione.

Account di servizio e gcloud

Per eseguire l'autenticazione utilizzando un account di servizio e gcloud:

  1. Crea un account di servizio e concedigli le autorizzazioni richieste.
  2. Crea una chiave dell'account di servizio, scaricandola nel percorso che preferisci.
  3. Esegui questo comando gcloud, specificando il percorso della chiave dell'account di servizio:

    gcloud auth activate-service-account [ACCOUNT-NAME]
        --key-file=/path/to/service-key.json --project=[PROJECT_ID]
    
  4. Effettua richieste API utilizzando 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