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

Halaman ini berlaku untuk Apigee dan Apigee hybrid.

Lihat dokumentasi Apigee Edge.

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

Kapan harus menyimpan User-ID dalam token akses

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

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

Tentang token akses OAuth

Secara default, saat Apigee membuat token akses OAuth 2.0, token tersebut memiliki format yang ditunjukkan di bawah:

{
 "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 berikut:

  • Kolom application_name berisi UUID aplikasi yang terkait dengan token. Jika Anda mengaktifkan pencabutan token akses OAuth 2.0 menurut client ID, ini adalah client ID 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 menurut ID pengguna akhir, Anda harus mengonfigurasi kebijakan OAuth 2.0 untuk menyertakan ID pengguna dalam token. Setelah Anda mengonfigurasi kebijakan untuk menyertakan ID pengguna akhir dalam token, ID 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 menurut ID pengguna, Anda harus mengonfigurasi kebijakan OAuth 2.0 terlebih dahulu untuk menambahkan ID pengguna ke token akses. Dengan menyertakan ID pengguna akhir dalam token akses, Anda kemudian 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 Membatalkan 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
  • Menggunakan variabel alur yang memberikan ID pengguna akhir