Kebijakan GetOAuthV2Info

Halaman ini berlaku untuk Apigee dan Apigee hybrid.

Lihat dokumentasi Apigee Edge.

ikon kebijakan

Apa

Mendapatkan atribut token akses, token refresh, kode otorisasi, dan atribut aplikasi klien, serta mengisi variabel dengan nilai atribut tersebut.

Kebijakan ini berguna saat Anda perlu mengonfigurasi perilaku dinamis bersyarat berdasarkan nilai dalam token atau kode autentikasi. Setiap kali validasi token terjadi, variabel akan otomatis diisi dengan nilai atribut token. Namun, jika validasi token belum terjadi, Anda dapat menggunakan fitur ini untuk mengisi variabel secara eksplisit dengan nilai atribut token. Lihat juga Menyesuaikan Token dan Kode Otorisasi.

Token akses yang Anda teruskan ke kebijakan ini harus valid atau kebijakan akan menampilkan error invalid_access_token.

Kebijakan ini adalah Kebijakan yang dapat diperluas dan penggunaan kebijakan ini mungkin memiliki implikasi biaya atau penggunaan, bergantung pada lisensi Apigee Anda. Untuk informasi tentang jenis kebijakan dan implikasi penggunaan, lihat Jenis kebijakan.

Sampel

Contoh berikut menggunakan kebijakan Get OAuth V2 Info untuk mengambil informasi tentang berbagai komponen alur kerja OAuth2, lalu mengakses informasi tersebut dalam kode.

Token akses

Untuk mendapatkan referensi ke token akses, gunakan elemen <AccessToken> dalam kebijakan Anda.

Contoh berikut diharapkan menemukan token akses dalam parameter kueri bernama "access_token" (detail penerapan yang sebenarnya terserah Anda):

<GetOAuthV2Info name="MyTokenAttrsPolicy">
  <AccessToken ref="request.queryparam.access_token"></AccessToken>
</GetOAuthV2Info>

Dengan token akses, kebijakan akan mencari profil token dan mengisi kumpulan variabel dengan data profil.

Kemudian, Anda dapat mengakses variabel menggunakan JavaScript atau cara lain. Contoh berikut mengambil cakupan yang terkait dengan token akses menggunakan JavaScript:

var scope = context.getVariable('oauthv2accesstoken.MyTokenAttrsPolicy.scope');

Perhatikan bahwa untuk mengakses variabel tersebut dalam kode, Anda harus menambahkan awalan "oauthv2accesstoken". Untuk mengetahui daftar lengkap variabel yang tersedia melalui token akses, lihat Variabel token akses.

Kode autentikasi

Untuk mendapatkan atribut kode otorisasi, gunakan elemen <AuthorizationCode> dalam kebijakan Anda.

Contoh berikut diharapkan menemukan token akses dalam parameter formulir bernama "code" (detail implementasi yang sebenarnya terserah Anda):

<GetOAuthV2Info name="MyAuthCodeAttrsPolicy">
  <AuthorizationCode ref="request.formparam.code"></AuthorizationCode>
</GetOAuthV2Info>

Dengan kode autentikasi, kebijakan akan mencari informasi kode dan mengisi kumpulan variabel dengan data kode autentikasi.

Kemudian, Anda dapat mengakses variabel menggunakan JavaScript atau cara lain. Contoh berikut mengambil atribut kustom yang terkait dengan kode otorisasi menggunakan JavaScript:

var attr = context.getVariable('oauthv2authcode.MyAuthCodeAttrsPolicy.custom_attribute_name');

Perhatikan bahwa untuk mengakses variabel tersebut dalam kode, Anda harus menambahkan awalan "oauthv2authcode". Untuk mengetahui daftar lengkap variabel yang tersedia melalui kode otorisasi, lihat Variabel kode otorisasi.

Token refresh

Untuk mendapatkan atribut token refresh, gunakan elemen <RefreshToken> dalam kebijakan Anda.

Contoh berikut diharapkan menemukan token akses dalam parameter kueri bernama "refresh_token" (detail penerapan yang sebenarnya terserah Anda):

<GetOAuthV2Info name="MyRefreshTokenAttrsPolicy">
  <RefreshToken ref="request.queryparam.refresh_token"/>
</GetOAuthV2Info>

Dengan token refresh, kebijakan akan mencari informasi token refresh dan mengisi kumpulan variabel dengan data token refresh.

Kemudian, Anda dapat mengakses variabel tersebut menggunakan JavaScript atau cara lain. Contoh berikut mengambil atribut kustom yang terkait dengan token refresh menggunakan JavaScript:

