Üçüncü Taraf OAuth Jetonlarını Kullanma

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Bu konuda, harici olarak oluşturulan erişim jetonlarının nasıl içe aktarılacağını, yenilenen jetonların veya yetkilendirme kodlarını Edge jeton deposuna yerleştirin. Aşağıdaki durumlarda bu tekniği kullanabilirsiniz: Apigee Edge'i, Apigee Edge dışında oluşturulan jetonları doğrulayacak şekilde yapılandıracaksınız.

Her zamanki durumda Apigee Edge bir OAuth jetonu oluşturup depolar ve bu jetonu tekrar çağrı uygulaması. Çağrı uygulaması daha sonra istekte bulunurken bu jetonu Apigee Edge'e sunar hizmeti ve Apigee Edge'in de (Operasyon = VerifyAccessToken) OAuthV2 politikası aracılığıyla jetonun geçerli olduğunu doğrulayın. Bu konuda, Apigee Edge'i depolamak için nasıl yapılandırabileceğiniz açıklanmaktadır. Jeton doğrulama kısmını değiştirmeden, başka bir yerde oluşturulmuş bir OAuth jetonu sanki Jeton Edge tarafından oluşturulmuş gibi.

Örnek

Tekniği gösteren, çalışan bir örnek görmek isterseniz bu bölümde anlatıldığı gibi, Apigee'nin Temsilcili Jeton Yönetimi örneği.

Bu nedir?

Çalıştığınızda mevcut bir yetkilendirme sisteminiz olduğunu ve 2 Adımlı Doğrulama'yı OAuth2 jetonu veya kod değerleri yerine söz konusu sistem tarafından oluşturulan jeton ya da kod değerleri Edge üretir. Ardından, yedeklenen jeton veya kodla güvenli API proxy isteklerinde bulunabilirsiniz. Edge ise bunları Edge tarafından oluşturulmuş gibi doğrulayacaktır.

Biraz Arka Plan Bilgisi

Apigee Edge her zamanki gibi rastgele harf dizesi üretip rastgele bir harf dizesi üreterek ve numaraları'na dokunun. Apigee Edge bu jetonla, jetonun verildiği zaman ve diğer veriler gibi verileri ilişkilendirir. geçerlilik süresi, jetonun geçerli olduğu API ürünleri listesi ve kapsam. Bunların tümü bilgi, OAuthV2 politikası tarafından otomatik olarak oluşturulan bir yanıtta döndürülebilir İşlem = GenerateAccessToken olarak yapılandırıldı. Yanıt şu şekilde görünür:

{
  "issued_at": "1469735625687",
  "application_name": "06947a86-919e-4ca3-ac72-036723b18231",
  "scope": "urn://example.com/read",
  "status": "approved",
  "api_product_list": "[implicit-test]",
  "api_product_list_json": ["implicit-test"],
  "expires_in": "1799", //--in seconds
  "developer.email": "joe@weathersample.com",
  "token_type": "BearerToken",
  "client_id": "U9AC66e9YFyI1yqaXgUF8H6b9wUN1TLk",
  "access_token": "zBC90HhCGmGlaMBWeZAai2s3za5j",
  "organization_name": "wwitman",
  "refresh_token_expires_in": "0", //--in seconds
  "refresh_count": "0"
}

access_token özelliğinin değeri, etkin bir şekilde yanıt verileridir. Bir uygulama, Edge'de barındırılan bir API proxy'sine istekte bulunabilir. OAuthV2 ile hamiline ait jetonu zBC90HhCGmGlaMBWeZAai2s3za5j ve Edge'i taşıyan politikası = VerifyAccessToken: jetonu arar, tüm bilgileri alır, ve bu bilgileri kullanarak istenen API Proxy'si için jetonun geçerli olup olmadığını belirleyebilirsiniz. Buna Jeton doğrulama adı verilir. Yukarıdaki bilgilerin tümü jetonu oluşturur. İlgili içeriği oluşturmak için kullanılan access_token değeri yalnızca bu bilgiyi arama yoludur.

Diğer yandan, burada açıklanan adımları uygulayarak Edge'i bir Böylece access_token değeri harici bir web sunucusu tarafından oluşturulan bir jetondur. geliştirmenizi sağlar. Diğer tüm meta veriler aynı olabilir. Örneğin, Yeşil Ofis’te "TOKEN-<16 rastgele" biçiminde jetonlar oluşturan, Apigee Edge'in dışında sayılar>" , Bu durumda, Apigee Edge tarafından depolanan tam jeton meta verileri şöyle olabilir:

