Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Bu konuda, erişim jetonları ve yetkilendirme kodları isteme, yapılandırma OAuth 2.0 uç noktaları ve desteklenen her izin için politikaları yapılandırın türü ekleyin.
Örnek kod
Bu konuda tartışılan politikaları ve uç noktaları, oauth-doc-examples projesindeki GitHub veya Apigee api-platform-örnekleri deposunda yer alır. Örnek kodu dağıtıp şunu deneyebilirsiniz: bu konuyla ilgili örnek isteklerden bahsedeceğim. Ayrıntılı bilgi için README projesine göz atın.
Erişim jetonu isteme: yetkilendirme kodu atama türü
Bu bölümde, yetkilendirme kodu izin türünü kullanarak erişim jetonu isteme hakkında bilgi verilmiştir akışı sağlar. OAuth 2.0 izin türlerine giriş için OAuth 2.0'a Giriş başlıklı makaleye göz atın.
Örnek talep edin
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'code=I9dMGHAN&grant_type=authorization_code&redirect_uri=http://example-callback.com'
Zorunlu parametreleri
Varsayılan olarak bu parametreler x-www-form-urlencoded
içermeli ve
istek gövdesi (yukarıdaki örnekte gösterildiği gibi); Ancak bu varsayılan değeri projenizdeki
<GrantType>
, <Code>
ve
Bu öğeye ekli OAuthV2 politikasında <RedirectUri>
öğe
/accesstoken
uç noktası. Ayrıntılar için OAuthV2 politikası başlıklı makaleye göz atın.
- grant_type: Değer olarak ayarlanmalıdır
authorization_code
. - kod:
/authorize
cihazından alınan yetkilendirme kodu uç nokta (ya da ona başka bir ad) verebilirsiniz. Yetkilendirmede erişim jetonu istemek için önce bir yetkilendirme kodu edinmeniz gerekir. Aşağıdaki Yetkilendirme kodları isteme bölümüne bakın. Ayrıca bkz. Uygulama ve yetkilendirme kodu izin türünü belirtin. - redirect_uri: Bu parametreyi
Önceki yetkilendirme kodu isteğine
redirect_uri
parametresi dahil edildi. Eğerredirect_uri
parametresi, yetkilendirme kodu isteğine dahil edilmemiştir ve bu parametreyi sağlamazsanız bu politika geliştirici uygulaması kaydedildiğinde sağlanmıştı.
İsteğe bağlı parametreleri
- state - Yanıtla birlikte geri gönderilecek bir dize. Tipik kullanım kullanıma sunduk.
- kapsam - kullanılabilir. Kapsam hakkında ayrıntılı bilgi için OAuth2 kapsamlarıyla çalışma başlıklı makaleyi inceleyin.
Kimlik Doğrulama
İstemci Kimliği ve İstemci Sırrı'nı Temel Kimlik Doğrulama başlığı olarak iletmeniz gerekir
(Base64 kodlu) veya client_id
ve client_secret
form parametreleri olarak. Siz
bu değerleri kayıtlı bir geliştirici uygulamasından edinebilirsiniz. Ayrıca bkz. "Kodlama temel bilgileri
kimlik doğrulama bilgileri ekleyin".
Örnek uç nokta
Erişim jetonu oluşturmak için örnek bir uç nokta yapılandırması aşağıda verilmiştir. Bu plan Authorization_code erişim iznini desteklemek için yapılandırılması gereken GenerateAccessToken politikası türü.
... <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> ...
Örnek politika
Bu,
authorization_code
izin türü. İsteğe bağlı yapılandırma öğeleri hakkında bilgi için
OAuthV2 politikası başlıklı makaleye göz atın.
<OAuthV2 name="GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>1800000</ExpiresIn> <RefreshTokenExpiresIn>86400000</RefreshTokenExpiresIn> <SupportedGrantTypes> <GrantType>authorization_code</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
İadeler
<GenerateResponse>
etkinleştirildiğinde, politika şu bilgileri içeren bir JSON yanıtı döndürür:
aşağıda gösterildiği gibi erişim jetonunu içerir. authorization_code
izin türü,
bir erişim jetonu ve yenileme jetonlarıdır, dolayısıyla bir yanıt aşağıdaki gibi görünebilir:
{ "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" }.
<GenerateResponse>
Yanlış değerine ayarlanırsa politika
tıklayın. Bunun yerine, aşağıdaki akış değişkenleri kümesini sayfaya ilişkin verilerle
erişim jetonu verilmesi.
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
Örneğin:
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
Erişim jetonu isteme: istemci kimlik bilgisi verme türü
Bu bölümde, istemci kimlik bilgileri izin türünü kullanarak erişim jetonu isteme hakkında bilgi verilmektedir akışı sağlar. OAuth 2.0 izin türlerine giriş için OAuth 2.0'a Giriş başlıklı makaleye göz atın.
Örnek talep edin
Aşağıdaki çağrıda temel kimlik doğrulama üstbilgisini kodlama hakkında bilgi edinmek için bkz. "Kodlama temel kimlik doğrulama bilgileri".
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic c3FIOG9vSGV4VHoAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'grant_type=client_credentials'
Zorunlu parametreleri
Varsayılan olarak, gerekli allow_type parametresi x-www-form-urlencoded
ve
istek gövdesinde belirtilen (yukarıdaki örnekte gösterildiği gibi); Ancak zaman çizelgesi
Bu varsayılan ayarı, OAuthV2 politikasındaki <GrantType>
öğesini yapılandırarak
, bu /accesstoken
uç noktasına ekli. Örneğin, yıl sonuna kadar
parametresinden önce kullanılmasıdır. Ayrıntılar için OAuthV2 politikası başlıklı makaleye göz atın.
- grant_type: Değer olarak ayarlanmalıdır
client_credentials
.
İsteğe bağlı parametreleri
- state - Yanıtla birlikte geri gönderilecek bir dize. Tipik kullanım kullanıma sunduk.
- kapsam - kullanılabilir. Kapsam hakkında ayrıntılı bilgi için OAuth2 kapsamlarıyla çalışma başlıklı makaleyi inceleyin.
Kimlik Doğrulama
İstemci Kimliği ve İstemci Sırrı'nı Temel Kimlik Doğrulama başlığı olarak iletmeniz gerekir
(Base64 kodlu) veya form parametreleri client_id
ve
client_secret
. Bu değerleri, kayıtlı geliştirici uygulamasından edinebilirsiniz
istekle ilişkilidir. Ayrıca bkz. "Temel kimlik doğrulamasını kodlama
kimlik bilgileri".
Örnek uç nokta
Erişim jetonu oluşturmak için örnek bir uç nokta yapılandırması aşağıda verilmiştir. Bu plan Client_credentials iznini destekleyecek şekilde yapılandırılması gereken GenerateAccessToken politikası türü.
... <Flow name="generate-access-token"> <Request> <Step> <Name>GenerateAccessToken</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition> </Flow> ...
Örnek politika
Bu,
client_credentials
izin türü. İsteğe bağlı yapılandırma öğeleri hakkında bilgi için
OAuthV2 politikası başlıklı makaleye göz atın.
<OAuthV2 name="GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes --> <SupportedGrantTypes> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> </OAuthV2>
İadeler
<GenerateResponse>
etkinken politika bir JSON yanıtı döndürür. Not
client_credentials
izin türünde yenileme jetonlarının desteklenmediğini görürsünüz. Yalnızca
bir erişim jetonu yazıldığında. Örneğin:
{ "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" }
<GenerateResponse>
Yanlış değerine ayarlanırsa politika
tıklayın. Bunun yerine, aşağıdaki akış değişkenleri kümesini sayfaya ilişkin verilerle
erişim jetonu verilmesi.
oauthv2accesstoken.{policy-name}.access_token oauthv2accesstoken.{policy-name}.expires_in //--in seconds
Örneğin:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in //--in seconds
Erişim jetonu isteme: şifre izni türü
Bu bölümde, kaynak sahibi şifresini kullanarak erişim jetonu isteme hakkında bilgi verilmektedir kimlik bilgisi (şifre) izin türü akışı. OAuth 2.0 izin türlerine giriş için bkz. OAuth 2.0'a giriş.
Şifre izni türü hakkında daha fazla bilgi için daha fazla bilgi için Şifreyi uygulama izin türünü belirtin.
Örnek talep edin
Aşağıdaki çağrıda temel kimlik doğrulama üstbilgisini kodlama hakkında bilgi edinmek için bkz. "Kodlama temel kimlik doğrulama bilgileri".
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ -X POST https://docs-test.apigee.net/oauth/token \ -d 'grant_type=password&username=the-user-name&password=the-users-password'
Zorunlu parametreleri
Varsayılan olarak bu parametreler x-www-form-urlencoded
içermeli ve
istek gövdesi (yukarıdaki örnekte gösterildiği gibi); Ancak bu varsayılan değeri projenizdeki
<GrantType>
, <Username>
ve
Bu öğeye ekli OAuthV2 politikasında <Password>
öğe
/token
uç noktası. Ayrıntılar için OAuthV2 politikası başlıklı makaleye göz atın.
Kullanıcı kimlik bilgileri genellikle bir LDAP veya JavaScript politikası.
- grant_type:
password
değerine ayarlanmalıdır. - kullanıcı adı - Kaynak sahibinin kullanıcı adı.
- password (şifre) - Kaynak sahibinin şifresi.
İsteğe bağlı parametreleri
- state - Yanıtla birlikte geri gönderilecek bir dize. Tipik kullanım kullanıma sunduk.
- kapsam - kullanılabilir. Kapsam hakkında ayrıntılı bilgi için OAuth2 kapsamlarıyla çalışma başlıklı makaleyi inceleyin.
Kimlik Doğrulama
İstemci Kimliği ve İstemci Sırrı'nı Temel Kimlik Doğrulama başlığı olarak iletmeniz gerekir
(Base64 kodlu) veya form parametreleri client_id
ve
client_secret
. Bu değerleri, kayıtlı geliştirici uygulamasından edinebilirsiniz
istekle ilişkilidir. Ayrıca bkz. "Temel kimlik doğrulamasını kodlama
kimlik bilgileri".
Örnek uç nokta
Erişim jetonu oluşturmak için örnek bir uç nokta yapılandırması aşağıda verilmiştir. Bu plan Şifre atama türünü destekleyecek şekilde yapılandırılması gereken GenerateAccessToken politikası.
... <Flow name="generate-access-token"> <Request> <Step> <Name>GenerateAccessToken</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition> </Flow> ...
Örnek politika
Bu, şifre iznini kabul edecek şekilde yapılandırılan temel bir GenerateAccessToken politikasıdır. türü. Bu politikayla yapılandırabileceğiniz isteğe bağlı yapılandırma öğeleri hakkında bilgi için OAuthV2 politikasına bakın.
<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>
İadeler
<GenerateResponse>
etkinken politika bir JSON yanıtı döndürür. Not
şifre verme türüyle hem erişim jetonu hem de yenileme jetonunun basıldığını gösterir. Örneğin,
örnek:
{ "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" }
<GenerateResponse>
Yanlış değerine ayarlanırsa politika
tıklayın. Bunun yerine, aşağıdaki akış değişkenleri kümesini sayfaya ilişkin verilerle
erişim jetonu verilmesi.
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
Örneğin:
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
Erişim jetonu isteme: örtülü izin tür
Bu bölümde, örtülü izin türü akışını kullanarak erişim jetonu isteme işlemi açıklanmaktadır. Örneğin, OAuth 2.0 izin türlerine giriş için OAuth 2.0'a Giriş başlıklı makaleye göz atın.
Örnek talep edin
$ curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \ 'https://docs-test.apigee.net/oauth/implicit?response_type=token&client_id=ABC123&redirect_uri=http://callback-example.com'
Zorunlu parametreleri
Varsayılan olarak, bu parametreler sorgu parametreleri olmalıdır (yukarıdaki örnekte gösterildiği gibi); ancak,
bu varsayılan ayarı değiştirmek için <ResponseType>
,
OAuthV2'deki <ClientId>
ve <RedirectUri>
öğeleri
politikası./token
Ayrıntılar için OAuthV2 politikası başlıklı makaleye göz atın.
Kullanıcı kimlik bilgileri genellikle bir LDAP hizmeti kullanılarak kimlik bilgileri deposuna karşı doğrulanır açıklama metni veya JavaScript politikası.
- response_type -
token
değerine ayarlanmalıdır. - client_id: Kayıtlı bir geliştirici uygulamasının istemci kimliği.
- redirect_uri: Geri çağırma URI'si ayarlanmadıysa bu parametre zorunludur İstemci geliştirici uygulaması kaydedildiğinde sağlanır. Müşteride bir Geri Arama URL'si sağlandıysa bu değerle karşılaştırılır ve tam olarak eşleşmesi gerekir.
İsteğe bağlı parametreleri
- state - Yanıtla birlikte geri gönderilecek bir dize. Tipik kullanım kullanıma sunduk.
- kapsam - kullanılabilir. Kapsam hakkında ayrıntılı bilgi için OAuth2 kapsamlarıyla çalışma başlıklı makaleyi inceleyin.
Kimlik Doğrulama
Örtülü izin, temel kimlik doğrulaması gerektirmez. İstemci kimliği, request parametresini kullanın.
Örnek uç nokta
Erişim jetonu oluşturmak için örnek bir uç nokta yapılandırması aşağıda verilmiştir. Bu plan GenerateAccessTokenImplicitGrant politikası.
... <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> ...
Örnek politika
Bu, örtülü izin türü akışı. Kullanabileceğiniz isteğe bağlı yapılandırma öğeleri hakkında Bu politikayla yapılandırma için OAuthV2 politikası bölümüne bakın.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <OAuthV2 name="GenerateAccessTokenImplicit"> <DisplayName>GenerateAccessTokenImplicit</DisplayName> <Operation>GenerateAccessTokenImplicitGrant</Operation> <GenerateResponse enabled="true"/> </OAuthV2>
İadeler
<GenerateResponse>
etkinken politika bir 302 Konum yönlendirmesi döndürür
girin. Yönlendirme, redirect_uri
özelliğinde belirtilen URL'yi işaret eder
parametresini içerir ve erişim jetonu ile jetonun geçerlilik süresi eklenir. Örtülü
izin türü, yenileme jetonlarını desteklemiyor. Örneğin:
https://callback-example.com#expires_in=1799&access_token=In4dKm4ueoGZRbIYJhC9yZCmTFw5
<GenerateResponse>
Yanlış değerine ayarlanırsa politika
tıklayın. Bunun yerine, aşağıdaki akış değişkenleri kümesini sayfaya ilişkin verilerle
erişim jetonu verilmesi.
oauthv2accesstoken.{policy-name}.access_token oauthv2accesstoken.{policy-name}.expires_in //--in seconds
Örneğin:
oauthv2accesstoken.GenerateAccessToken.access_token oauthv2accesstoken.GenerateAccessToken.expires_in //--in seconds
Yetkilendirme kodu isteme
Yetkilendirme kodu atama türü akışı kullanıyorsanız, bu akıştan bir yetkilendirme kodunu kullanmanız gerekir.
Örnek istek
$ curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \ 'http://myorg-test.apigee.net/oauth/authorize?client_id={consumer_key}&response_type=code'
Bu örnekte, OAuthV2 GenerateAuthorizationCode politikasının
/oauth/authorize
proxy uç noktası (aşağıdaki örnek uç noktaya bakın).
Zorunlu parametreleri
Varsayılan olarak, bu parametreler sorgu parametreleri olmalıdır (yukarıdaki örnekte gösterildiği gibi); ancak,
bu varsayılan ayarı değiştirmek için <ResponseType>
,
OAuthV2'deki <ClientId>
ve <RedirectUri>
öğeleri
politikası./authorize
Ayrıntılar için OAuthV2 politikası başlıklı makaleye göz atın.
- response_type -
code
değerine ayarlanmalıdır. - client_id: Kayıtlı bir geliştirici uygulamasının istemci kimliği.
İsteğe bağlı parametreleri
- redirect_uri - Şurada tam (kısmi değil) Geri Arama URI'si belirtilirse kayıtlı istemci uygulaması için bu parametre isteğe bağlıdır. Aksi takdirde zorunludur. Geri çağırma Edge'in yeni oluşturulan yetkilendirme kodunu gönderdiği URL'dir. Uygulamaları kaydetme ve API'yi yönetme tuşlar.
- state - Yanıtla birlikte geri gönderilecek bir dize. Tipik kullanım kullanıma sunduk.
- kapsam - kullanılabilir. Kapsam hakkında ayrıntılı bilgi için OAuth2 kapsamlarıyla çalışma başlıklı makaleyi inceleyin.
Kimlik Doğrulama
Temel kimlik doğrulaması gerektirmez, ancak kayıtlı istemci uygulamasının istemci kimliği yerine getirilmelidir.
Örnek uç nokta
Aşağıda, yetkilendirme kodu oluşturmak için örnek bir uç nokta yapılandırması verilmiştir:
<OAuthV2 name="GenerateAuthorizationCode"> <Operation>GenerateAuthorizationCode</Operation> <!-- ExpiresIn, in milliseconds. The ref is optional. The explicitly specified value is the default, when the variable reference cannot be resolved. 60000 = 1 minute 120000 = 2 minutes --> <ExpiresIn>60000</ExpiresIn> <GenerateResponse enabled="true"/> </OAuthV2>
Örnek politika
Bu, temel bir GenerateAuthorizationCode politikasıdır. İsteğe bağlı yapılandırma hakkında bilgi için öğelerine göz atın. OAuthV2 politikası başlıklı makaleye göz atın.
<OAuthV2 name="GenerateAuthorizationCode"> <Operation>GenerateAuthorizationCode</Operation> <GenerateResponse enabled="true"/> </OAuthV2>
İadeler
<GenerateResponse>
etkinken politika ?code
değerini döndürür
redirect_uri
(Geri Çağırma URI'si) konumuna yetkilendirme içeren sorgu parametresi
kod eklendi. Tarayıcının Konum üstbilgisindeki URL ile bir 302 tarayıcı yönlendirmesi aracılığıyla gönderilir.
tıklayın. Örnek: ?code=123456
.
<GenerateResponse>
, false
değerine ayarlanırsa politika şunları yapmaz:
yanıt verebilir. Bunun yerine, aşağıdaki akış değişkenleri kümesini konuya ilişkin verilerle
eklemeniz gerekir.
oauthv2authcode.{policy-name}.code oauthv2authcode.{policy-name}.scope oauthv2authcode.{policy-name}.redirect_uri oauthv2authcode.{policy-name}.client_id
Örneğin:
oauthv2authcode.GenerateAuthorizationCode.code oauthv2authcode.GenerateAuthorizationCode.scope oauthv2authcode.GenerateAuthorizationCode.redirect_uri oauthv2authcode.GenerateAuthorizationCode.client_id.
Erişim jetonunu yenileme
Yenileme jetonu, genellikle erişim jetonundan sonra erişim jetonu almak için kullandığınız kimlik bilgisidir jetonun süresi doldu veya jeton geçersiz hale geldi. Aşağıdaki işlemleri gerçekleştirdiğinizde yanıtta bir yenileme jetonu döndürülür erişim jetonu alması gerekir.
Yenileme jetonu kullanarak yeni bir erişim jetonu istemek için:
Örnek istek
Aşağıdaki çağrıda temel kimlik doğrulama üstbilgisini kodlama hakkında bilgi edinmek için bkz. "Kodlama temel kimlik doğrulama bilgileri".
$ curl -X POST \ -H "Content-type: application/x-www-form-urlencoded" \ -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \ https://myorg-test.apigee.net/my_oauth_endpoint/refresh_accesstoken \ -d 'grant_type=refresh_token&refresh_token=my-refresh-token'
Gerekli parametreler
- grant_type:
refresh_token
değerine ayarlanmalıdır. - refresh_token - Kullandığınız erişim jetonuyla ilişkilendirilmiş yenileme jetonu istemem.
Politika varsayılan olarak bunları x-www-form-urlencoded
parametreleri olarak arar
(yukarıdaki örnekte gösterildiği gibi) istek gövdesinde belirtilir. Alternatif bir konum yapılandırmak için
bu girişler için, <GrantType>
ve
OAuthV2 politikasında <RefreshToken>
öğe var. Ayrıntılar için OAuthV2 politikası başlıklı makaleye göz atın.
İsteğe bağlı parametreler
- state - Yanıtla birlikte geri gönderilecek bir dize. Tipik kullanım kullanıma sunduk.
- kapsam - kullanılabilir. Kapsam hakkında ayrıntılı bilgi için OAuth2 kapsamlarıyla çalışma başlıklı makaleyi inceleyin.
Kimlik Doğrulama
- client_id
- client_secret
İstemci Kimliği ve İstemci Sırrı'nı Temel Kimlik Doğrulama başlığı olarak iletmeniz gerekir
(Base64 kodlu) veya client_id
ve client_secret
form parametreleri olarak. Görüntüleyin
Ayrıca "Kodlama temel kimlik doğrulama bilgilerini kodlama" bölümüne de göz atabilirsiniz.
Bir erişim jetonunu yenilerken kullanıcının yeniden kimlik doğrulaması yapılmaz.
Burada, yenileme jetonu kullanarak erişim jetonu oluşturmak için örnek bir uç nokta yapılandırması görebilirsiniz. RefreshAccessToken politikasını yürütür.
... <Flow name="generate-refresh-token"> <Request> <Step> <Name>RefreshAccessToken</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/refresh") and (request.verb = "POST")</Condition> </Flow> ...
Örnek politika
Bu,
refresh_token
izin türü. İsteğe bağlı yapılandırma öğeleri hakkında bilgi için
yapılandırabileceğiniz yapılandırmalar için OAuthV2 politikası başlıklı makaleye göz atın.
<?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>
İadeler
<GenerateResponse>
etkinken politika bir JSON yanıtı döndürür
yeni erişim jetonunu yazın. refresh_token
izin türü, her iki
erişim ve yeni yenileme jetonları yer alır. Örneğin:
{ "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" }.
Yeni bir yenileme jetonu oluşturulduktan sonra orijinal jetonun artık geçerli olmadığını bilmeniz gerekir.
<GenerateResponse>
doğru değerine ayarlandığında yukarıdaki yanıtı alırsınız.
<GenerateResponse>
Yanlış değerine ayarlanırsa politika bir yanıt döndürmez.
Bunun yerine, aşağıdaki bağlam (akış) değişkenleri kümesini, orijinal içeriğe ilişkin verilerle
erişim jetonu verilmesi.
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
Örneğin:
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
Kodlama temel kimlik doğrulama bilgileri
Jeton veya yetkilendirme kodu istemek için bir API çağrısında bulunmak iyi bir uygulamadır ve Client_id ve client_secret değerlerinin, IETF RFC 2617'de açıklandığı gibi bir HTTP Temel Kimlik Doğrulaması üstbilgisi. Bunu yapmak için: İki değerin birleştirilmesinin sonucunu iki nokta üst üste işaretiyle ayırıp base64 olarak kodlayın.
Sözde kodda:
result = Base64Encode(concat('ns4fQc14Zg4hKFCNaSzArVuwszX95X', ':', 'ZIjFyTsNgQNyxI'))
Bu örnekte ns4fQc14Zg4hKFCNaSzArVuwszX95X
, client_id ve
ZIjFyTsNgQNyxI
, istemci gizli anahtarıdır.
Base64 kodlu değeri hesaplamak için kullandığınız programlama dilinden bağımsız olarak,
istemci kimlik bilgileri için base64 kodlu sonuç şöyle olur:
bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg==
.
Ardından, jeton isteğini aşağıdaki şekilde yapabilirsiniz:
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Authorization: Basic bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg==' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'grant_type=client_credentials'
curl
yardımcı programı,
-u seçeneği. Aşağıdaki, yukarıdakine eşdeğerdir:
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \ -u 'ns4fQc14Zg4hKFCNaSzArVuwszX95X:ZIjFyTsNgQNyxI' \ -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \ -d 'grant_type=client_credentials'
Diğer programlama ortamları ise otomatik olarak base64 kodlu başlık içerir.
Veritabanında jetonlardan karma oluşturma
Veritabanı güvenlik ihlali durumunda OAuth erişimini korumak ve jetonları yenilemek için: Edge kuruluşunuzda otomatik jeton karma oluşturma işlemini etkinleştirin. Bu özellik etkinleştirildiğinde Edge Yeni oluşturulan OAuth erişiminin karma oluşturma işlemi uygulanmış sürümünü otomatik olarak oluşturur ve şunu kullanarak jetonları yenile: algoritmayı kullanın. (Mevcut jetonlara toplu olarak karma oluşturma işlemi uygulama ile ilgili bilgiler aşağıda verilmiştir.) İlgili içeriği oluşturmak için kullanılan Karma oluşturma işlemi uygulanmamış jetonlar API çağrılarında kullanılır. Edge, bu jetonları karma oluşturma işlemi uygulanmış sürümlerle karşılaştırarak doğrular. kontrol eder.
Aşağıdaki kuruluş düzeyindeki mülkler, OAuth jetonu karma oluşturma işlemini kontrol eder.
features.isOAuthTokenHashingEnabled = true features.OAuthTokenHashingAlgorithm = SHA1 | SHA256 | SHA384 | SHA512 | PLAIN
Karma oluşturma işlemi uygulanmış mevcut jetonlarınız varsa ve bunları süresi dolana kadar tutmak istiyorsanız Bu mülkler, karma oluşturma algoritmasının mevcut (örneğin, eski Edge varsayılanı olan SHA1). Jetonlara karma oluşturma işlemi uygulanmamışsa Düz.
features.isOAuthTokenFallbackHashingEnabled = true features.OAuthTokenFallbackHashingAlgorithm = SHA1 | SHA256 | SHA384 | SHA512 | PLAIN
Edge bulut müşterisiyseniz bu ayarları yapmak için Apigee Edge Destek Ekibi ile iletişime geçin ve isteğe bağlı olarak mevcut jetonlara toplu olarak karma oluşturma işlemi uygulayabilirsiniz.
İlgili konular
- istemci kimlik bilgisi verme türü
- Uygulamanın Yetkilendirme kodu izin türü
- API online güvenlik kursu (OAuth dahil)
- OAuthV2 politikası -- yetkilendirme sunucusuna nasıl istek gönderileceğini ve bu yapılandırmanın nasıl yapılandırılacağını gösteren OAuthV2 politikası.