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. Yang dimaksud dengan pengguna akhir 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 baik untuknya. 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

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 menurut ID aplikasi.

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

Secara default, saat Edge 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 pengambilan dan 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 mengaktifkan pengambilan dan pencabutan token akses OAuth 2.0 menurut ID pengguna akhir, Anda harus mengonfigurasi kebijakan OAuth 2.0 untuk menyertakan ID pengguna dalam token, seperti yang dijelaskan dalam prosedur di bawah. Perhatikan bahwa jika Anda hanya ingin mengambil dan mencabut token akses OAuth 2.0 menurut ID aplikasi, Anda tidak perlu mengaktifkan akses menurut 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 dijelaskan nanti dalam topik ini). Setelah Anda mengonfigurasi Edge untuk menyertakan ID pengguna akhir dalam token, ID tersebut akan 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 membuat panggilan API yang melakukan pengambilan dan pencabutan ini, lihat Smart Doc 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 mengetahui informasi selengkapnya, lihat prosedur di bawah.

  • Edge untuk deployment Private Cloud

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

  • Apigee Hybrid

    Akses ke token OAuth 2.0 berdasarkan 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 prosedur di bawah.

Mengaktifkan akses di cloud

Langkah 1: Mengaktifkan organisasi untuk mendukung fitur ini

Fitur ini harus diaktifkan untuk setiap organisasi yang ingin Anda dukung fitur ini.

Hubungi Dukungan Apigee Edge untuk meminta mereka memperbarui organisasi Anda.

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

Hanya peran orgadmin dan opsadmin yang boleh diberi izin untuk membuat panggilan pengambilan (get) dan pencabutan (put) ini 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 menambahkan atau menghapus izin, hubungi Dukungan Apigee Edge agar 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 di organisasi yang terpengaruh akan disalin dan disimpan di node Cassandra Anda. Prosedur ini akan dilakukan di node Cassandra untuk setiap pod Apigee Edge Anda. Tindakan ini akan memungkinkan panggilan API pengambilan dan pencabutan berjalan pada semua token akses OAuth 2.0 Anda, yang sudah ada dan yang baru dibuat.

Langkah 4: 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 kemudian dapat melakukan pengambilan dan pencabutan 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.

Kebijakan OAuth 2.0 di bawah, bernama GenerateAccessTokenClient, menghasilkan 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>

Kemudian, 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 banyak cara. Misalnya, sebagai alternatif, Anda dapat:

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