{
  "issued_at": "1469735625687",
  "application_name": "06947a86-919e-4ca3-ac72-036723b18231",
  "scope": "urn://example.com/read",
  "status": "approved",
  "api_product_list": "[implicit-test]",
  "api_product_list_json": ["implicit-test"],
  "expires_in": "1799", //--in seconds
  "developer.email": "joe@weathersample.com",
  "token_type": "BearerToken",
  "client_id": "U9AC66e9YFyI1yqaXgUF8H6b9wUN1TLk",
  "access_token": "TOKEN-1092837373654221",
  "organization_name": "wwitman",
  "refresh_token_expires_in": "0", //--in seconds
  "refresh_count": "0"
}

Bu durumda bir uygulama, Edge'de barındırılan ve hamileyi taşıyan API proxy'sine istekte bulunabilir. TOKEN-1092837373654221 jetonu ve Edge - OAuthV2 politikası aracılığıyla = İşlemi ile VerifyAccessToken - bunu doğrulayabilir. Benzer bir içe aktarma kalıbını yetkilendirme kodları ve yenileme jetonları.

İstemci Doğrulama İşleminden Bahsedelim Kimlik bilgileri

Jeton oluşturmanın ön koşullarından biri, istekte bulunan istemciyi doğrulamaktır. Varsayılan olarak Apigee Edge'deki OAuthV2/GenerateAccessToken politikası istemci kimlik bilgilerini dolaylı olarak doğrular. Normalde OAuthV2 jetonuna yönelik bir istekte, client_id ve client_secret de HTTP Temel Yetkilendirme aracılığıyla kodlanmış Yetkilendirme üstbilgisi (iki nokta üst üste birleştirilmiş, ardından base64 kodlu olarak kodlayın). Apigee Edge'deki OAuthV2/GenerateAccessToken politikası bu başlığın kodunu çözer ve client_id değerini arar ve iletilen client_secret değerinin bu istemci için geçerli olduğunu doğrular client_id. Bu durum, kimlik bilgileri Apigee Edge tarafından biliniyorsa işe yarar. Başka bir deyişle, Apigee Edge'de depolanan ve kendisinde client_id ve client_secret vardır.

İstemci kimlik bilgilerinin Apigee Edge tarafından doğrulanmaması durumunda jeton oluşturmadan önce API Proxy'nizi tasarlayarak anlamına gelir. Bu, genellikle bir ServiceReference politikası olur. ağınızdaki bir uzak uç noktaya bağlanır.

Dolaylı veya açık bir şekilde olmak üzere, açık ya da kapalı olmak kaydıyla, API Proxy'sinin önce istemci kimlik bilgilerini doğrular. Anahtar kelimeleri doğrularken istemci, erişim jetonunun oluşturulmasından bağımsızdır. Apigee Edge'i şunları yapacak şekilde yapılandırabilirsiniz: ya da ikisini birden yapmayı tercih edebilirsiniz.

Apigee Edge'deki OAuthV2/GenerateAccessToken politikasının istemciyi doğrulamasını istiyorsanız kimlik bilgilerini görmek için "<ExternalAuthorization>" öğesini şu değere ayarlayın: false ekleyin veya bunu tamamen atlayın. Bir harici yetkilendirme hizmeti aracılığıyla yapılandırılabilir. <ExternalAuthorization> - true.

Apigee Edge istemci kimlik bilgilerini doğrulamasa da Client_id'nin Apigee Edge tarafından bilinmesi ve yönetilmesi gerekir. Apigee Edge'deki her access_token oluşturulan veya harici bir sistem tarafından oluşturulup Apigee Edge'e aktarılan bir istemci uygulamasıyla (client_id ile belirtilen) ilişkilendirilmelidir. Böylece, burada Apigee Edge'deki OAuthV2/GenerateAccessToken politikası, client_id ve client_secret eşleşirse politika, client_id değerinin geçerli ve mevcut olduğunu iptal edildi. Bu nedenle, ön koşul niteliğindeki bir kurulum adımı olarak client_id'leri Edge üzerinden içe aktarmanız gerekebilir. yönetim API'si.

Apigee'de üçüncü taraf OAuth için Politika Akışı

Apigee Edge'de üçüncü taraf OAuth sistemlerinden jeton kullanmak için erişim oluşturma akışı jetonları aşağıdaki kalıplardan birini izlemelidir.

Kuruluş dışı Müşteri Kimlik Bilgilerini Doğrulama

  1. ServiceCallout seçeneğini tıklayın.
  2. ExtractVariables veya bir JavaScript adımı yanıttan harici olarak oluşturulmuş jetonu çıkarın.
  3. AssignMessage'ı: oauth_external_authorization_status adlı, iyi bilinen özel değişkeni ayarlayın. İstemci kimlik bilgilerinin geçerli olduğunu belirtmek için değer doğru olmalıdır.
  4. OAuthV2/GenerateAccessToken <ExternalAuthorization> öğesi, true olarak ayarlandı ve en az bir öğe <ExternalAccessToken>, <ExternalRefreshToken> veya <ExternalAuthorizationCode>.

