Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Bu bölümde, OAuth 2.0 erişim jetonlarının son kullanıcı kimliği, uygulama kimliği veya her ikisine göre nasıl alınacağı ve iptal edileceği açıklanmaktadır. Son kullanıcı kimliği özelliği, bu konuda açıklandığı gibi özel bir kurulum gerektirir. Son kullanıcıdan kastımız, API'yi çağıran uygulamanın kullanıcısıdır.
Son kullanıcı kimliği erişimini ne zaman etkinleştirmelisiniz?
Bazen kullanıcı kimliğini erişim jetonunda depolamak yararlı olur. Son kullanıcı kimliği erişimi özelliğini yalnızca iyi bir kullanım alanınız varsa etkinleştirin. Örneğin:
- Web siteniz veya uygulamanız için, kullanıcıların yetkilendirdikleri üçüncü taraf uygulamalarını görebilecekleri ve bu uygulamalara erişimi iptal edebilecekleri bir özellik.
- Yetkili bir kullanıcının belirli bir geliştirici uygulamasıyla ilişkili tüm erişim jetonlarını iptal etmesine olanak tanıyan bir özellik.
OAuth erişim jetonları hakkında
Uygulama kimlikleri, OAuth erişim jetonuna otomatik olarak eklenir. Bu nedenle, aşağıda açıklandığı şekilde bir kuruluş için jeton erişimini etkinleştirdikten sonra erişim jetonlarını uygulama kimliğine göre iptal edebilirsiniz.
OAuth 2.0 erişim jetonlarını son kullanıcı kimliğine göre almak ve iptal etmek için erişim jetonlarında bir son kullanıcı kimliği bulunmalıdır. Aşağıdaki prosedürde, mevcut bir jetona nasıl son kullanıcı kimliği ekleneceği açıklanmaktadır.
Edge, varsayılan olarak bir OAuth 2.0 erişim jetonu oluşturduğunda jetonun biçimi aşağıda gösterildiği gibidir:
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", //--in seconds "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "token_type" : "BearerToken", "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP", "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL", "organization_name" : "myorg", "refresh_token_expires_in" : "0", //--in seconds "refresh_count" : "0" }
Aşağıdakileri göz önünde bulundurun:
- application_name alanı, jetonla ilişkili uygulamanın UUID'sini içerir. Uygulama kimliğine göre OAuth 2.0 erişim jetonlarının alınmasını ve iptal edilmesini etkinleştirirseniz bu, kullandığınız uygulama kimliğidir.
- access_token alanı, OAuth 2.0 erişim jetonu değerini içerir.
Varsayılan OAuth erişim jetonunda son kullanıcı kimliği alanı yoktur. OAuth 2.0 erişim jetonlarının son kullanıcı kimliğine göre alınmasını ve iptal edilmesini sağlamak için OAuth 2.0 politikasını, aşağıdaki prosedürde açıklandığı gibi kullanıcı kimliğini jetona dahil edecek şekilde yapılandırmanız gerekir. Yalnızca uygulama kimliğine göre OAuth 2.0 erişim jetonlarını almak ve iptal etmek istiyorsanız son kullanıcı kimliğine göre erişimi etkinleştirmenize gerek olmadığını unutmayın.
Son kullanıcı kimliğini jeton oluşturma bitiş noktasına iletirsiniz. Son kullanıcının kimliğini sorgu parametresi, form parametresi veya başlık olarak iletebilirsiniz (bu konunun ilerleyen bölümlerinde açıklandığı gibi). Edge'i, son kullanıcı kimliğini jetona dahil edecek şekilde yapılandırdıktan sonra bu kimlik, aşağıdaki örnekte gösterildiği gibi app_enduser alanı olarak dahil edilir:
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "app_enduser" : "6ZG094fgnjNf02EK", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", //--in seconds "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "token_type" : "BearerToken", "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP", "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL", "organization_name" : "myorg", "refresh_token_expires_in" : "0", //--in seconds "refresh_count" : "0" }
Bu alma ve iptal işlemlerini gerçekleştiren API çağrılarını nasıl yapacağınızı öğrenmek için aşağıdaki Smart Docs belgelerine bakın:
- OAuth2 erişim jetonunu son kullanıcı veya uygulama kimliğine göre iptal etme
- Son Kullanıcı veya Uygulama Kimliği ile OAuth2 Erişim Jetonu Alma
Kullanıcı kimliği ve uygulama kimliğine göre OAuth 2.0 jetonlarına erişimi etkinleştirme
Kullanıcı kimliği ve uygulama kimliğine göre OAuth 2.0 jetonlarına erişimi nasıl etkinleştireceğiniz, Edge'i nasıl dağıttığınıza bağlıdır:
Bulut tabanlı dağıtım
Edge'in bulut tabanlı dağıtımı, yapılandırmanın büyük bir kısmının Apigee tarafından yapıldığı anlamına gelir. Kullanıcı kimliğini erişim jetonuna eklemek için OAuth 2.0 politikasını yapılandırmaktan yalnızca siz sorumlusunuz. Daha fazla bilgi için aşağıdaki prosedüre bakın.
Private Cloud dağıtımı için Edge
Apigee Edge for Private Cloud'da (şirket içi) yapılandırmadan tamamen siz sorumlusunuz. Daha fazla bilgi için İşlemler ve Yapılandırma başlıklı makaleyi inceleyin.
Apigee hybrid
Kullanıcı kimliğine göre OAuth 2.0 jetonlarına erişim varsayılan olarak etkindir. Kullanıcı kimliğini erişim jetonuna eklemek için OAuth 2.0 politikasını yapılandırmaktan yalnızca siz sorumlusunuz. Daha fazla bilgi için aşağıdaki prosedürün 5. adımına bakın.
Bulutta erişimi etkinleştirme
1. adım: Bu özelliği desteklemek için bir kuruluşu etkinleştirin
Bu özelliği desteklemek istediğiniz her kuruluş için etkinleştirmeniz gerekir.
Kuruluşunuzun güncellenmesi için Apigee Edge Destek Ekibi ile iletişime geçin.
2. adım: İşlemler yöneticisi ve kuruluş yöneticisi rollerine OAuth2 kaynak izinleri verin
Son kullanıcı kimliğine veya uygulama kimliğine dayalı olarak oauth2 kaynağına bu alma (get) ve iptal etme (put) çağrılarını yapma izni yalnızca orgadmin ve opsadmin rollerinize verilmelidir.
oauth2 kaynağı için hangi rollerin get ve put izinlerine sahip olduğunu görmek amacıyla Get Permission for a Resource (Kaynak için İzin Al) API çağrısını kullanabilirsiniz.
Herhangi bir izin eklemeniz veya kaldırmanız gerekirse güncellemelerin yapılması için Apigee Edge Destek Ekibi ile iletişime geçin.
3. adım: Mevcut OAuth 2.0 erişim jetonlarını Cassandra düğümlerinize kopyalayın
Apigee Destek Ekibi tarafından gerçekleştirilir: Bu görevde, etkilenen kuruluşlardaki mevcut OAuth 2.0 erişim jetonlarının kopyaları kopyalanıp Cassandra düğümlerinizde depolanır. Bu prosedür, Apigee Edge podlarınızın her biri için Cassandra düğümlerinde gerçekleştirilir. Bu sayede, mevcut ve yeni oluşturulan tüm OAuth 2.0 erişim jetonlarınız için alma ve iptal etme API çağrıları çalıştırılabilir.
4. adım: Son kullanıcı kimliklerini içeren erişim jetonları oluşturmak için bir OAuth 2.0 politikası yapılandırın
Erişim jetonları oluşturmak için kullanılan OAuth 2.0 politikasını, jetona son kullanıcı kimliğini içerecek şekilde yapılandırın. Erişim jetonlarına son kullanıcı kimliklerini ekleyerek son kullanıcı kimliğine göre alma ve iptal etme işlemlerini gerçekleştirebilirsiniz.
Politikayı, erişim jetonuna son kullanıcı kimliği içerecek şekilde yapılandırmak için son kullanıcı kimliğini içeren giriş değişkenini belirtmeniz gerekir. Değişkeni belirtmek için <AppEndUser> etiketini kullanın.
Aşağıdaki GenerateAccessTokenClient adlı OAuth 2.0 politikası, bir OAuth 2.0 erişim jetonu oluşturur. Kalın olarak belirtilen <AppEndUser> etiketinin eklendiğine dikkat edin:
<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient"> <DisplayName>OAuth 2.0.0 1</DisplayName> <ExternalAuthorization>false</ExternalAuthorization> <Operation>GenerateAccessToken</Operation> <SupportedGrantTypes> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> <GrantType>request.queryparam.grant_type</GrantType> <AppEndUser>request.header.appuserID</AppEndUser> <ExpiresIn>960000</ExpiresIn> </OAuthV2>
Ardından, kullanıcı kimliğini appuserID üst bilgisi olarak ileterek OAuth 2.0 erişim jetonunu oluşturmak için aşağıdaki cURL komutunu kullanabilirsiniz:
curl -H "appuserID:6ZG094fgnjNf02EK" / https://myorg-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials / -X POST / -d 'client_id=k3nJyFJIA3p62TKIkLO6OJNi87GYXFmP&client_secret=gk58jK5lIp943AY4'
Bu örnekte, appuserID bir istek başlığı olarak iletilir. Bilgileri bir isteğin parçası olarak birçok şekilde iletebilirsiniz. Örneğin, alternatif olarak şunları yapabilirsiniz:
- Form parametresi değişkeni kullanın: request.formparam.appuserID
- Son kullanıcı kimliğini sağlayan bir akış değişkeni kullanın