var attr = context.getVariable('oauthv2refreshtoken.MyRefreshTokenAttrsPolicy.accesstoken.custom_attribute_name');

Perhatikan bahwa untuk mengakses variabel dalam kode, Anda harus menambahkan awalan "oauthv2refreshtoken". Untuk mengetahui daftar lengkap variabel yang tersedia melalui token refresh, lihat Variabel token refresh.

Statis

Dalam beberapa kasus yang jarang terjadi, Anda mungkin perlu mendapatkan profil token yang dikonfigurasi secara statis (token yang tidak dapat diakses melalui variabel). Anda dapat melakukannya dengan memberikan nilai token akses sebagai elemen.

<GetOAuthV2Info name="GetTokenAttributes">
  <AccessToken>shTUmeI1geSKin0TODcGLXBNe9vp</AccessToken>
</GetOAuthV2Info>

Anda juga dapat melakukannya dengan semua jenis token lainnya (client ID, kode otorisasi, dan token refresh).

ID Klien

Contoh ini menunjukkan cara mengambil informasi tentang aplikasi klien menggunakan client ID. Setelah dieksekusi, kebijakan akan mengisi serangkaian variabel dengan informasi klien. Dalam hal ini, kebijakan mengharapkan untuk menemukan client ID dalam parameter kueri yang disebut client_id. Dengan client ID, kebijakan akan mencari profil klien dan mengisi serangkaian variabel dengan data profil. Variabel akan diawali dengan oauthv2client.

<GetOAuthV2Info name="GetClientAttributes">
  <ClientId ref="request.queryparam.client_id"></ClientId>
</GetOAuthV2Info>

Kemudian, Anda dapat mengakses variabel menggunakan JavaScript atau cara lain. Misalnya, untuk mendapatkan nama aplikasi developer dan email developer yang terkait dengan aplikasi klien menggunakan JavaScript:

context.getVariable("oauthv2client.GetClientAttributes.developer.email");
context.getVariable("oauthv2client.GetClientAttributes.developer.app.name");

Referensi Elemen

Referensi elemen menjelaskan elemen dan atribut kebijakan GetOAuthV2Info.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="GetOAuthV2Info-1"
    <DisplayName>Get OAuth v2.0 Info 1</DisplayName>
    <AccessToken ref="variable"></AccessToken>
    <AuthorizationCode ref="variable"></AuthorizationCode>
    <ClientId ref="variable"></ClientId>
    <RefreshToken ref="variable"></RefreshToken>
</GetOAuthV2Info>

Atribut <GetOAuthV2Info>

<GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="Get-OAuth-v20-Info-1">

Tabel berikut menjelaskan atribut yang umum untuk semua elemen induk kebijakan:

Atribut Deskripsi Default Kehadiran
name

Nama internal kebijakan. Nilai atribut name dapat berisi huruf, angka, spasi, tanda hubung, garis bawah, dan titik. Nilai ini tidak boleh melebihi 255 karakter.

Secara opsional, gunakan elemen <DisplayName> untuk memberi label pada kebijakan di editor proxy UI pengelolaan dengan nama bahasa alami yang berbeda.

T/A Wajib
continueOnError

Tetapkan ke false untuk menampilkan error saat kebijakan gagal. Perilaku ini wajar terjadi untuk sebagian besar kebijakan.

Tetapkan ke true agar eksekusi alur berlanjut meskipun setelah kebijakan gagal. Lihat juga:

false Opsional
enabled

Tetapkan ke true untuk menerapkan kebijakan.

Tetapkan ke false untuk menonaktifkan kebijakan. Kebijakan tidak akan diterapkan meskipun tetap terlampir ke alur.

benar Opsional
async

Atribut ini tidak digunakan lagi.

false Tidak digunakan lagi

Elemen <DisplayName>

Gunakan selain atribut name untuk melabeli kebijakan di editor proxy UI pengelolaan dengan nama bahasa alami yang berbeda.

<DisplayName>Policy Display Name</DisplayName>
Default

T/A

Jika Anda menghapus elemen ini, nilai atribut name kebijakan akan digunakan.

Kehadiran Opsional
Jenis String

Elemen <AccessToken>

Mengambil profil untuk token akses. Anda meneruskan variabel yang berisi string token akses atau string token literal (kasus jarang). Dalam contoh ini, token akses diambil dari parameter kueri yang diteruskan dalam permintaan. Gunakan elemen <IgnoreAccessTokenStatus> jika Anda ingin menampilkan informasi untuk token yang dicabut atau habis masa berlakunya.

<AccessToken ref="request.queryparam.access_token"></AccessToken>

Default:

request.formparam.access_token (x-www-form-urlencoded dan ditentukan dalam isi permintaan)

