Diese Seite gilt für Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen
In diesem Dokument erfahren Sie, wie Sie OAuth 2.0-Zugriffstokens und Autorisierungscodes mit der Apigee API abrufen. Außerdem erfahren Sie, wie Sie Richtlinien für jeden OAuth 2.0-Grant-Typ erstellen und Proxy-Endpunkte für die Annahme von Clientanfragen konfigurieren.
Autorisierungscode-Grant-Typ verwenden
In diesem Abschnitt wird erläutert, wie Sie ein Zugriffstoken mithilfe des Ablaufs für den Autorisierungscode-Grant-Typ abrufen. Die Token-Anfrage für diesen Ablauf erfordert einen Autorisierungscode. Weitere Informationen finden Sie unter Autorisierungscode abrufen. Siehe auch OAuth 2.0-Grant-Typen
Beispielanfrage
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'
Erforderliche Parameter
Standardmäßig müssen diese Parameter x-www-form-urlencoded
lauten und im Anfragetext angegeben sein (wie im obigen Beispiel dargestellt). Es ist jedoch möglich, diese Standardeinstellung zu ändern. Dazu konfigurieren Sie die Elemente <GrantType>
, <Code>
und <RedirectUri>
in der OAuthV2-Richtlinie. Siehe OAuthV2-Richtlinie.
- grant_type – Muss auf den Wert
authorization_code
festgelegt sein. - code – Autorisierungscode. Weitere Informationen finden Sie unter Autorisierungscode anfordern.
- redirect_uri – Dieser Parameter muss angegeben werden, falls der Parameter
redirect_uri
in der vorherigen Autorisierungscodeanfrage enthalten war. Wenn der Parameterredirect_uri
nicht in der Autorisierungscodeanfrage enthalten war und Sie diesen Parameter nicht angeben, verwendet die Richtlinie den Wert der Callback-URL, die in der registrierten Entwickler-App bereitgestellt wird.
Optionale Parameter
- state – Ein String, der mit der Antwort zurückgegeben wird. Wird in der Regel verwendet, um eine websiteübergreifende Anfragefälschung zu verhindern.
- scope – Ermöglicht das Filtern der Liste der API-Produkte, mit denen das erstellte Token verwendet werden kann. Ausführliche Informationen zu Bereichen finden Sie unter Mit OAuth2-Bereichen arbeiten.
Autorisierung
Sie müssen die Client-ID und den Clientschlüssel entweder als Basis-Autorisierungsheader (Base64-codiert) oder als Formularparameter client_id
und client_secret
übergeben. Sie erhalten diese Werte von einer registrierten Entwickler-App. Siehe auch Basis-Authentifizierungsdaten codieren.
Beispielendpunkt
Dies ist ein Beispiel für die Endpunktkonfiguration zum Generieren eines Zugriffstoken. Es führt die Richtlinie "GenerateAccessToken" aus, die zur Unterstützung des Grant-Typs "authorization_code" konfiguriert sein muss.
... <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> ...
Beispielrichtlinie
Dies ist eine grundlegende "GenerateAccessToken"-Richtlinie, die für die Annahme des Grant-Typs authorization_code
konfiguriert ist. Informationen zu optionalen Konfigurationselementen, die mit dieser Richtlinie konfiguriert werden können, finden sich unter OAuthV2-Richtlinie.
<OAuthV2 name="GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>1800000</ExpiresIn> <RefreshTokenExpiresIn>86400000</RefreshTokenExpiresIn> <SupportedGrantTypes> <GrantType>authorization_code</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
Rückgabe
Ist <GenerateResponse>
aktiviert, so gibt die Richtlinie eine JSON-Antwort zurück, die das Zugriffstoken enthält, wie unten dargestellt. Der Grant-Typ authorization_code
erstellt ein Zugriffs- und ein Aktualisierungstoken, sodass eine Antwort so aussehen kann:
{ "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" }
Ist <GenerateResponse>
auf "false" gesetzt, gibt die Richtlinie keine Antwort zurück. Stattdessen wird der folgende Satz Ablaufvariablen mit Daten gefüllt, die sich auf die Zugriffstoken-Erteilung beziehen.
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
Beispiele:
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
Clientanmeldedaten-Grant-Typ verwenden
In diesem Abschnitt wird erläutert, wie Sie ein Zugriffstoken mit dem Ablauf für den Clientanmeldedaten-Grant-Typ abrufen. Siehe auch OAuth 2.0-Grant-Typen
Beispielanfrage
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"
Erforderliche Parameter
- grant_type – Muss auf den Wert
client_credentials
festgelegt sein.Standardmäßig muss der erforderliche Parameter
grant_type
x-www-form-urlencoded
sein und im Anfragetext angegeben sein (siehe Beispiel oben). Es ist jedoch möglich, diese Standardeinstellung zu ändern, indem das Element<GrantType>
in der OAuthV2-Richtlinie konfiguriert wird. Sie können beispielsweise den Parameter in einem Abfrageparameter übergeben. Weitere Informationen finden sich unter OAuthV2-Richtlinie.
Optionale Parameter
- state – Ein String, der mit der Antwort zurückgegeben wird. Wird in der Regel verwendet, um eine websiteübergreifende Anfragefälschung zu verhindern.
- scope – Ermöglicht das Filtern der Liste der API-Produkte, mit denen das erstellte Token verwendet werden kann. Ausführliche Informationen zu Bereichen finden Sie unter Mit OAuth2-Bereichen arbeiten.
Autorisierung
Sie müssen die Client-ID und den Clientschlüssel entweder als Basis-Autorisierungsheader (Base64-codiert) oder als Formularparameter client_id
und client_secret
übergeben. Sie erhalten diese Werte von der mit der Anfrage verknüpften registrierten Entwickler-App. Weitere Informationen finden Sie unter Anmeldedaten für die Basisauthentifizierung codieren.
Beispielendpunkt
Dies ist ein Beispiel für die Endpunktkonfiguration zum Generieren eines Zugriffstoken. Es führt die Richtlinie "GenerateAccessToken" aus, die für die Unterstützung des Grant-Typs "client_credentials" konfiguriert sein muss.
... <Flow name="generate-access-token"> <Request> <Step> <Name>GenerateAccessToken</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition> </Flow> ...
Beispielrichtlinie
Dies ist eine grundlegende "GenerateAccessToken"-Richtlinie, die für die Annahme des Grant-Typs client_credentials
konfiguriert ist. Informationen zu optionalen Konfigurationselementen, die mit dieser Richtlinie konfiguriert werden können, finden sich unter OAuthV2-Richtlinie.
<OAuthV2 name="GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes --> <SupportedGrantTypes> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
Rückgabe
Ist <GenerateResponse>
aktiviert, so gibt die Richtlinie eine JSON-Antwort zurück. Beachten Sie, dass Aktualisierungstokens mit dem Grant-Typ client_credentials
nicht unterstützt werden. Es wird nur ein Zugriffstoken erstellt. Beispiele:
{ "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" }
Ist <GenerateResponse>
auf "false" gesetzt, gibt die Richtlinie keine Antwort zurück. Stattdessen wird der folgende Satz Ablaufvariablen mit Daten gefüllt, die sich auf die Zugriffstoken-Erteilung beziehen.
oauthv2accesstoken.{policy-name}.access_token oauthv2accesstoken.{policy-name}.expires_in //--in seconds
Beispiele:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in //--in seconds
Passwort-Grant-Typ verwenden
In diesem Abschnitt wird erläutert, wie Sie ein Zugriffstoken mit dem Ablauf für den Grant-Typ für die Passwort-Anmeldedaten des Ressourceninhabers (Passwort) abrufen. Siehe Grant-Typ "Passwort" implementieren. Siehe auch OAuth 2.0-Grant-Typen
Beispielanfrage
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"
Erforderliche Parameter
Standardmäßig müssen diese Parameter x-www-form-urlencoded
lauten und im Anfragetext angegeben sein (wie im obigen Beispiel dargestellt). Es ist jedoch möglich, diese Standardeinstellung zu ändern. Dazu konfigurieren Sie die Elemente <GrantType>
, <Username>
und <Password>
in der OAuthV2-Richtlinie. Siehe OAuthV2-Richtlinie.
Nutzeranmeldedaten werden in der Regel auf Basis einer LDAP- oder JavaScript-Richtlinie unter Verwendung eines Anmeldedatenspeichers validiert.
- grant_type – Muss auf den Wert
password
festgelegt sein. - username - Der Nutzername des Ressourceninhabers.
- password – Das Passwort des Ressourceninhabers.
Optionale Parameter
- state – Ein String, der mit der Antwort zurückgegeben wird. Wird in der Regel verwendet, um eine websiteübergreifende Anfragefälschung zu verhindern.
- scope – Ermöglicht das Filtern der Liste der API-Produkte, mit denen das erstellte Token verwendet werden kann. Ausführliche Informationen zu Bereichen finden Sie unter Mit OAuth2-Bereichen arbeiten.
Autorisierung
Sie müssen die Client-ID und den Clientschlüssel entweder als Basis-Autorisierungsheader (Base64-codiert) oder als Formularparameter client_id
und client_secret
übergeben. Sie erhalten diese Werte von der mit der Anfrage verknüpften registrierten Entwickler-App. Weitere Informationen finden Sie unter Anmeldedaten für die Basisauthentifizierung codieren.
Beispielendpunkt
Dies ist ein Beispiel für die Endpunktkonfiguration zum Generieren eines Zugriffstoken. Damit wird die Richtlinie "GenerateAccessToken" ausgeführt, die zur Unterstützung des Grant-Typs "Passwort" konfiguriert werden muss.
... <Flow name="generate-access-token"> <Request> <Step> <Name>GenerateAccessToken</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition> </Flow> ...
Beispielrichtlinie
Dies ist eine grundlegende "GenerateAccessToken"-Richtlinie, die für die Annahme des Grant-Typs "Passwort" konfiguriert ist. Informationen zu optionalen Konfigurationselementen, die mit dieser Richtlinie konfiguriert werden können, finden sich unter OAuthV2-Richtlinie.
<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>
Rückgabe
Ist <GenerateResponse>
aktiviert, so gibt die Richtlinie eine JSON-Antwort zurück. Beachten Sie, dass beim Grant-Typ "Passwort" sowohl ein Zugriffs- als auch ein Aktualisierungstoken erstellt wird. Beispiel:
{ "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" }
Ist <GenerateResponse>
auf "false" gesetzt, gibt die Richtlinie keine Antwort zurück. Stattdessen wird der folgende Satz Ablaufvariablen mit Daten gefüllt, die sich auf die Zugriffstoken-Erteilung beziehen.
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
Beispiele:
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
Impliziten Grant-Typ verwenden
In diesem Abschnitt wird erläutert, wie Sie ein Zugriffstoken mit dem Grant-Typ "Implizit" abrufen. Siehe auch OAuth 2.0-Grant-Typen
Beispielanfrage
$ 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'
Erforderliche Parameter
Standardmäßig müssen diese Parameter Abfrageparameter sein (siehe Beispiel oben). Sie können diese Standardeinstellung jedoch ändern, indem Sie die Elemente <ResponseType>
, <ClientId>
und <RedirectUri>
in der OAuthV2-Richtlinie konfigurieren, die mit diesem /token
-Endpunkt verknüpft ist. Weitere Informationen finden sich unter OAuthV2-Richtlinie.
Nutzeranmeldedaten werden in der Regel auf Basis einer LDAP-Dienst- oder JavaScript-Richtlinie unter Verwendung eines Anmeldedatenspeichers validiert.
- response_type – Muss auf den Wert
token
festgelegt sein. - client_id – Die Client-ID einer registrierten Entwickler-App.
- redirect_uri – Dieser Parameter ist obligatorisch, wenn bei der Registrierung der Client-Entwickler-App kein Callback-URI angegeben wurde. Wenn bei der Client-Registrierung eine Callback-URL angegeben wurde, wird sie mit diesem Wert verglichen und muss exakt mit diesem übereinstimmen.
Optionale Parameter
- state – Ein String, der mit der Antwort zurückgegeben wird. Wird in der Regel verwendet, um eine websiteübergreifende Anfragefälschung zu verhindern.
- scope – Ermöglicht das Filtern der Liste der API-Produkte, mit denen das erstellte Token verwendet werden kann. Ausführliche Informationen zu Bereichen finden Sie unter Mit OAuth2-Bereichen arbeiten.
Autorisierung
Erfordert keinen Autorisierungsheader; Sie müssen jedoch eine Client-ID als Anfrageparameter übergeben.
Beispielendpunkt
Dies ist ein Beispiel für die Endpunktkonfiguration zum Generieren eines Zugriffstoken. Dabei wird die Richtlinie "GenerateAccessTokenImplicitGrees" ausgeführt.
... <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> ...
Beispielrichtlinie
Dies ist eine grundlegende GenerateAccessTokenImplicitGrant-Richtlinie, die Tokenanfragen für den impliziten Gewährungsvorgang verarbeitet. Informationen zu optionalen Konfigurationselementen, die mit dieser Richtlinie konfiguriert werden können, finden sich unter OAuthV2-Richtlinie.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <OAuthV2 name="GenerateAccessTokenImplicit"> <DisplayName>GenerateAccessTokenImplicit</DisplayName> <Operation>GenerateAccessTokenImplicitGrant</Operation> <GenerateResponse enabled="true"/> </OAuthV2>
Rückgabe
Ist <GenerateResponse>
aktiviert, so gibt die Richtlinie eine 302-Standortweiterleitung im Antwortheader zurück. Die Weiterleitung verweist auf die im Parameter redirect_uri
angegebene URL und wird mit dem Zugriffstoken und der Ablaufzeit des Token angehängt. Der Grant-Typ "Implizit" unterstützt Aktualisierungstokens nicht. Beispiele:
https://callback-example.com#expires_in=1799&access_token=In4dKm4ueoGZRbIYJhC9yZCmTFw5
Ist <GenerateResponse>
auf "false" gesetzt, gibt die Richtlinie keine Antwort zurück. Stattdessen wird der folgende Satz Ablaufvariablen mit Daten gefüllt, die sich auf die Zugriffstoken-Erteilung beziehen.
oauthv2accesstoken.{policy-name}.access_token oauthv2accesstoken.{policy-name}.expires_in //--in seconds
Beispiele:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in //--in seconds
Autorisierungscode abrufen
Beim Grant-Typ "Autorisierungscode" ist ein Autorisierungscode erforderlich, um ein Zugriffstoken zu erhalten. Weitere Informationen finden sich unter Autorisierungscode-Grant-Typ verwenden. Siehe auch OAuth 2.0-Grant-Typen
Beispielanfrage
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"
Erforderliche Parameter
Standardmäßig müssen diese Parameter Abfrageparameter sein (siehe Beispiel oben). Sie können diese Standardeinstellung jedoch ändern, indem Sie die Elemente <ResponseType>
, <ClientId>
und <RedirectUri>
in der OAuthV2-Richtlinie konfigurieren. Weitere Informationen finden sich unter OAuthV2-Richtlinie.
- redirect_uri – Wenn ein vollständiger Callback-URI in der registrierten Client-App angegeben wird, ist dieser Parameter optional. Andernfalls ist er erforderlich. Der Rückruf ist die URL, über die Apigee den neu erstellten Authentifizierungscode sendet. Siehe Anwendungen registrieren und API-Schlüssel verwalten.
- response_type – Muss auf den Wert
code
festgelegt sein. - client_id – Die Client-ID einer registrierten Entwickler-App.
Optionale Parameter
- redirect_uri – Wenn ein vollständiger Callback-URI in der registrierten Client-App angegeben wird, ist dieser Parameter optional. Andernfalls ist er erforderlich. Der Rückruf ist die URL, über die Apigee den neu erstellten Authentifizierungscode sendet. Siehe Anwendungen registrieren und API-Schlüssel verwalten.
- state – Ein String, der mit der Antwort zurückgegeben wird. Wird in der Regel verwendet, um eine websiteübergreifende Anfragefälschung zu verhindern.
- scope – Ermöglicht das Filtern der Liste der API-Produkte, mit denen das erstellte Token verwendet werden kann. Ausführliche Informationen zu Bereichen finden Sie unter Mit OAuth2-Bereichen arbeiten.
Autorisierung
Erfordert keinen Autorisierungsheader, aber die Client-ID der registrierten Client-App muss in der Anfrage angegeben werden.
Beispielrichtlinie
Dies ist eine grundlegende GenerateAuthorizationCode-Richtlinie. Weitere Konfigurationsoptionen finden Sie unter OAuthV2-Richtlinie:
<OAuthV2 name="GenerateAuthorizationCode"> <Operation>GenerateAuthorizationCode</Operation> <GenerateResponse enabled="true"/> </OAuthV2>
Rückgabe
Ist <GenerateResponse>
aktiviert, so gibt die Richtlinie den Abfrageparameter ?code
an den Speicherort redirect_uri
(Callback-URI) mit angehängtem Autorisierungscode zurück. Dies erfolgt über eine 302-Browser-Weiterleitung mit der URL im Standort-Header der Antwort. Beispiel: ?code=123456
.
Ist <GenerateResponse>
auf false
gesetzt, so gibt die Richtlinie keine Antwort zurück. Stattdessen wird das folgende Set an Ablaufvariablen mit Daten zum Autorisierungscode gefüllt.
oauthv2authcode.{policy-name}.code oauthv2authcode.{policy-name}.scope oauthv2authcode.{policy-name}.redirect_uri oauthv2authcode.{policy-name}.client_id
Beispiele:
oauthv2authcode.GenerateAuthorizationCode.code oauthv2authcode.GenerateAuthorizationCode.scope oauthv2authcode.GenerateAuthorizationCode.redirect_uri oauthv2authcode.GenerateAuthorizationCode.client_id
Zugriffstokens aktualisieren
Aktualisierungstokens sind Anmeldedaten, mit denen Sie ein Zugriffstoken abrufen. Das ist in der Regel der Fall, wenn das Zugriffstoken abgelaufen ist oder ungültig wird. In der Antwort wird ein Aktualisierungstoken zurückgegeben, wenn Sie ein Zugriffstoken erhalten.
Beispielanfrage
Informationen zum Codieren des Basisauthentifizierungs-Headers im folgenden Aufruf finden Sie unter Basis-Authentifizierungsdaten codieren.
$ 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"
Erforderliche Parameter
Standardmäßig sucht die Richtlinie nach diesen Elementen unter den im Anfragetext angegebenen x-www-form-urlencoded
-Parametern, wie im obigen Beispiel gezeigt. Mit den Elementen <GrantType>
und <RefreshToken>
der OAuthV2-Richtlinie können Sie einen alternativen Speicherort für diese Eingaben konfigurieren. Weitere Informationen finden sich unter OAuthV2-Richtlinie.
- grant_type – Muss auf den Wert
refresh_token
festgelegt sein. - refresh_token – Das Aktualisierungstoken, das dem zu verlängernden Zugriffstoken zugeordnet ist.
Optionale Parameter
- state – Ein String, der mit der Antwort zurückgegeben wird. Wird in der Regel verwendet, um eine websiteübergreifende Anfragefälschung zu verhindern.
- scope – Ermöglicht das Filtern der Liste der API-Produkte, mit denen das erstellte Token verwendet werden kann. Ausführliche Informationen zu Bereichen finden Sie unter Mit OAuth2-Bereichen arbeiten.
Autorisierung
Erfordert keinen Autorisierungsheader, aber die Client-ID der registrierten Client-App muss in der Anfrage angegeben werden.
Beim Aktualisieren eines Zugriffstokens werden Nutzer nicht neu authentifiziert.
Im Folgenden finden Sie eine Beispiel-Endpunktkonfiguration zum Generieren eines Zugriffstokens mit einem Aktualisierungstoken. Dabei wird die Richtlinie "RefreshAccessToken" ausgeführt.
... <Flow name="generate-refresh-token"> <Request> <Step> <Name>RefreshAccessToken</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/refresh") and (request.verb = "POST")</Condition> </Flow> ...
Beispielrichtlinie
Dies ist eine grundlegende RefreshAccessToken-Richtlinie, die für die Annahme des Grant-Typs refresh_token
konfiguriert ist. Informationen zu optionalen Konfigurationselementen, die mit dieser Richtlinie konfiguriert werden können, finden sich unter OAuthV2-Richtlinie.
<?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>
Rückgabe
Wenn <GenerateResponse>
aktiviert ist, gibt die Richtlinie eine JSON-Antwort mit dem neuen Zugriffstoken zurück. Der Grant-Typ refresh_token
unterstützt sowohl die Zugriffs- als auch die neuen Aktualisierungstokens. Beispiele:
{ "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" }
Beachten Sie: Sobald ein neues Aktualisierungstoken erstellt wurde, ist das Original ungültig.
Wenn Sie für <GenerateResponse>
den Wert "true" festlegen, erhalten Sie die obige Antwort.
Ist <GenerateResponse>
auf "false" gesetzt, gibt die Richtlinie keine Antwort zurück.
Stattdessen wird der folgende Satz Ablaufvariablen mit Daten gefüllt, die sich auf die Zugriffstoken-Erteilung beziehen.
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
Beispiele:
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
Basis-Authentifizierungsdaten codieren
Wenn Sie einen API-Aufruf ausführen, um ein Token oder einen Authentifizierungscode anzufordern, sollten Sie davon ausgehen, dass die OAuth 2.0-Spezifikation die Werte "client_id" und "client_secret" als HTTP-Basic-Autorisierungsheader übergibt, wie in IETF RFC 2617 beschrieben. Dazu müssen Sie die beiden Werte mit einem Doppelpunkt trennen und das Ergebnis Base64-codieren.
In Pseudocode:
result = Base64Encode(concat('ns4fQc14Zg4hKFCNaSzArVuwszX95X', ':', 'ZIjFyTsNgQNyxI'))
Dabei ist ns4fQc14Zg4hKFCNaSzArVuwszX95X
die Client-ID und ZIjFyTsNgQNyxI
der Clientschlüssel.
Beispiele
Der folgende Beispielbefehl funktioniert unter Linux und MacOS:
export CREDENTIALS=$(echo -n 'ns4fQc14Zg4hKFCNaSzArVuwszX95X:ZIjFyTsNgQNyxI' | base64)
Anschließend können Sie die Tokenanfrage so stellen:
$ 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"
Hash-Tokens in der Datenbank
Apigee hasht alle OAuth-Zugriffstokens und -Aktualisierungstokens, um sie im Falle einer Datenbanksicherheitsverletzung zu schützen. Die ent-hashten Tokens werden in API-Aufrufen verwendet. Apigee validiert sie entsprechend der Hash-Versionen in der Datenbank.
Weitere Informationen
- Grant-Typ "Client-Anmeldedaten" implementieren
- Grant-Typ "Autorisierungscode" implementieren
- API-Sicherheitskurs online (einschließlich OAuth)
- OAuthV2-Richtlinie – Bietet viele Beispiele, wie Sie Anfragen an den Autorisierungsserver senden und die OAuthV2-Richtlinie konfigurieren können.