Şifre izni türünü uygulama

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Kaynak sahibi şifresi (veya "şifre") izin türü, çoğunlukla uygulamaya son derece güvenilir olduğu durumlarda kullanılır. Bu yapılandırmada kullanıcı, istemci uygulamasına kaynak sunucusu kimlik bilgilerini (kullanıcı adı/şifre) sağlar. Bu da kullanıcıyı Apigee Edge'e bir erişim jetonu isteğinde gönderir. Bir kimlik sunucusu kimlik bilgilerini doğrular. Kimlik bilgileri geçerliyse Edge bir erişim jetonu hazırlar ve bunu uygulamaya döndürür.

Bu konu hakkında

Bu konu başlığında OAuth 2.0 kaynak sahibi şifre izni türü akışıyla ilgili genel bir açıklama ve genel bakış sunulmakta olup bu akışın Apigee Edge'de nasıl uygulanacağı anlatılmaktadır.

Yararlı bulabileceğiniz örnekler

  • Erişim jetonu isteme: Şifre izin türü: Jeton isteğinin nasıl oluşturulacağını, şifre izin türü için OAuthV2 politikasını nasıl yapılandıracağınızı ve Edge'deki politika için bir uç noktanın nasıl yapılandırılacağını gösterir.
  • oauth-verify-key-secret: GitHub'da Edge'e dağıtıp deneyebileceğiniz örnek bir proxy. Bu, şifre atama türünü gösteren uçtan uca bir örnektir. Burada en iyi uygulama, kullanıcının kimlik bilgilerini bir kimlik sağlayıcıya göndermeden önce istemci uygulamasının kimlik bilgilerinin (anahtar/gizli) doğrulanmasıdır.

Video

Video: Şifre izni türünü uygulama hakkındaki bu videoya göz atın.

Kullanım alanları

Kullanıcının, kaynak sunucusu kimlik bilgilerini uygulamaya vermesi gerektiğinden bu izin türü, yüksek düzeyde güvenilir veya ayrıcalıklı uygulamalar için tasarlanmıştır. Uygulama, genellikle kullanıcının kimlik bilgilerini gireceği bir giriş ekranı sağlar.

Akış diyagramı

Aşağıdaki akış şemasında, yetkilendirme sunucusu olarak hizmet veren Apigee Edge'in kaynak sahibi şifre verme türü akışı gösterilmektedir.

İpucu: Bu diyagramın daha büyük bir sürümünü görmek için şemayı sağ tıklayıp yeni bir sekmede açın veya kaydedip bir resim görüntüleyicide açın.

Şifre izin türü akışındaki adımlar

Aşağıda, Apigee Edge'in yetkilendirme sunucusu olarak hizmet verdiği şifre verme türünü uygulamak için gereken adımlar özetlenmiştir.

Ön koşul: İstemci kimliği ve istemci gizli anahtarı anahtarlarını almak için istemci uygulamasının Apigee Edge'e kayıtlı olması gerekir. Ayrıntılar için İstemci uygulamalarını kaydetme bölümüne bakın.

1. Kullanıcı akışı başlatır ve kimlik bilgilerini girer.

Uygulamanın, kullanıcının korunan kaynaklarına erişmesi gerektiğinde (örneğin, kullanıcı uygulamadaki bir düğmeyi tıkladığında) kullanıcı bir giriş formuna yönlendirilir.

2. Uygulama Apigee Edge'den erişim jetonu istiyor

Uygulama, Apigee Edge'deki GenerateAccessToken uç noktasına kullanıcının kimlik bilgilerini de içeren bir erişim jetonu isteği gönderir.

Bu izin türü için gerekli parametreleri içeren örnek bir POST isteği aşağıda verilmiştir:

$ curl -i \
  -X POST \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \
  -d 'grant_type=password&username=the-user-name&password=the-users-password' \
  https://docs-test.apigee.net/oauth/token

Alternatif olarak bu komut, sizin için base64 kodlu Temel Kimlik Doğrulama üstbilgisini oluşturmak üzere curl'le birlikte -u seçeneği kullanılarak aşağıdaki gibi de uygulanabilir.

