Abilita l'accesso ai token OAuth 2.0 in base all'ID utente e all'ID app

Edge per Private Cloud v. 4.16.09

Questo documento descrive come attivare il recupero e la revoca dei token di accesso OAuth 2.0 tramite ID utente finale, ID app o entrambi.

Gli ID app vengono aggiunti automaticamente a un token di accesso OAuth. Pertanto, dopo aver utilizzato seguente per abilitare l'accesso ai token per un'organizzazione, puoi accedere ai token in base all'ID app.

Per recuperare e revocare i token di accesso OAuth 2.0 in base all'ID utente finale, deve essere presente un ID utente finale nel token di accesso. La procedura seguente descrive come aggiungere un ID utente finale a un token esistente oppure a nuovi token.

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

{
  "issued_at" : "1421847736581",
  "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
  "scope" : "READ",
  "status" : "approved",
  "api_product_list" : "[PremiumWeatherAPI]",
  "expires_in" : "3599",
  "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",
  "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 di token di accesso OAuth 2.0 per ID app, si tratta dell'ID app che utilizzi.
  • Il campo access_token contiene il valore del token di accesso OAuth 2.0.

Per attivare il recupero e la revoca dei token di accesso OAuth 2.0 in base all'ID utente finale, configura il Criterio OAuth 2.0 per includere l'ID utente nel token, come descritto nella procedura riportata di seguito.

L'ID utente finale è la stringa che Edge utilizza come ID sviluppatore, non come email dello sviluppatore. . Puoi determinare l'ID sviluppatore dall'indirizzo email dello sviluppatore utilizzando il pulsante Ricevi Chiamata all'API Developer.

Dopo aver configurato Edge in modo da includere l'ID utente finale nel token, quest'ultimo viene incluso come 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",
  "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",
  "refresh_count" : "0"
}

API da recuperare e revocare Token di accesso OAuth 2.0 per ID utente e ID app

Utilizza le seguenti API per accedere ai token OAuth in base a ID utente, ID app o entrambi:

Procedura per l'abilitazione dell'accesso al token

Utilizza la seguente procedura per abilitare il recupero e la revoca dei token di accesso OAuth 2.0 tramite ID utente finale e ID app.

Passaggio 1 – Attivare il supporto dell'accesso ai token per un'organizzazione

Devi abilitare l'accesso ai token separatamente per ogni organizzazione. Chiama l'API PUT di seguito per ogni organizzazione su cui desideri abilitare il recupero e la revoca dei token di accesso OAuth 2.0 per ID utente finale o ID app.

L'utente che effettua la chiamata seguente deve avere il ruolo orgadmin o opsadmin per l'organizzazione. Sostituisci i valori in {curly braces} con i valori specifici dell'organizzazione:

> curl -H "Content-type:text/xml" -X POST \
  https://<ms-ip>:8080/v1/organizations/{org_name} \
  -d '<Organization name="{org_name}">
      <Properties>
        <Property name="features.isOAuthRevokeEnabled">true</Property>
        <Property name="features.isOAuth2TokenSearchEnabled">true</Property>
      </Properties>
    </Organization>' \ 
  -u {userEmail}:{mypassword}

Passo avanti 2: imposta le autorizzazioni per il ruolo opsadmin nell'organizzazione

Solo i ruoli orgadmin e opsadmin in un'organizzazione devono disporre delle autorizzazioni per recuperare (HTTP GET) e revocare (HTTP PUT) i token OAuth 2.0 in base sull'ID utente o sull'ID app. Per controllare l'accesso, imposta le autorizzazioni get e metti sulla risorsa /oauth2 per di un'organizzazione. La risorsa ha un URL nel formato:

https://<ms-ip>:8080/v1/organizations/{org_name}/oauth2

Il ruolo orgadmin dovrebbe già disporre delle autorizzazioni necessarie. Per opsadmin per la risorsa /oauth2, le autorizzazioni dovrebbero avere il seguente aspetto questo:

<ResourcePermission path="/oauth2">
    <Permissions>
        <Permission>get</Permission>
        <Permission>put</Permission>
    </Permissions>
</ResourcePermission>

Puoi utilizzare lo strumento Ottieni Autorizzazione per una chiamata API Single Resource per vedere quali ruoli dispongono delle autorizzazioni per la /oauth2.

In base alla risposta, puoi utilizzare il pulsante Aggiungi Autorizzazioni per una risorsa collegata a un ruolo e Elimina l'autorizzazione per le chiamate API Resource per apportare le modifiche necessarie a /oauth2 autorizzazioni per le risorse.

Utilizza il seguente comando cURL per concedere al ruolo opsadmin le autorizzazioni get e put per la risorsa /oauth2. Sostituisci i valori in {curly braces} con i valori specifici della tua organizzazione:

> curl -X POST -H 'Content-type:application/xml' \
  http://<ms-ip>:8080/v1/organizations/{org}/userroles/opsadmin/permissions \
  -d '<ResourcePermission path="/oauth2">
      <Permissions>
        <Permission>get</Permission>
        <Permission>put</Permission>
      </Permissions>
    </ResourcePermission>' \
  -u {USEREMAIL}:{PWD} 

Utilizza il seguente comando cURL per revocare le autorizzazioni get e put per la risorsa /oauth2 da ruoli diversi da orgadmin e opsadmin. Sostituisci i valori in {curly braces} con i valori specifici dell'organizzazione:

> curl -X DELETE -H 'Content-type:application/xml' \
  http://<msip>:8080/v1/organizations/{org-name}/userroles/{roles}/permissions \
  -d '<ResourcePermission path="/oauth2">
      <Permissions></Permissions>
    </ResourcePermission>' \
   -u {USEREMAIL}:{PWD} 

Passaggio 3: imposta proprietà oauth_max_search_limit

Assicurati che la regola conf_keymanagement_oauth_max_search_limit proprietà in /&lt;inst_dir&gt;/apigee/customer/application/management-server.properties del file è impostato su 100:

conf_keymanagement_oauth_max_search_limit = 100

Se il file non esiste, crealo.

Questa proprietà imposta le dimensioni della pagina utilizzate durante il recupero dei token. Apigee consiglia un valore pari a 100, ma puoi impostarla come preferisci.

In una nuova installazione, la proprietà deve essere già impostata su 100. Se devi modificare di questa proprietà, riavvia il server di gestione e il processore di messaggi utilizzando :

> /<inst_rt>/apigee/apigee-service/bin/apigee-service edge-management-server restart
> /<inst_rt>/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Passaggio 4: configura il criterio OAuth 2.0 che genera token per includere l'ID utente finale

Configura il criterio OAuth 2.0 utilizzato per generare token di accesso che includano l'ID utente finale nella il token. Includendo gli ID utente finale nel token di accesso, puoi recuperare e revocare i token ID.

Per configurare il criterio in modo da includere un ID utente finale in un token di accesso, la richiesta che crea il token di accesso deve includere l'ID utente finale e devi specificare la variabile di input contiene l'ID utente finale.

Il criterio OAuth 2.0 riportato di seguito, denominato GeneraAccessTokenClient, genera un accesso OAuth 2.0 di accesso. Nota l'aggiunta del tag &lt;AppEndUser&gt; in grassetto che specifica la variabile contenente l'ID utente finale:

<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 appuserID intestazione:

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

In questo esempio, il valore appuserID viene passato come intestazione della richiesta. Puoi trasmettere le informazioni nell'ambito di una richiesta in molti modi. Per Ad esempio, in alternativa, puoi:

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