Kehadiran:

Opsional

Jenis: String
Nilai yang valid:

Variabel alur yang berisi string token akses, atau string literal.


Elemen <AuthorizationCode>

Mengambil profil untuk kode otorisasi. Anda meneruskan variabel yang berisi string kode autentikasi atau string token literal (kasus jarang). Dalam contoh ini, kode autentikasi diambil dari parameter kueri yang diteruskan dalam permintaan. Untuk mengetahui daftar variabel yang diisi oleh operasi ini, lihat "Variabel alur".

<AuthorizationCode ref="request.queryparam.authorization_code"></AuthorizationCode>

Default:

request.formparam.access_token (x-www-form-urlencoded dan ditentukan dalam isi permintaan)

Kehadiran:

Opsional

Jenis: String
Nilai yang valid:

Variabel alur yang berisi string kode autentikasi, atau string literal.

Elemen <ClientId>

Mengambil informasi yang terkait dengan client ID. Dalam contoh ini, client ID diambil dari parameter kueri yang diteruskan dalam permintaan. Untuk mengetahui daftar variabel yang diisi oleh operasi ini, lihat "Variabel alur".

<ClientId ref="request.queryparam.client_id"></ClientId>

Default:

request.formparam.access_token (x-www-form-urlencoded dan ditentukan dalam isi permintaan)

Kehadiran:

Opsional

Jenis: String
Nilai yang valid: Variabel alur yang berisi string kode autentikasi, atau string literal.

Elemen <IgnoreAccessTokenStatus>

Menampilkan informasi token meskipun token telah berakhir masa berlakunya atau dicabut. Elemen ini hanya dapat digunakan dengan token akses. Informasi untuk entity lain seperti token refresh dan kode otorisasi ditampilkan secara default, terlepas dari statusnya.

<IgnoreAccessTokenStatus>true</IgnoreAccessTokenStatus>

Default:

false

Kehadiran:

Opsional

Jenis: Boolean
Nilai yang valid: benar atau salah

Elemen <RefreshToken>

Mengambil profil untuk token refresh. Anda meneruskan variabel yang berisi string token refresh atau string token literal (kasus jarang). Dalam contoh ini, token refresh diambil dari parameter kueri yang diteruskan dalam permintaan. Untuk mengetahui daftar variabel yang diisi oleh operasi ini, lihat "Variabel alur".

<RefreshToken ref="request.queryparam.refresh_token"></RefreshToken>

Default:

request.formparam.access_token (x-www-form-urlencoded dan ditentukan dalam isi permintaan)

Kehadiran:

Opsional

Jenis: String
Nilai yang valid:

Variabel alur yang berisi string token refresh, atau string literal.

Variabel alur

Kebijakan GetOAuthV2Info mengisi variabel ini, dan biasanya digunakan jika Anda memerlukan data profil, tetapi pemberian atau validasi belum dilakukan. .

Variabel client ID

Variabel ini diisi saat elemen ClientId ditetapkan:

oauthv2client.{policy_name}.client_id
oauthv2client.{policy_name}.client_secret
oauthv2client.{policy_name}.redirection_uris // Note the spelling -- 'redirection_uris'
oauthv2client.{policy_name}.developer.email
oauthv2client.{policy_name}.developer.app.name
oauthv2client.{policy_name}.developer.id
oauthv2client.{policy_name}.{developer_app_custom_attribute_name}

Variabel token akses

Variabel ini diisi saat elemen AccessToken ditetapkan:

oauthv2accesstoken.{policy_name}.developer.id
oauthv2accesstoken.{policy_name}.developer.app.name
oauthv2accesstoken.{policy_name}.developer.app.id
oauthv2accesstoken.{policy_name}.developer.email

oauthv2accesstoken.{policy_name}.organization_name
oauthv2accesstoken.{policy_name}.api_product_list

oauthv2accesstoken.{policy_name}.access_token
oauthv2accesstoken.{policy_name}.scope
oauthv2accesstoken.{policy_name}.expires_in //in seconds
oauthv2accesstoken.{policy_name}.status
oauthv2accesstoken.{policy_name}.client_id
oauthv2accesstoken.{policy_name}.accesstoken.{custom_attribute_name}

oauthv2accesstoken.{policy_name}.refresh_token
oauthv2accesstoken.{policy_name}.refresh_token_status
oauthv2accesstoken.{policy_name}.refresh_token_expires_in //in seconds

oauthv2accesstoken.{policy_name}.refresh_count
oauthv2accesstoken.{policy_name}.refresh_token_issued_at
oauthv2accesstoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED

Variabel kode otorisasi

