Questa pagina si applica a Apigee e Apigee ibridi.
Visualizza
documentazione di Apigee Edge.
Questo documento mostra come ottenere i token di accesso e i codici di autorizzazione OAuth 2.0 con l'API Apigee. Viene spiegato anche come creare criteri per ogni tipo di autorizzazione OAuth 2.0. configurare gli endpoint proxy per accettare le richieste del client.
Utilizza il tipo di concessione del codice di autorizzazione
Questa sezione spiega come ottenere un token di accesso utilizzando il tipo di concessione del codice di autorizzazione flusso di lavoro. La richiesta di token per questo flusso richiede un codice di autorizzazione. Vedi Ottenere un codice di autorizzazione. Vedi anche Che cosa sono i tipi di autorizzazione OAuth 2.0.
Esempio richiesta
curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ -X POST 'https://apitest.acme.com/oauth/token' \ -d 'code=I9dMGHAN&grant_type=authorization_code&redirect_uri=http://example-callback.com'
Obbligatorie parametri
Per impostazione predefinita, questi parametri devono essere x-www-form-urlencoded
e specificati nel
corpo della richiesta (come mostrato nell'esempio sopra riportato); ma è possibile modificare il valore predefinito
configurando <GrantType>
, <Code>
e
<RedirectUri>
nel criterio OAuthV2. Vedi il criterio OAuthV2.
- grant_type: deve essere impostato sul valore
authorization_code
. - code - Il codice di autorizzazione. Vedi Richiesta di un codice di autorizzazione.
- redirect_uri - Devi fornire questo parametro se
Il parametro
redirect_uri
è stato incluso nella richiesta del codice di autorizzazione. Se il parametroredirect_uri
non è stato incluso nella richiesta del codice di autorizzazione e Se non fornisci questo parametro, questo criterio utilizza il valore dell'URL di callback fornita nell'app sviluppatore registrata.
Facoltativo parametri
- state - Una stringa che verrà inviata insieme alla risposta. Normalmente usata per evitare attacchi di falsificazione delle richieste tra siti.
- scope - Consente di filtrare l'elenco dei prodotti API con cui è possibile usare un token. Per informazioni dettagliate sull'ambito, vedi Utilizzo degli ambiti OAuth2.
Autorizzazione
Devi passare l'ID client e il client secret come intestazione Autorizzazione di base
(con codifica Base64) o come parametri di forma client_id
e client_secret
. Tu
ottenere questi valori da un'app sviluppatore registrata. Consulta anche Codifica di base
credenziali di autenticazione.
Endpoint di esempio
Ecco una configurazione di endpoint di esempio per la generazione di un token di accesso. Eseguirà Criteri generazioniAccessToken, che deve essere configurato per supportare la concessione di permission_code di testo.
... <Flow name="generate-access-token"> <Description>Generate a token</Description> <Request> <Step> <Name>GenerateAccessToken</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition> </Flow> ...
Criterio di esempio
Questo è un criterio di base GeneraAccessToken configurato per accettare il
authorization_code
tipo di autorizzazione. Per informazioni sugli elementi di configurazione facoltativi
che puoi configurare con questo criterio, consulta Criterio OAuthV2.
<OAuthV2 name="GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>1800000</ExpiresIn> <RefreshTokenExpiresIn>86400000</RefreshTokenExpiresIn> <SupportedGrantTypes> <GrantType>authorization_code</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
Restituisce
Se <GenerateResponse>
è attivato, il criterio restituisce una risposta JSON che
include il token di accesso, come mostrato di seguito. Il tipo di concessione authorization_code
crea
un token di accesso e un token di aggiornamento, quindi la risposta potrebbe avere il seguente aspetto:
{ "issued_at": "1420262924658", "scope": "READ", "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b", "refresh_token_issued_at": "1420262924658", "status": "approved", "refresh_token_status": "approved", "api_product_list": "[PremiumWeatherAPI]", "expires_in": "1799", //--in seconds "developer.email": "tesla@weathersample.com", "organization_id": "0", "token_type": "BearerToken", "refresh_token": "fYACGW7OCPtCNDEnRSnqFlEgogboFPMm", "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT", "access_token": "2l4IQtZXbn5WBJdL6EF7uenOWRsi", "organization_name": "docs", "refresh_token_expires_in": "86399", //--in seconds "refresh_count": "0" }
Se <GenerateResponse>
viene impostato su false, il criterio non restituisce un
risposta. Compila invece il seguente insieme di variabili di flusso con i dati relativi al
la concessione del token di accesso.
oauthv2accesstoken.{policy-name}.access_token oauthv2accesstoken.{policy-name}.expires_in //--in seconds oauthv2accesstoken.{policy-name}.refresh_token oauthv2accesstoken.{policy-name}.refresh_token_expires_in //--in seconds oauthv2accesstoken.{policy-name}.refresh_token_issued_at oauthv2accesstoken.{policy-name}.refresh_token_status
Ad esempio:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in oauthv2accesstoken.GenerateAccessToken.refresh_token oauthv2accesstoken.GenerateAccessToken.refresh_token_expires_in oauthv2accesstoken.GenerateAccessToken.refresh_token_issued_at oauthv2accesstoken.GenerateAccessToken.refresh_token_status
Utilizza il client tipo di concessione delle credenziali
Questa sezione spiega come ottenere un token di accesso utilizzando il tipo di concessione delle credenziali client. flusso di lavoro. Vedi anche Che cosa sono i tipi di autorizzazione OAuth 2.0.
Esempio richiesta
curl -H "Content-Type: application/x-www-form-urlencoded" \ -H "Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ" \ -X POST "https://apitest.acme.com/oauth/token" \ -d "grant_type=client_credentials"
Obbligatorie parametri
- grant_type: deve essere impostato sul valore
client_credentials
.Per impostazione predefinita, il parametro
grant_type
obbligatorio deve esserex-www-form-urlencoded
e specificato nel corpo della richiesta (come mostrato nell'esempio sopra riportato); tuttavia, è possibile modificare per impostazione predefinita configurando l'elemento<GrantType>
nel criterio OAuthV2. Ad esempio, puoi scegliere di trasmettere in un parametro di query. Per maggiori dettagli, vedi Criterio OAuthV2.
Facoltativo parametri
- state - Una stringa che verrà inviata insieme alla risposta. Normalmente usata per evitare attacchi di falsificazione delle richieste tra siti.
- scope - Consente di filtrare l'elenco dei prodotti API con cui è possibile usare un token. Per informazioni dettagliate sull'ambito, vedi Utilizzo degli ambiti OAuth2.
Autorizzazione
Devi passare l'ID client e il client secret come intestazione Autorizzazione di base
(con codifica Base64) o come parametri di forma client_id
e
client_secret
. Puoi ottenere questi valori dall'app sviluppatore registrata
associati alla richiesta. Vedi anche Codifica dell'autenticazione di base
credenziali.
Endpoint di esempio
Ecco una configurazione di endpoint di esempio per la generazione di un token di accesso. Eseguirà Criterio GeneraAccessToken, che deve essere configurato per supportare la concessione client_credentials di testo.
... <Flow name="generate-access-token"> <Request> <Step> <Name>GenerateAccessToken</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition> </Flow> ...
Criterio di esempio
Questo è un criterio di base GeneraAccessToken configurato per accettare il
client_credentials
tipo di autorizzazione. Per informazioni sugli elementi di configurazione facoltativi
che puoi configurare con questo criterio, consulta Criterio OAuthV2.
<OAuthV2 name="GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes --> <SupportedGrantTypes> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
Restituisce
Se <GenerateResponse>
è attivato, il criterio restituisce una risposta JSON. Nota
che con il tipo di autorizzazione client_credentials
i token di aggiornamento non sono supportati. Solo
viene generato un token di accesso. Ad esempio:
{ "issued_at": "1420260525643", "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b", "scope": "READ", "status": "approved", "api_product_list": "[PremiumWeatherAPI]", "expires_in": "1799", //--in seconds "developer.email": "tesla@weathersample.com", "organization_id": "0", "token_type": "BearerToken", "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT", "access_token": "XkhU2DFnMGIVL2hvsRHLM00hRWav", "organization_name": "docs" }
Se <GenerateResponse>
viene impostato su false, il criterio non restituisce un
risposta. Compila invece il seguente insieme di variabili di flusso con i dati relativi al
la concessione del token di accesso.
oauthv2accesstoken.{policy-name}.access_token oauthv2accesstoken.{policy-name}.expires_in //--in seconds
Ad esempio:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in //--in seconds
Utilizzare il tipo di autorizzazione della password
Questa sezione spiega come ottenere un token di accesso utilizzando la password del proprietario della risorsa flusso del tipo di autorizzazione delle credenziali (password). Consulta anche Implementazione della password tipo di autorizzazione. Vedi anche Che cosa sono i tipi di autorizzazione OAuth 2.0.
Esempio richiesta
curl -v -k -H "Content-Type: application/x-www-form-urlencoded" \ -H "Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ" \ -X POST "https://apitest.acme.com/oauth/token" \ -d "grant_type=password&username=a_username&password=a_password"
Obbligatorie parametri
Per impostazione predefinita, questi parametri devono essere x-www-form-urlencoded
e specificati nel
corpo della richiesta (come mostrato nell'esempio sopra riportato); ma è possibile modificare il valore predefinito
configurando <GrantType>
, <Username>
e
<Password>
nel criterio OAuthV2. Vedi il criterio OAuthV2.
Le credenziali utente vengono generalmente convalidate a fronte di un archivio credenziali utilizzando un protocollo LDAP criterio JavaScript.
- grant_type - Deve essere impostato sul valore
password
. - nomeutente - Il nome utente del proprietario della risorsa.
- password - La password del proprietario della risorsa.
Facoltativo parametri
- state - Una stringa che verrà inviata insieme alla risposta. Normalmente usata per evitare attacchi di falsificazione delle richieste tra siti.
- scope - Consente di filtrare l'elenco dei prodotti API con cui è possibile usare un token. Per informazioni dettagliate sull'ambito, vedi Utilizzo degli ambiti OAuth2.
Autorizzazione
Devi passare l'ID client e il client secret come intestazione Autorizzazione di base
(con codifica Base64) o come parametri di forma client_id
e
client_secret
. Puoi ottenere questi valori dall'app sviluppatore registrata
associati alla richiesta. Vedi anche Codifica dell'autenticazione di base
credenziali.
Endpoint di esempio
Ecco una configurazione di endpoint di esempio per la generazione di un token di accesso. Eseguirà Criterio GeneraAccessToken, che deve essere configurato per supportare il tipo di concessione della password.
... <Flow name="generate-access-token"> <Request> <Step> <Name>GenerateAccessToken</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition> </Flow> ...
Criterio di esempio
Questo è un criterio di base GeneraAccessToken configurato per accettare la concessione della password di testo. Per informazioni sugli elementi di configurazione facoltativi che puoi configurare con questo criterio, consulta il criterio OAuthV2.
<OAuthV2 name="GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes --> <RefreshTokenExpiresIn>28800000</RefreshTokenExpiresIn> <!-- 8 hours --> <SupportedGrantTypes> <GrantType>password</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
Restituisce
Se <GenerateResponse>
è attivato, il criterio restituisce una risposta JSON. Nota
che, con il tipo di concessione della password, vengono generati sia un token di accesso sia un token di aggiornamento. Per
esempio:
{ "issued_at": "1420258685042", "scope": "READ", "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b", "refresh_token_issued_at": "1420258685042", "status": "approved", "refresh_token_status": "approved", "api_product_list": "[PremiumWeatherAPI]", "expires_in": "1799", //--in seconds "developer.email": "tesla@weathersample.com", "organization_id": "0", "token_type": "BearerToken", "refresh_token": "IFl7jlijYuexu6XVSSjLMJq8SVXGOAAq", "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT", "access_token": "I6daIgMSiUgYX1K2qgQWPi37ztS6", "organization_name": "docs", "refresh_token_expires_in": "28799", //--in seconds "refresh_count": "0" }
Se <GenerateResponse>
viene impostato su false, il criterio non restituisce un
risposta. Compila invece il seguente insieme di variabili di flusso con i dati relativi al
la concessione del token di accesso.
oauthv2accesstoken.{policy-name}.access_token oauthv2accesstoken.{policy-name}.expires_in //--in seconds oauthv2accesstoken.{policy-name}.refresh_token oauthv2accesstoken.{policy-name}.refresh_token_expires_in //--in seconds oauthv2accesstoken.{policy-name}.refresh_token_issued_at oauthv2accesstoken.{policy-name}.refresh_token_status
Ad esempio:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in oauthv2accesstoken.GenerateAccessToken.refresh_token oauthv2accesstoken.GenerateAccessToken.refresh_token_expires_in oauthv2accesstoken.GenerateAccessToken.refresh_token_issued_at oauthv2accesstoken.GenerateAccessToken.refresh_token_status
Utilizza la concessione implicita tipo
Questa sezione spiega come ottenere un token di accesso utilizzando il flusso del tipo di concessione implicita. Vedi anche Che cosa sono i tipi di autorizzazione OAuth 2.0.
Esempio richiesta
$ curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \ 'https://apitest.acme.com/oauth/implicit?response_type=token&client_id=c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ&redirect_uri=http://callback-example.com'
Obbligatorie parametri
Per impostazione predefinita, questi devono essere parametri di ricerca (come mostrato nell'esempio sopra riportato). ma
puoi modificare questa impostazione predefinita configurando <ResponseType>
,
Elementi <ClientId>
e <RedirectUri>
in OAuthV2
criterio collegato a questo endpoint /token
. Per maggiori dettagli, vedi Criterio OAuthV2.
Le credenziali utente vengono generalmente convalidate a fronte di un archivio credenziali utilizzando un servizio LDAP sui callout o sulle norme JavaScript.
- response_type - Deve essere impostato sul valore
token
. - client_id: l'ID client di un'app sviluppatore registrata.
- redirect_uri: questo parametro è obbligatorio se l'URI di callback non è stato fornito al momento della registrazione dell'app sviluppatore client. Se al client è stato fornito un URL di callback registrazione, verrà confrontato con questo valore e deve corrispondere esattamente.
Facoltativo parametri
- state - Una stringa che verrà inviata insieme alla risposta. Normalmente usata per evitare attacchi di falsificazione delle richieste tra siti.
- scope - Consente di filtrare l'elenco dei prodotti API con cui è possibile usare un token. Per informazioni dettagliate sull'ambito, vedi Utilizzo degli ambiti OAuth2.
Autorizzazione
Non richiede l'intestazione Authorization; Tuttavia, devi passare un ID client come parametro di richiesta.
Endpoint di esempio
Ecco una configurazione di endpoint di esempio per la generazione di un token di accesso. Eseguirà criterio GeneraAccessTokenImplicitGrant.
... <Flow name="generate-access-token-implicit"> <Request> <Step> <Name>GenerateAccessTokenImplicitGrant</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/implicit") and (request.verb = "POST")</Condition> </Flow> ...
Criterio di esempio
Si tratta di un criterio di base GeneraAccessTokenImplicitGrant che elabora le richieste di token per il flusso del tipo di autorizzazione implicita. Per informazioni sugli elementi di configurazione facoltativi che puoi configura con questo criterio, vedi Criterio OAuthV2.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <OAuthV2 name="GenerateAccessTokenImplicit"> <DisplayName>GenerateAccessTokenImplicit</DisplayName> <Operation>GenerateAccessTokenImplicitGrant</Operation> <GenerateResponse enabled="true"/> </OAuthV2>
Restituisce
Se il criterio <GenerateResponse>
è attivato, il criterio restituisce un reindirizzamento della posizione 302
nell'intestazione della risposta. Il reindirizzamento rimanda all'URL specificato nel campo redirect_uri
.
e viene aggiunto con il token di accesso e la data di scadenza del token. Tieni presente che l'espressione implicita
il tipo di autorizzazione non supporta i token di aggiornamento. Ad esempio:
https://callback-example.com#expires_in=1799&access_token=In4dKm4ueoGZRbIYJhC9yZCmTFw5
Se <GenerateResponse>
viene impostato su false, il criterio non restituisce un
risposta. Compila invece il seguente insieme di variabili di flusso con i dati relativi al
la concessione del token di accesso.
oauthv2accesstoken.{policy-name}.access_token oauthv2accesstoken.{policy-name}.expires_in //--in seconds
Ad esempio:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in //--in seconds
Recuperare un codice di autorizzazione
Nel flusso del tipo di concessione del codice di autorizzazione, è necessario un codice di autorizzazione per ottenere un token di accesso. Vedi Utilizzare il tipo di concessione del codice di autorizzazione. Vedi anche Che cosa sono i tipi di autorizzazione OAuth 2.0.
Richiesta di esempio
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" \ "https://apitest.acme.com/oauth/authorize?response_type=code&client_id=c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ&redirect_uri=http://my-callback.com"
Obbligatorie parametri
Per impostazione predefinita, questi devono essere parametri di ricerca (come mostrato nell'esempio sopra riportato). ma
puoi modificare questa impostazione predefinita configurando <ResponseType>
,
Elementi <ClientId>
e <RedirectUri>
in OAuthV2
. Per maggiori dettagli, vedi Criterio OAuthV2.
- redirect_uri: se è specificato un URI di callback completo (non parziale) in l'app client registrata, questo parametro è facoltativo; altrimenti è obbligatorio. Il callback è l'URL a cui Apigee invia il codice di autorizzazione appena creato. Vedi anche Registrare app e gestire l'API chiave.
- response_type - Deve essere impostato sul valore
code
. - client_id: l'ID client di un'app sviluppatore registrata.
Facoltativo parametri
- redirect_uri: se è specificato un URI di callback completo (non parziale) in l'app client registrata, questo parametro è facoltativo; altrimenti è obbligatorio. Il callback è l'URL a cui Apigee invia il codice di autorizzazione appena creato. Vedi anche Registrare app e gestire l'API chiave.
- state - Una stringa che verrà inviata insieme alla risposta. Normalmente usata per evitare attacchi di falsificazione delle richieste tra siti.
- scope - Consente di filtrare l'elenco dei prodotti API con cui è possibile usare un token. Per informazioni dettagliate sull'ambito, vedi Utilizzo degli ambiti OAuth2.
Autorizzazione
Non richiede l'intestazione Autorizzazione, ma l'ID client dell'app client registrata deve da fornire nella richiesta.
Criterio di esempio
Questo è un criterio di baseGenerateAuthorizationCode. Per ulteriori opzioni di configurazione, consulta il criterio OAuthV2:
<OAuthV2 name="GenerateAuthorizationCode"> <Operation>GenerateAuthorizationCode</Operation> <GenerateResponse enabled="true"/> </OAuthV2>
Restituisce
Se il criterio <GenerateResponse>
viene attivato, il criterio restituisce ?code
parametro di query nella posizione redirect_uri
(URI del callback) con l'autorizzazione
codice allegato. Viene inviato tramite un reindirizzamento del browser 302 con l'URL nell'intestazione Location del
risposta. Ad esempio: ?code=123456
.
Se il criterio <GenerateResponse>
viene impostato su false
, il criterio non
restituiscono una risposta. Compila invece il seguente insieme di variabili di flusso con i dati relativi
al codice di autorizzazione.
oauthv2authcode.{policy-name}.code oauthv2authcode.{policy-name}.scope oauthv2authcode.{policy-name}.redirect_uri oauthv2authcode.{policy-name}.client_id
Ad esempio:
oauthv2authcode.GenerateAuthorizationCode.code oauthv2authcode.GenerateAuthorizationCode.scope oauthv2authcode.GenerateAuthorizationCode.redirect_uri oauthv2authcode.GenerateAuthorizationCode.client_id
Aggiornamento di un token di accesso
Un token di aggiornamento è una credenziale che utilizzi per ottenere un token di accesso, in genere dopo l'accesso token è scaduto o non è più valido. Viene restituito un token di aggiornamento nella risposta ricevere un token di accesso.
Richiesta di esempio
Per informazioni sulla codifica dell'intestazione dell'autenticazione di base nella chiamata seguente, vedi Codifica delle credenziali di autenticazione di base.
$ curl -X POST \ -H "Content-type: application/x-www-form-urlencoded" \ -H "Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ" \ https://apitest.acme.com/oauth/refresh \ -d "grant_type=refresh_token&refresh_token=yVSL38WpuN3Kzn1UTMoE6AQ4ANZM"
Parametri obbligatori
Per impostazione predefinita, il criterio li cerca come parametri x-www-form-urlencoded
specificato nel corpo della richiesta, come mostrato nell'esempio precedente. Per configurare una località alternativa
per questi input, puoi usare <GrantType>
e
Elementi <RefreshToken>
nel criterio OAuthV2. Per maggiori dettagli, vedi Criterio OAuthV2.
- grant_type - Deve essere impostato sul valore
refresh_token
. - refresh_token - Il token di aggiornamento associato al token di accesso che hai che vuoi rinnovare.
Parametri facoltativi
- state - Una stringa che verrà inviata insieme alla risposta. Normalmente usata per evitare attacchi di falsificazione delle richieste tra siti.
- scope - Consente di filtrare l'elenco dei prodotti API con cui è possibile usare un token. Per informazioni dettagliate sull'ambito, vedi Utilizzo degli ambiti OAuth2.
Autorizzazione
Non richiede l'intestazione Autorizzazione, ma l'ID client dell'app client registrata deve da fornire nella richiesta.
Quando aggiorni un token di accesso, l'utente non deve ripetere l'autenticazione.
Di seguito è riportato un esempio di configurazione dell'endpoint per la generazione di un token di accesso utilizzando un token di aggiornamento. Verrà eseguito il criterio RefreshAccessToken.
... <Flow name="generate-refresh-token"> <Request> <Step> <Name>RefreshAccessToken</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/refresh") and (request.verb = "POST")</Condition> </Flow> ...
Criterio di esempio
Questo è un criterio di base RefreshAccessToken configurato per accettare
refresh_token
tipo di autorizzazione. Per informazioni sugli elementi di configurazione facoltativi
Per la configurazione con questo criterio, consulta la sezione Criterio OAuthV2.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <OAuthV2 name="RefreshAccessToken"> <Operation>RefreshAccessToken</Operation> <GenerateResponse enabled="true"/> <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes --> <RefreshTokenExpiresIn>28800000</RefreshTokenExpiresIn> <!-- 8 hours --> </OAuthV2>
Restituisce
Se <GenerateResponse>
è attivato, il criterio restituisce una risposta JSON
contenente il nuovo token di accesso. Il tipo di concessione refresh_token
supporta il mining sia
di accesso e nuovi token di aggiornamento. Ad esempio:
{ "issued_at": "1420301470489", "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b", "scope": "READ", "refresh_token_issued_at": "1420301470489", "status": "approved", "refresh_token_status": "approved", "api_product_list": "[PremiumWeatherAPI]", "expires_in": "1799", //--in seconds "developer.email": "tesla@weathersample.com", "token_type": "BearerToken", "refresh_token": "8fKDHLryAD9KFBsrpixlq3qPJnG2fdZ5", "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT", "access_token": "jmZ2Hqv3iNsABUtAAsfWR3QGNctw", "organization_name": "docs", "refresh_token_expires_in": "28799", //--in seconds "refresh_count": "2" }
Tieni presente che, dopo aver generato un nuovo token di aggiornamento, l'originale non è più valido.
La risposta riportata sopra è ciò che ottieni se <GenerateResponse>
è impostato su true.
Se <GenerateResponse>
viene impostato su false, il criterio non restituisce una risposta.
Al contrario, compila il seguente insieme di variabili di contesto (flusso) con i dati relativi al
la concessione del token di accesso.
oauthv2accesstoken.{policy-name}.access_token oauthv2accesstoken.{policy-name}.expires_in //--in seconds oauthv2accesstoken.{policy-name}.refresh_token oauthv2accesstoken.{policy-name}.refresh_token_expires_in //--in seconds oauthv2accesstoken.{policy-name}.refresh_token_issued_at oauthv2accesstoken.{policy-name}.refresh_token_status
Ad esempio:
oauthv2accesstoken.RefreshAccessToken.access_token oauthv2accesstoken.RefreshAccessToken.expires_in oauthv2accesstoken.RefreshAccessToken.refresh_token oauthv2accesstoken.RefreshAccessToken.refresh_token_expires_in oauthv2accesstoken.RefreshAccessToken.refresh_token_issued_at oauthv2accesstoken.RefreshAccessToken.refresh_token_status
Codifica credenziali di autenticazione di base
Quando effettui una chiamata API per richiedere un token o un codice di autorizzazione, è una buona pratica ed è consigliato dalla specifica OAuth 2.0 per passare i valori client_id e client_secret come un'intestazione Autorizzazione di base HTTP, come descritto in IETF RFC 2617. Per farlo, devi Codifica in base64 il risultato dell'unione dei due valori e dei due punti che li separano.
Nello pseudocodice:
result = Base64Encode(concat('ns4fQc14Zg4hKFCNaSzArVuwszX95X', ':', 'ZIjFyTsNgQNyxI'))
Dove: ns4fQc14Zg4hKFCNaSzArVuwszX95X
è il client_id e
ZIjFyTsNgQNyxI
è il client secret.
Esempi
Questo comando di esempio funziona su Linux e MacOS:
export CREDENTIALS=$(echo -n 'ns4fQc14Zg4hKFCNaSzArVuwszX95X:ZIjFyTsNgQNyxI' | base64)
Quindi, puoi effettuare la richiesta di token come segue:
$ curl -i -H "Content-Type: application/x-www-form-urlencoded" \ -H "Authorization: Basic $CREDENTIALS" \ -X POST "https://apitest.acme.com/oauth/token" \ -d "grant_type=client_credentials"
Hashing dei token nel database
Apigee esegue l'hashing di tutti i token di accesso e di aggiornamento OAuth per proteggerli nel caso di un database violazione della sicurezza. Utilizzi token non sottoposti ad hashing nelle chiamate API e Apigee li convalida rispetto a le versioni con hash nel database.
Argomenti correlati
- L'implementazione tipo di concessione delle credenziali client
- Implementazione il tipo di concessione del codice di autorizzazione
- API corso sulla sicurezza online (include OAuth)
- Criterio OAuthV2 -- Contiene molti esempi che mostrano come effettuare richieste al server di autorizzazione e come configurare il criterio OAuthV2.