Aktifkan pengambilan dan pencabutan token akses OAuth 2.0 menurut ID pengguna akhir, ID aplikasi, atau keduanya

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Bagian ini menjelaskan cara mengaktifkan pengambilan dan pencabutan token akses OAuth 2.0 berdasarkan ID pengguna akhir, ID aplikasi, atau keduanya. Fitur ID pengguna akhir memerlukan penyiapan khusus seperti yang dijelaskan dalam topik ini. Pengguna akhir, yang kami maksud adalah pengguna aplikasi yang memanggil API.

Kapan harus mengaktifkan akses ID pengguna akhir

Terkadang, ada baiknya menyimpan ID pengguna dalam token akses. Aktifkan fitur akses ID pengguna akhir hanya jika Anda memiliki kasus penggunaan yang tepat. Contoh:

  • Fitur untuk situs atau aplikasi tempat pengguna dapat melihat aplikasi pihak ketiga yang telah mereka otorisasi, dan memberikan opsi untuk 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

ID aplikasi otomatis ditambahkan ke token akses OAuth. Oleh karena itu, setelah mengaktifkan akses token untuk organisasi seperti yang dijelaskan di bawah, Anda dapat mencabut token akses berdasarkan ID aplikasi.

Untuk mengambil dan mencabut token akses OAuth 2.0 oleh ID pengguna akhir, ID pengguna akhir harus ada dalam token akses. Prosedur di bawah ini menjelaskan cara menambahkan ID pengguna akhir ke token yang ada.

Secara default, saat Edge membuat 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 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.

Tidak ada kolom untuk ID pengguna akhir di token akses OAuth default. Agar dapat mengaktifkan pengambilan dan pencabutan token akses OAuth 2.0 oleh ID pengguna akhir, Anda harus mengonfigurasi kebijakan OAuth 2.0 untuk menyertakan ID pengguna dalam token tersebut, seperti yang dijelaskan pada prosedur di bawah ini. Perhatikan bahwa jika Anda hanya ingin mengambil dan mencabut token akses OAuth 2.0 dengan ID aplikasi, Anda tidak perlu mengaktifkan akses berdasarkan ID pengguna akhir.

Anda meneruskan ID pengguna akhir ke endpoint pembuatan token. Anda dapat meneruskan ID pengguna akhir sebagai parameter kueri, parameter formulir, atau dalam header (seperti yang akan dijelaskan nanti dalam topik ini). Setelah Anda mengonfigurasi Edge untuk menyertakan ID pengguna akhir dalam token, ID tersebut disertakan sebagai kolom 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", //--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"
}

Untuk mempelajari cara melakukan panggilan API yang melakukan pengambilan dan pencabutan ini, lihat Smart Dokumen berikut:

Mengaktifkan akses ke token OAuth 2.0 berdasarkan ID pengguna dan ID aplikasi

Cara Anda mengaktifkan akses ke token OAuth 2.0 berdasarkan ID pengguna dan ID aplikasi bergantung pada cara Anda men-deploy Edge:

  • Deployment berbasis cloud

    Deployment Edge berbasis cloud berarti sebagian besar konfigurasi ditangani oleh Apigee. Anda hanya bertanggung jawab untuk mengonfigurasi kebijakan OAuth 2.0 guna menambahkan ID pengguna ke token akses. Untuk informasi selengkapnya, lihat prosedur di bawah.

  • Deployment Edge untuk Private Cloud

    Di Apigee Edge untuk Private Cloud (lokal), Anda bertanggung jawab sepenuhnya atas konfigurasi. Untuk mengetahui informasi selengkapnya, lihat Operasi dan Konfigurasi.

  • Apigee Hybrid

    Akses ke token OAuth 2.0 menurut ID pengguna diaktifkan secara default. Anda hanya bertanggung jawab untuk mengonfigurasi kebijakan OAuth 2.0 guna menambahkan ID pengguna ke token akses. Untuk mengetahui informasi selengkapnya, lihat Langkah 5 dari prosedur di bawah.

Mengaktifkan akses di cloud

Langkah 1: Aktifkan organisasi untuk mendukung fitur ini

Fitur ini harus diaktifkan untuk setiap organisasi yang Anda inginkan untuk mendukung fitur ini.

Hubungi Dukungan Apigee Edge untuk meminta mereka mengupdate organisasi Anda.

Langkah 2: Berikan Izin Resource oauth2 ke Peran opsadmin dan orgadmin

Hanya peran orgadmin dan opsadmin yang boleh diberikan izin untuk melakukan pengambilan (get) dan mencabut panggilan (put) ke resource oauth2 berdasarkan ID pengguna akhir atau ID aplikasi.

Anda dapat menggunakan panggilan API Get Permission for a Resource untuk melihat peran mana yang memiliki izin get dan put untuk resource oauth2.

Jika Anda perlu menambah atau menghapus izin, hubungi Dukungan Apigee Edge untuk meminta mereka melakukan pembaruan.

Langkah 3: Salin token akses OAuth 2.0 yang ada ke node Cassandra Anda

Dilakukan oleh Dukungan Apigee: Dalam tugas ini, salinan token akses OAuth 2.0 yang ada dalam organisasi yang terpengaruh akan disalin dan disimpan di node Cassandra Anda. Prosedur ini akan dilakukan di node Cassandra untuk setiap pod Apigee Edge Anda. Hal ini akan memungkinkan pengambilan dan pencabutan panggilan API untuk dijalankan terhadap semua token akses OAuth 2.0 Anda, baik yang sudah ada maupun yang baru dibuat.

Langkah 4: Tambahkan properti oauth_max_search_limit ke server pengelolaan dan pemroses pesan

Dalam tugas ini, file keymanagement.properties untuk server pengelolaan dan pemroses pesan Anda akan diperbarui untuk menyertakan properti ini: oauth_max_search_limit = 100. 100 adalah nilai yang direkomendasikan Apigee, tetapi dapat ditetapkan sesuai kebutuhan.

Hubungi Dukungan Apigee Edge untuk meminta mereka melakukan penambahan ini.

Langkah 5: Konfigurasikan kebijakan OAuth 2.0 untuk membuat token akses yang menyertakan ID pengguna akhir

Konfigurasikan kebijakan OAuth 2.0 yang digunakan untuk membuat token akses guna menyertakan ID pengguna akhir dalam token. Dengan menyertakan ID pengguna akhir dalam token akses, Anda dapat melakukan pengambilan dan pencabutan menurut 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.

Kebijakan OAuth 2.0 di bawah, yang bernama GenerateAccessTokenClient, membuat token akses OAuth 2.0. Perhatikan penambahan tag <AppEndUser> yang dicetak tebal:

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

Lalu Anda dapat menggunakan perintah cURL berikut untuk membuat token akses OAuth 2.0, dengan meneruskan ID pengguna sebagai header appuserID:

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'

Dalam contoh ini, appuserID diteruskan sebagai header permintaan. Anda dapat meneruskan informasi sebagai bagian dari permintaan dengan berbagai cara. Misalnya, sebagai alternatif, Anda dapat:

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