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.
info

Questa sezione descrive come attivare il recupero e la revoca dei token di accesso OAuth 2.0 in base all'ID utente finale, all'ID app o a 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. Attiva la funzionalità di accesso tramite ID utente finale solo se hai un buon caso d'uso. 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 di 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 sviluppatore specifica.

Informazioni sui token di accesso OAuth

Gli ID app vengono aggiunti automaticamente a un token di accesso OAuth. Pertanto, dopo aver attivato l'accesso tramite 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 riportata di seguito 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 riportato 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 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 OAuth 2.0.

Nel token di accesso OAuth predefinito non è presente un campo per l'ID utente finale. 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 query, 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 le chiamate API che eseguono questi recuperi e revoche, consulta i seguenti Smart Docs:

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

Il modo in cui abiliti 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:

  • Deployment basato su cloud

    Un deployment di Edge basato su cloud significa che la maggior parte della configurazione viene gestita da Apigee. È tua responsabilità solo 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 la sezione Operazioni e configurazione.

  • Apigee hybrid

    L'accesso ai token OAuth 2.0 tramite ID utente è abilitato per impostazione predefinita. È tua responsabilità solo 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.

Attivazione dell'accesso nel cloud

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

Questa funzionalità deve essere attivata per ogni organizzazione per la quale vuoi supportarla.

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

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

Solo ai ruoli orgadmin e opsadmin devono essere assegnate le autorizzazioni per eseguire 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 all'API Ottieni autorizzazione per una risorsa per vedere quali ruoli dispongono delle autorizzazioni get e put per la risorsa oauth2.

Se devi aggiungere o rimuovere autorizzazioni, contatta l'assistenza Apigee Edge per richiedere di eseguire gli aggiornamenti.

Passaggio 3: copia i token di accesso OAuth 2.0 esistenti nei tuoi 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 tuoi nodi Cassandra. Questa procedura verrà eseguita sui nodi Cassandra per ogni pod Apigee Edge. In questo modo, le chiamate API di recupero e revoca potranno essere eseguite su tutti i token di accesso OAuth 2.0 esistenti e di nuova generazione.

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

Configura il criterio OAuth 2.0 utilizzato per generare i token di accesso in modo da includere l'ID utente finale nel token. Se includi gli ID utente finale nei token di accesso, potrai eseguire il recupero e la revoca 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 di 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 fornisca l'ID utente finale