Erişim jetonları ve yetkilendirme kodları isteme

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ğer redirect_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