Dahili Müşteri Kimlik Bilgilerini Doğrulama

  • ServiceCallout harici bir jeton almak için.
  • ExtractVariables veya bir JavaScript adımı yanıttan harici olarak oluşturulmuş jetonu çıkarın.
  • OAuthV2/GenerateAccessToken <ExternalAuthorization> öğesi, false olarak ayarlandı ve en az bir öğe <ExternalAccessToken>, <ExternalRefreshToken> veya <ExternalAuthorizationCode>.

Akış ve politika yapılandırması ile ilgili notlar

  • İstemci kimlik bilgilerini doğrulamak için harici bir sistem kullanmak istiyorsanız bir politika akışı geliştirmek sizin görevinizdir. Normalde bu sorunu çözmek için Harici olarak tanınan kimlik bilgilerini harici kimlik doğrulama hizmeti. Harici kimlik doğrulama hizmeti genellikle Ayrıca kimlik bilgileri geçerliyse bir erişim jetonu da.

  • Servicecall'dan sonra, API proxy'sinin yanıtı çözümleyerek geçerlilik durumunun yanı sıra harici olarak oluşturulan access_token ve muhtemelen refresh_token.

  • OAuthV2/GenerateAccessToken politikasında <StoreToken> öğesini ayarlayın. true değerine ve <ExternalAuthorization> öğesini Uygun şekilde true veya false.

    OAuthV2/GenerateAccessToken politikası yürütüldüğünde değişkeni okur. oauth_external_authorization_status Değişken ayarlanmışsa ve değer bu durumda Apigee Edge istemci kimlik bilgilerini doğrulamaya çalışmaz. Değişken ayarlanmadıysa veya değer doğru değilse Apigee Edge, istemciyi kimlik bilgileri.

  • OAuthV2 politikası için, harici veri kullanımını belirtmenize olanak tanıyan üç öğe vardır içe aktarılacak veri: <ExternalAccessToken>, <ExternalRefreshToken>, ve <ExternalAuthorizationCode>. Bu öğelerin her biri akış değişkenine göz atın. Edge politikası, Search Console'da bulunan harici olarak oluşturulan erişim jetonu, yenileme jetonu veya yetkilendirme kodu olabilir. Bu seçim size harici jetonları veya kodları uygun konuma yerleştirmek için politikaları ve değişkenlerine karşılık gelir.

    Örneğin, OAuthV2 politikasındaki aşağıdaki yapılandırma, Edge'e external_token adlı bir bağlam değişkeninde belirtiliyor.

    <ExternalAccessToken>external_token</ExternalAccessToken>
    

    Bu değişkeni ayarlayan önceki bir adımınız da olmalıdır.

  • oauth_external_authorization_status değişkeninin ayarlanmasıyla ilgili olarak, tekniği, aşağıdaki gibi bir AssignmentMessage politikası kullanmaktır: Atayan değişkeni şu şekilde bir öğedir:

    <AssignMessage name="AssignMessage-SetVariable">
        <DisplayName>Assign Message - Set Variable</DisplayName>
        <AssignVariable>
            <Name>oauth_external_authorization_status</Name>
            <Value>true</Value>
        </AssignVariable>
        <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    </AssignMessage>
    

    Bu politikanın, Şu İşlemi içeren OAuthV2 politikasından önce olması gerektiğini unutmayın: GenerateAccessToken.

Örnek OAuthV2 politikası

Aşağıdaki OAuthV2 politikası kullandığı için Apigee Edge erişim jetonu oluşturur. external_access_token akış değişkenindeki jeton değeri.

<OAuthV2 name="OAuth-v20-Store-External-Token">
    <ExternalAccessToken>external_access_token</ExternalAccessToken>
    <ExternalAuthorization>true</ExternalAuthorization>
    <Operation>GenerateAccessToken</Operation>
    <GenerateResponse enabled="true">
        <Format>FORM_PARAM</Format>
    </GenerateResponse>
    <ReuseRefreshToken>false</ReuseRefreshToken>
    <StoreToken>true</StoreToken>
    <SupportedGrantTypes>
        <GrantType>client_credentials</GrantType>
    </SupportedGrantTypes>
    <ExpiresIn ref='flow.variable'>2400000</ExpiresIn>
</OAuthV2>
.

Teoride, bu kalıbı herhangi bir üçüncü taraf OAuth2 yetkilendirmesi ile uygulayabilirsiniz geliştirmenizi sağlar.