$ curl -i \
  -X POST \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -u sqH8ooHexTz8C02IX9ORo6rhgq1iSrAl:Z4ljtJdneBOjPMAU \
  -d 'grant_type=password&username=the-user-name&password=the-users-password' \
  https://docs-test.apigee.net/oauth/token

(Bu komutların her biri tek satırda olmalıdır.)

Kullanıcı kimlik bilgileri form parametrelerinde bulunur, istemci kimlik bilgileri ise HTTP temel kimlik doğrulama başlığında kodlanır. Gerekli Temel Kimlik Doğrulama başlığı hakkındaki ayrıntılar da dahil olmak üzere bu API çağrısının ayrıntılı açıklaması için "Erişim jetonları ve yetkilendirme kodları isteme" başlıklı makalenin şifre verme bölümüne bakın.

3. Edge, istemci uygulamasını doğrular

Kullanıcının kullanıcı adını ve şifresini bir kimlik sağlayıcıya göndermeden önce Edge'in, istekte bulunan istemci uygulamasının geçerli ve güvenilir bir uygulama olduğunu bilmesi gerekir. Bunu yapmanın bir yolu, API çağrısında API anahtarı kimlik doğrulamasını kullanmaktır. Bazı durumlarda hem istemci anahtarını hem de gizli anahtarı doğrulamak isteyebilirsiniz. GitHub'daki api-platform-samples deposunda bu allternate tekniğini gösteren örnek bir proxy bulunmaktadır.

4. Edge, giriş kimlik bilgilerini işler

İstemci uygulaması doğrulandıktan sonra, kullanıcının kimlik bilgilerini göndererek kimlik hizmetini çağırmak için bir Hizmet Çağrısı veya JavaScript politikası kullanabilirsiniz. Örneğin, bir LDAP hizmeti veya kimlik bilgilerini doğrulamak için kullanmak istediğiniz herhangi bir hizmet olabilir. Bu politikalarla ilgili ayrıntılar için Değişkenleri Ayıklama politikası ve JavaScript politikası bölümlerine bakın.

Kimlik hizmeti, kimlik bilgilerini doğrular ve 200 yanıtı döndürürse Edge isteği işlemeye devam eder. Aksi takdirde Edge işlemeyi durdurur ve istemci uygulamasına bir hata döndürür.

5. OAuthV2 politikası yürütülür

Kimlik bilgileri geçerliyse bir sonraki işleme adımı, şifre verme türü için yapılandırılmış bir OAuthV2 politikası yürütmektir. Bir örnekle açıklayalım. <UserName> ve <PassWord> öğeleri gereklidir. Bunları ExtractVariables politikasıyla kaydedilen akış değişkenlerinden alabilirsiniz. Bu politikayla ilgili ayrıntılı referans bilgileri için OAuthV2 politikası bölümüne bakın.

<OAuthV2 name="GetAccessToken">
  <Operation>GenerateAccessToken</Operation>
  <ExpiresIn>360000000</ExpiresIn> 
  <SupportedGrantTypes> 
     <GrantType>password</GrantType> 
  </SupportedGrantTypes> 
  <GrantType>request.queryparam.grant_type</GrantType> 
  <UserName>login</UserName>
  <PassWord>password</PassWord>
  <GenerateResponse/> 
</OAuthV2>

Bu politika başarılı olursa istemciye erişim jetonu içeren bir yanıt oluşturulur. Yanıt JSON biçimindedir. Bir örnekle açıklayalım. access_token değerinin aşağıdaki öğelerden biri olduğunu unutmayın:

{
    "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",
    "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": "0",
    "refresh_count": "0"
}

6. İstemci, korumalı API'yi çağırır

Artık geçerli bir erişim koduyla istemci, korunan API'ye çağrı yapabilir. Bu senaryoda Apigee Edge'e (proxy) istek gönderilir ve API çağrısını hedef kaynak sunucusuna iletmeden önce erişim jetonunu doğrulamaktan Edge sorumludur. Erişim jetonları, bir Yetkilendirme üst bilgisi içinde iletilir. Örneğin:

$ curl -H "Authorization: Bearer I6daIgMSiUgYX1K2qgQWPi37ztS6
" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282