Cabut token akses OAuth 2.0 menurut ID pengguna akhir, ID aplikasi, atau keduanya

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Baca dokumentasi Apigee Edge.

Anda dapat mencabut token akses OAuth 2.0 dengan ID pengguna akhir, ID aplikasi, atau keduanya menggunakan kebijakan RevokeOAuthV2. Yang kami maksud dengan pengguna akhir adalah pengguna aplikasi yang memanggil API.

Kapan harus menyimpan ID pengguna dalam token akses

ID pengguna tidak disertakan dalam token akses secara default. Terkadang, ada baiknya menyimpan ID pengguna dalam token akses. Contoh:

  • Fitur untuk situs atau aplikasi Anda tempat pengguna dapat melihat aplikasi pihak ketiga yang telah mereka beri otorisasi, dan untuk memberikan opsi untuk mencabut akses ke aplikasi tersebut.
  • Fitur yang memungkinkan pengguna yang berwenang untuk mencabut semua token akses yang terkait dengan Aplikasi Developer tertentu.

Tentang token akses OAuth

Secara default, saat Apigee menghasilkan token akses OAuth 2.0, token tersebut memiliki format seperti berikut:

{
 "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"
}

Perhatikan hal-hal berikut:

  • Kolom application_name berisi UUID aplikasi yang terkait dengan token. Jika Anda mengaktifkan pencabutan token akses OAuth 2.0 berdasarkan ID aplikasi, maka ini adalah ID aplikasi yang Anda gunakan.
  • Kolom access_token berisi nilai token akses OAuth 2.0.
  • Tidak ada kolom untuk ID pengguna akhir di token akses OAuth default.

Untuk mencabut token akses OAuth 2.0 dengan ID pengguna akhir, Anda harus mengonfigurasi kebijakan OAuth 2.0 untuk menyertakan ID pengguna dalam token. Setelah dikonfigurasi untuk menyertakan ID pengguna akhir dalam token, kebijakan tersebut akan disertakan sebagai kolom app_enduser, seperti yang ditunjukkan di bawah:

{
 "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"
}

Mengonfigurasi kebijakan

Untuk mencabut token berdasarkan ID pengguna, Anda harus terlebih dahulu mengonfigurasi kebijakan OAuth 2.0 untuk menambahkan ID pengguna ke token akses. Dengan menyertakan ID pengguna akhir dalam token akses, Anda dapat mencabut token berdasarkan ID pengguna akhir.

Untuk mengonfigurasi kebijakan agar menyertakan ID pengguna akhir dalam token akses, Anda harus menentukan variabel input yang berisi ID pengguna akhir. Gunakan tag <AppEndUser> untuk menentukan variabel:

<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>

Berikut adalah contoh kebijakan RevokeOAuthV2 yang dikonfigurasi untuk mencabut akses oleh EndUserId:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RevokeOAuthV2 continueOnError="false" enabled="true" name="GetOAuthV2Info-1">
    <DisplayName>Get OAuth v2.0 Info 1</DisplayName>
    <EndUserId ref="request.header.appuserID"></EndUserId>
    <Cascade>false</Cascade>
</RevokeOAuthV2>

Lihat juga Mencabut kebijakan OAuth V2.

Contoh perintah berikut menghasilkan token dan meneruskan ID pengguna di header appuserID:

curl -H "appuserID:6ZG094fgnjNf02EK" \
-H "Content-Type: application/x-www-form-urlencoded" \
  -H "Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ" \
  -X POST "https://apitest.acme.com/oauth/token" \
  -d "grant_type=client_credentials"

Anda dapat meneruskan informasi sebagai bagian dari permintaan dengan cara lain. Misalnya, sebagai alternatif, Anda dapat:

  • Gunakan variabel parameter formulir: request.formparam.appuserID
  • Gunakan variabel alur yang menyediakan ID pengguna akhir