Abilita recupero e revoca dei token di accesso OAuth 2.0 per ID utente finale, ID app o entrambi

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Questa sezione descrive come abilitare il recupero e la revoca dei token di accesso OAuth 2.0 per ID utente finale, ID app o entrambi. La funzionalità ID utente finale richiede una configurazione speciale come descritto in questo argomento. Per utente finale si intende l'utente dell'app che chiama l'API.

Quando attivare l'accesso all'ID utente finale

A volte è utile memorizzare l'ID utente in un token di accesso. Abilita la funzionalità di accesso all'ID utente finale solo se hai un caso d'uso appropriato. Ad esempio:

  • Una funzionalità per il tuo sito web o la tua app che consente agli utenti di vedere quali app di terze parti hanno autorizzato e che offre la possibilità di revocare l'accesso a queste app.
  • Una funzionalità che consente a un utente autorizzato di revocare tutti i token di accesso associati a una specifica app sviluppatore.

Informazioni sui token di accesso OAuth

Gli ID app vengono aggiunti automaticamente a un token di accesso OAuth. Di conseguenza, dopo aver abilitato l'accesso ai token per un'organizzazione come descritto di seguito, puoi revocare i token di accesso in base all'ID app.

Per recuperare e revocare i token di accesso OAuth 2.0 in base all'ID utente finale, è necessario che un ID utente finale sia presente nei token di accesso. La procedura seguente descrive come aggiungere un ID utente finale a un token esistente.

Per impostazione predefinita, quando Edge genera un token di accesso OAuth 2.0, il token ha il formato mostrato di seguito:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

Tieni presente quanto segue:

  • Il campo application_name contiene l'UUID dell'app associato al token. Se attivi il recupero e la revoca dei token di accesso OAuth 2.0 in base all'ID app, questo è l'ID app che utilizzi.
  • Il campo access_token contiene il valore del token di accesso per OAuth 2.0.

Non esiste un campo per l'ID utente finale nel token di accesso OAuth predefinito. Per abilitare il recupero e la revoca dei token di accesso OAuth 2.0 in base all'ID utente finale, devi configurare il criterio OAuth 2.0 in modo da includere l'ID utente nel token, come descritto nella procedura riportata di seguito. Tieni presente che se vuoi solo recuperare e revocare i token di accesso OAuth 2.0 in base all'ID app, non è necessario attivare l'accesso in base all'ID utente finale.

Devi passare l'ID utente finale all'endpoint di creazione del token. Puoi passare l'ID dell'utente finale come parametro di ricerca, parametro di modulo o in un'intestazione (come spiegato più avanti in questo argomento). Dopo aver configurato Edge in modo da includere l'ID utente finale nel token, questo viene incluso come campo app_enduser, come mostrato di seguito:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "app_enduser" : "6ZG094fgnjNf02EK",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

Per scoprire come effettuare chiamate API che eseguono questi recuperi e revoche, consulta i seguenti documenti intelligenti:

Abilitazione dell'accesso ai token OAuth 2.0 in base all'ID utente e all'ID app

Il modo in cui puoi abilitare l'accesso ai token OAuth 2.0 in base all'ID utente e all'ID app dipende dal modo in cui hai eseguito il deployment di Edge:

  • Implementazione basata su cloud

    Il deployment di Edge basato su cloud fa sì che la maggior parte della configurazione sia gestita da Apigee. Sei responsabile solo della configurazione del criterio OAuth 2.0 per aggiungere lo User-ID al token di accesso. Per ulteriori informazioni, consulta la procedura riportata di seguito.

  • Perimetro per il deployment nel cloud privato

    In Apigee Edge per il cloud privato (on-premise), sei completamente responsabile della configurazione. Per ulteriori informazioni, consulta la sezione Operazioni e configurazione.

  • Apigee hybrid

    L'accesso ai token OAuth 2.0 in base all'ID utente è abilitato per impostazione predefinita. Sei responsabile solo della configurazione del criterio OAuth 2.0 per aggiungere lo User-ID al token di accesso. Per ulteriori informazioni, vedi il passaggio 5 della procedura seguente.