Variabel ini diisi saat elemen AuthorizationCode ditetapkan:

oauthv2authcode.{policy_name}.code
oauthv2authcode.{policy_name}.scope       
oauthv2authcode.{policy_name}.redirect_uri 
oauthv2authcode.{policy_name}.client_id
oauthv2authcode.{policy_name}.{auth_code_custom_attribute_name}

Variabel token refresh

Variabel ini diisi saat elemen RefreshToken ditetapkan:

oauthv2refreshtoken.{policy_name}.developer.id
oauthv2refreshtoken.{policy_name}.developer.app.name
oauthv2refreshtoken.{policy_name}.developer.app.id
oauthv2refreshtoken.{policy_name}.developer.email
oauthv2refreshtoken.{policy_name}.organization_name
oauthv2refreshtoken.{policy_name}.api_product_list

oauthv2refreshtoken.{policy_name}.access_token
oauthv2refreshtoken.{policy_name}.scope
oauthv2refreshtoken.{policy_name}.expires_in //in seconds

oauthv2refreshtoken.{policy_name}.status
oauthv2refreshtoken.{policy_name}.client_id
oauthv2refreshtoken.{policy_name}.accesstoken.{custom_attribute_name}

oauthv2refreshtoken.{policy_name}.refresh_token
oauthv2refreshtoken.{policy_name}.refresh_token_status
oauthv2refreshtoken.{policy_name}.refresh_token_expires_in //in seconds

oauthv2refreshtoken.{policy_name}.refresh_count
oauthv2refreshtoken.{policy_name}.refresh_token_issued_at
oauthv2refreshtoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED

Skema

Setiap jenis kebijakan ditentukan oleh skema XML (.xsd). Sebagai referensi, skema kebijakan tersedia di GitHub.

Referensi error

Bagian ini menjelaskan kode error dan pesan error yang ditampilkan serta variabel error yang ditetapkan oleh Apigee saat kebijakan ini memicu error. Informasi ini penting untuk diketahui jika Anda mengembangkan aturan error untuk menangani error. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani error.

Error runtime

Error ini dapat terjadi saat kebijakan dieksekusi. Nama error yang ditampilkan di bawah adalah string yang ditetapkan ke variabel fault.name saat error terjadi. Lihat bagian variabel Error di bawah untuk mengetahui detail selengkapnya.

Kode kerusakan Status HTTP Penyebab
steps.oauth.v2.access_token_expired 500 Masa berlaku token akses yang dikirim ke kebijakan telah berakhir.
steps.oauth.v2.authorization_code_expired 500 Kode otorisasi yang dikirim ke kebijakan telah berakhir masa berlakunya.
steps.oauth.v2.invalid_access_token 500 Token akses yang dikirim ke kebijakan tidak valid.
steps.oauth.v2.invalid_client-invalid_client_id 500 Client ID yang dikirim ke kebijakan tidak valid.
steps.oauth.v2.invalid_refresh_token 500 Token refresh yang dikirim ke kebijakan tidak valid.
steps.oauth.v2.invalid_request-authorization_code_invalid 500 Kode otorisasi yang dikirim ke kebijakan tidak valid.
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound 401 Lihat Verifikasi Token Akses Oauth2.0 menampilkan error "Panggilan API tidak valid karena tidak ada kecocokan produk API" untuk mengetahui informasi tentang cara memecahkan masalah error ini.
steps.oauth.v2.refresh_token_expired 500 Masa berlaku token refresh yang dikirim ke kebijakan telah berakhir.

Error saat deployment

Lihat pesan yang dilaporkan di UI untuk mengetahui informasi tentang error deployment.

Variabel error

Variabel ini ditetapkan saat kebijakan ini memicu error saat runtime.

Variabel Dari mana Contoh
fault.name="fault_name" fault_name adalah nama error, seperti yang tercantum dalam tabel Runtime errors di atas. Nama error adalah bagian terakhir dari kode error. fault.name Matches "IPDeniedAccess"
oauthV2.policy_name.failed policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan error. oauthV2.GetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan error. oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id
oauthV2.policy_name.fault.cause policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan error. oauthV2.GetTokenInfo.cause = ClientID is Invalid

Contoh respons error

{  
   "fault":{  
      "faultstring":"ClientId is Invalid",
      "detail":{  
         "errorcode":"keymanagement.service.invalid_client-invalid_client_id"
      }
   }
}

Contoh aturan error

<FaultRule name="OAuthV2 Faults">
    <Step>
        <Name>AM-InvalidClientIdResponse</Name>
    </Step>
    <Condition>(fault.name = "invalid_client-invalid_client_id")</Condition>
</FaultRule>

Topik terkait