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.
Consulta la documentazione di Apigee X.
info

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 abilitare 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 valido. Ad esempio:

  • Una funzionalità per il tuo sito web o la tua app in cui gli utenti possono vedere quali app di terze parti hanno autorizzato e fornire un'opzione per revocare l'accesso a queste app.
  • Una funzionalità che consente a un utente autorizzato di revocare tutti i token di accesso associati a un 'app per sviluppatori specifica.

Informazioni sui token di accesso OAuth

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

Per recuperare e revocare i token di accesso OAuth 2.0 per ID utente finale, è necessario che un ID utente finale sia presente nei token di accesso. La procedura riportata di seguito descrive come aggiungere un ID utente finale a un token esistente token.

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 associata al token. Se abiliti il recupero e la revoca dei token di accesso OAuth 2.0 per ID app, questo è l'ID app che utilizzi.
  • Il campo access_token contiene il valore del token di accesso 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 per ID utente finale, devi configurare il criterio OAuth 2.0 in modo che includa 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 per ID app, non è necessario abilitare l'accesso per ID utente finale.

Passi l'ID utente finale all'endpoint di creazione del token. Puoi passare l'ID dell'utente finale come parametro di query, parametro del modulo o in un'intestazione (come spiegato più avanti in questo argomento). Dopo aver configurato Edge in modo che includa 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 le chiamate API che eseguono questi recuperi e revoche, consulta i seguenti Smart Docs:

Abilitare l'accesso ai token OAuth 2.0 per ID utente e ID app

La modalità di abilitazione dell'accesso ai token OAuth 2.0 per ID utente e ID app dipende dalla modalità di deployment di Edge:

  • Deployment basato sul cloud

    Un deployment di Edge basato sul cloud significa che la maggior parte della configurazione viene gestita da Apigee. Hai la responsabilità di configurare il criterio OAuth 2.0 per aggiungere l'ID utente al token di accesso. Per saperne di più, consulta la procedura riportata di seguito.

  • Deployment di Edge for Private Cloud

    In Apigee Edge for Private Cloud (on-premise), la configurazione è completamente a tuo carico. Per saperne di più, consulta le Operazioni e Configurazione.

  • Apigee hybrid

    L'accesso ai token OAuth 2.0 per ID utente è abilitato per impostazione predefinita. Hai la responsabilità di configurare il criterio OAuth 2.0 per aggiungere l'ID utente al token di accesso. Per saperne di più, consulta il passaggio 5 della procedura riportata di seguito.

Abilitare l'accesso nel cloud

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

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

Contatta l'assistenza di Apigee Edge per aggiornare la tua organizzazione.

Passaggio 2: fornisci le autorizzazioni delle 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 Get Permission for a Resource (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 di Apigee Edge per eseguire 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 pod Apigee Edge. In questo modo, le chiamate API di recupero e revoca verranno eseguite su tutti i token di accesso OAuth 2.0, esistenti e appena generati.

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

Configura il criterio OAuth 2.0 utilizzato per generare i token di accesso in modo che includa l'ID utente finale nel token. Includendo gli ID utente finali nei token di accesso, potrai eseguire recuperi e revoche per ID utente finale.

Per configurare il criterio in modo che includa un ID utente finale in un token di accesso, devi specificare la variabile di input che contiene l'ID utente finale. Utilizza il <AppEndUser> tag 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 <AppEndUser> tag 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 passare le informazioni come parte di una richiesta in molti modi. Ad esempio, in alternativa, puoi:

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