Edge for Private Cloud v4.18.01
Dokumen ini menjelaskan cara mengaktifkan pengambilan dan pencabutan token akses OAuth 2.0 dengan ID pengguna akhir, ID aplikasi, atau keduanya.
ID aplikasi otomatis ditambahkan ke token akses OAuth. Oleh karena itu, setelah Anda menggunakan prosedur di bawah ini untuk mengaktifkan akses token untuk organisasi, Anda dapat mengakses token berdasarkan ID aplikasi.
Untuk mengambil dan mencabut token akses OAuth 2.0 berdasarkan ID pengguna akhir, ID pengguna akhir harus ada di token akses. Prosedur di bawah ini menjelaskan bagaimana menambahkan ID pengguna akhir ke token yang ada atau ke token baru.
Secara default, saat Edge membuat token akses OAuth 2.0, token tersebut memiliki format:
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", "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", "refresh_count" : "0" }
Perhatikan hal berikut:
- Kolom application_name berisi UUID aplikasi yang terkait dengan token. Jika Anda mengaktifkan pengambilan dan pencabutan token akses OAuth 2.0 berdasarkan ID aplikasi, ini adalah ID aplikasi yang Anda gunakan.
- Kolom access_token berisi nilai token akses OAuth 2.0.
Untuk memungkinkan pengambilan dan pencabutan token akses OAuth 2.0 menurut ID pengguna akhir, konfigurasikan Kebijakan OAuth 2.0 untuk menyertakan ID pengguna dalam token, seperti yang dijelaskan dalam prosedur di bawah.
ID pengguna akhir adalah string yang digunakan Edge sebagai ID developer, bukan email developer alamat IPv6 Anda dapat menentukan ID pengembang dari alamat email pengembang dengan menggunakan fungsi Panggilan API Developer.
Setelah Anda mengonfigurasi Edge untuk menyertakan ID pengguna akhir dalam token, ID tersebut akan disertakan sebagai app_enduser, seperti yang ditunjukkan di bawah ini:
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "app_enduser" : "6ZG094fgnjNf02EK", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", "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", "refresh_count" : "0" }
API yang akan diambil dan dicabut Token akses OAuth 2.0 berdasarkan ID pengguna dan ID aplikasi
Gunakan API berikut untuk mengakses token OAuth berdasarkan ID pengguna, ID aplikasi, atau keduanya:
- Dapatkan OAuth 2.0 Token Akses berdasarkan ID Pengguna Akhir atau ID Aplikasi
- Cabut OAuth 2.0 Token Akses berdasarkan ID Pengguna Akhir atau ID Aplikasi
Prosedur untuk mengaktifkan akses token
Gunakan prosedur berikut untuk mengaktifkan pengambilan dan pencabutan token akses OAuth 2.0 dengan ID pengguna akhir dan ID aplikasi.
Langkah 1: Mengaktifkan dukungan akses token untuk organisasi
Anda harus mengaktifkan akses token untuk setiap organisasi secara terpisah. Panggil PUT API di bawah ini untuk masing-masing organisasi tempat Anda ingin mengaktifkan pengambilan dan pencabutan token akses OAuth 2.0 menurut ID pengguna akhir atau ID aplikasi.
Pengguna yang melakukan panggilan berikut harus dalam peran orgadmin atau opsadmin untuk organisasi. Ganti nilai pada {curly kurung kurawal} dengan nilai khusus organisasi:
> curl -H "Content-type:text/xml" -X POST \ https://<ms-ip>:8080/v1/organizations/{org_name} \ -d '<Organization name="{org_name}"> <Properties> <Property name="features.isOAuthRevokeEnabled">true</Property> <Property name="features.isOAuth2TokenSearchEnabled">true</Property> </Properties> </Organization>' \ -u {userEmail}:{mypassword}
Langkah 2: Menetapkan izin untuk peran opsadmin di organisasi
Hanya peran orgadmin dan opsadmin dalam organisasi harus diberi izin untuk mengambil (HTTP GET) dan mencabut token OAuth 2.0 (HTTP PUT) berdasarkan berdasarkan ID pengguna atau ID aplikasi. Untuk mengontrol akses, atur izin akses pada sumber daya /oauth2 untuk sebuah organisasi. Resource tersebut memiliki URL dalam bentuk:
https://<ms-ip>:8080/v1/organizations/{org_name}/oauth2
Peran orgadmin seharusnya sudah memiliki izin yang diperlukan. Untuk Peran opsadmin untuk resource /oauth2, izinnya harus seperti berikut ini:
<ResourcePermission path="/oauth2"> <Permissions> <Permission>get</Permission> <Permission>put</Permission> </Permissions> </ResourcePermission>
Anda dapat menggunakan metode Get Izin untuk panggilan Single Resource API guna melihat peran mana yang memiliki izin untuk /oauth2.
Berdasarkan respons tersebut, Anda dapat menggunakan metode Tambahkan Izin untuk Resource ke Peran dan Hapus panggilan API Permission for Resource untuk melakukan penyesuaian yang diperlukan pada /oauth2 izin akses resource.
Gunakan perintah cURL berikut untuk memberikan izin get dan put ke opsadmin untuk resource /oauth2. Ganti nilai di {curly braces} dengan nilai khusus organisasi:
> curl -X POST -H 'Content-type:application/xml' \ http://<ms-ip>:8080/v1/organizations/{org}/userroles/opsadmin/permissions \ -d '<ResourcePermission path="/oauth2"> <Permissions> <Permission>get</Permission> <Permission>put</Permission> </Permissions> </ResourcePermission>' \ -u {USEREMAIL}:{PWD}
Gunakan perintah cURL berikut untuk mencabut izin get dan put untuk resource /oauth2 dari peran selain orgadmin dan opsadmin. Ganti nilai pada {curly kurung kurawal} dengan nilai khusus organisasi:
> curl -X DELETE -H 'Content-type:application/xml' \ http://<msip>:8080/v1/organizations/{org-name}/userroles/{roles}/permissions \ -d '<ResourcePermission path="/oauth2"> <Permissions></Permissions> </ResourcePermission>' \ -u {USEREMAIL}:{PWD}
Langkah 3: Setel properti oauth_max_search_limit
Pastikan parameter conf_keymanagement_oauth_max_search_limit properti di /opt/apigee/customer/application/management-server.properties ditetapkan ke 100:
conf_keymanagement_oauth_max_search_limit = 100
Jika file ini tidak ada, buatlah.
Properti ini menetapkan ukuran halaman yang digunakan saat mengambil token. Apigee merekomendasikan nilai 100, tetapi Anda dapat mengaturnya sesuai keinginan Anda.
Pada penginstalan baru, properti seharusnya sudah ditetapkan ke 100. Jika Anda harus mengubah properti ini, mulai ulang Server Pengelolaan dan Pemroses Pesan dengan menggunakan berikut:
> /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart > /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Langkah 4: Konfigurasikan kebijakan OAuth 2.0 yang membuat token untuk menyertakan ID pengguna akhir
Konfigurasikan kebijakan OAuth 2.0 yang digunakan untuk membuat token akses guna menyertakan ID pengguna akhir dalam token tersebut. Dengan memasukkan ID pengguna akhir dalam token akses, Anda dapat mengambil dan mencabut token dengan ke ID.
Untuk mengonfigurasi kebijakan agar menyertakan ID pengguna akhir dalam token akses, permintaan yang membuat token akses harus menyertakan ID pengguna akhir dan Anda harus menentukan variabel {i>input <i}yang berisi ID pengguna akhir.
Kebijakan OAuth 2.0 di bawah, yang bernama GenerateAccessTokenClient, menghasilkan akses OAuth 2.0 sebelumnya yang benar. Perhatikan penambahan tag <AppEndUser> dalam huruf tebal yang menentukan variabel yang berisi ID pengguna akhir:
<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>
Anda kemudian dapat menggunakan perintah cURL berikut untuk membuat token akses OAuth 2.0, dengan meneruskan ID pengguna sebagai appuserID {i>header<i}:
> curl -H "appuserID:6ZG094fgnjNf02EK" \ https://myorg-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials \ -X POST \ -d 'client_id=k3nJyFJIA3p62TKIkLO6OJNXFmP&client_secret=gk5K5lIp943AY4'
Dalam contoh ini, appuserID diteruskan sebagai header permintaan. Anda dapat meneruskan informasi sebagai bagian dari permintaan dengan banyak cara. Sebagai misalnya, sebagai alternatif, Anda dapat:
- Menggunakan variabel parameter formulir: request.formparam.appuserID
- Gunakan variabel alur yang menyediakan ID pengguna akhir