Abilitazione dell'accesso nel cloud

Passaggio 1: abilita un'organizzazione per supportare questa funzionalità

Questa funzionalità deve essere abilitata per ogni organizzazione che vuoi supportarla.

Contatta l'assistenza Apigee Edge per l'aggiornamento della tua organizzazione.

Passaggio 2: fornisci le autorizzazioni per le risorse oauth2 ai ruoli opsadmin e orgadmin

Solo ai ruoli orgadmin e opsadmin devono essere concesse le autorizzazioni per effettuare queste chiamate di recupero (get) e revoca (put) alla risorsa oauth2 in base all'ID utente finale o all'ID app.

Puoi utilizzare la chiamata API Ottieni autorizzazione per una risorsa per vedere quali ruoli hanno le autorizzazioni get e put per la risorsa oauth2.

Se devi aggiungere o rimuovere autorizzazioni, contatta l'assistenza Apigee Edge affinché eseguano gli aggiornamenti.

Passaggio 3: copia i token di accesso OAuth 2.0 esistenti nei nodi Cassandra

Eseguita dall'assistenza Apigee: in questa attività, le copie dei token di accesso OAuth 2.0 esistenti nelle organizzazioni interessate verranno copiate e archiviate nei nodi Cassandra. Questa procedura verrà eseguita sui nodi Cassandra per ciascuno dei tuoi pod Apigee Edge. Ciò consentirà di recuperare e revocare le chiamate API da eseguire su tutti i token di accesso OAuth 2.0, esistenti e appena generati.

Passaggio 4: aggiungi la proprietà oauth_max_search_limit al server di gestione e all'elaboratore dei messaggi

In questa attività, i file keymanagement.properties per il server di gestione e il processore dei messaggi verranno aggiornati in modo da includere questa proprietà: oauth_max_search_limit = 100. 100 è il valore consigliato da Apigee, ma può essere impostato come ritieni opportuno.

Contatta l'assistenza Apigee Edge per richiedere l'aggiunta.

Passaggio 5: configura un criterio OAuth 2.0 per generare token di accesso che includano gli ID utente finale

Configura il criterio OAuth 2.0 utilizzato per generare token di accesso per includere l'ID utente finale nel token. Includendo gli ID utente finale nei token di accesso, sarai quindi in grado di eseguire recuperi e revoche in base all'ID utente finale.

Per configurare il criterio in modo da includere un ID utente finale in un token di accesso, devi specificare la variabile di input che contiene l'ID utente finale. Utilizza il tag <AppEndUser> per specificare la variabile.

Il criterio OAuth 2.0 riportato di seguito, denominato GenerateAccessTokenClient, genera un token di accesso OAuth 2.0. Nota l'aggiunta del tag <AppEndUser> in grassetto:

<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient">
  <DisplayName>OAuth 2.0.0 1</DisplayName>
  <ExternalAuthorization>false</ExternalAuthorization>
  <Operation>GenerateAccessToken</Operation>
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GenerateResponse enabled="true"/>
  <GrantType>request.queryparam.grant_type</GrantType>
  <AppEndUser>request.header.appuserID</AppEndUser>
  <ExpiresIn>960000</ExpiresIn>
</OAuthV2>

Puoi quindi utilizzare il seguente comando cURL per generare il token di accesso OAuth 2.0, passando l'ID utente come intestazione appuserID:

curl -H "appuserID:6ZG094fgnjNf02EK" /
  https://myorg-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials /
  -X POST /
  -d 'client_id=k3nJyFJIA3p62TKIkLO6OJNi87GYXFmP&client_secret=gk58jK5lIp943AY4'

In questo esempio, appuserID viene passato come intestazione della richiesta. Puoi trasmettere le informazioni all'interno di una richiesta in molti modi. Ad esempio, in alternativa puoi:

  • Utilizza una variabile del parametro del modulo: request.formparam.appuserID.
  • Utilizza una variabile di flusso che fornisce l'ID utente finale