Kebijakan OAuthV2

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Baca dokumentasi Apigee Edge.

ikon kebijakan

Apa

OAuthV2 adalah kebijakan multi-faset untuk melakukan operasi jenis pemberian OAuth 2.0. Ini adalah kebijakan utama yang digunakan untuk mengonfigurasi endpoint OAuth 2.0 di Apigee.

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

Tips: Jika Anda ingin mempelajari OAuth di Apigee lebih lanjut, lihat halaman beranda OAuth. Halaman ini menyediakan link ke referensi, sampel, video, dan lain-lain.

Contoh

VerifyAccessToken

VerifyAccessToken

Konfigurasi kebijakan OAuthV2 ini (dengan operasi VerifyAccessToken) memverifikasi bahwa token akses yang dikirimkan ke Apigee valid. Jika operasi kebijakan ini dipicu, Apigee akan mencari token akses yang valid dalam permintaan. Jika token akses valid, permintaan akan diizinkan untuk dilanjutkan. Jika tidak valid, semua pemrosesan akan berhenti dan error akan ditampilkan dalam respons.

<OAuthV2 name="OAuthV2-Verify-Access-Token">
    <Operation>VerifyAccessToken</Operation>
</OAuthV2>

Aplikasi klien harus mengirim permintaan dengan token. Misalnya dengan menggunakan curl:

$ curl https://API_ENDPOINT/weather/forecastrss?w=12797282 \
  -H "Authorization: Bearer ylSkZIjbdWybfsUQe9BqP0LH5Z"

Dengan API_ENDPOINT adalah domain yang digunakan untuk mengakses API Anda, seperti yang dikonfigurasi dalam sistem Apigee Anda.

Secara default, kebijakan OAuthV2 mengekstrak token akses dari header Authorization, dengan menghapus awalan Bearer. Anda dapat mengubah perilaku default ini dengan elemen konfigurasi AccessToken.

GenerateAccessToken

Membuat token akses

Untuk contoh yang menunjukkan cara meminta token akses untuk setiap jenis pemberian yang didukung, lihat Mendapatkan token OAuth 2.0. Topik ini mencakup contoh operasi berikut:

GenerateAuthorizationCode

Buat kode otorisasi

Untuk contoh yang menunjukkan cara meminta kode otorisasi, lihat Meminta kode otorisasi.

RefreshAccessToken

Memuat ulang token akses

Untuk contoh yang menunjukkan cara meminta token akses menggunakan token refresh, lihat Memperbarui token akses.

Token akses JWT

Token akses JWT

Untuk contoh yang menunjukkan cara membuat, memverifikasi, dan memperbarui token akses JWT, lihat Menggunakan token akses JWT.

Token alur respons

Membuat token akses di alur respons

Terkadang, Anda mungkin perlu membuat token akses dalam alur respons. Misalnya, Anda dapat melakukan hal ini sebagai respons terhadap beberapa validasi kustom yang dilakukan di layanan backend. Dalam contoh ini, kasus penggunaan memerlukan token akses dan token refresh, yang mengesampingkan jenis pemberian implisit. Dalam hal ini, kita akan menggunakan tipe pemberian {i>password<i} untuk membuat token. Seperti yang akan Anda lihat, trik agar proses ini berfungsi adalah dengan meneruskan header permintaan Otorisasi dengan kebijakan JavaScript.

Pertama-tama, mari kita lihat kebijakan contoh:

<OAuthV2 enabled="true" continueOnError="false" async="false" name="generateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <AppEndUser>Doe</AppEndUser>
    <UserName>jdoe</UserName>
    <PassWord>jdoe</PassWord>
    <GrantType>grant_type</GrantType>
    <ClientId>a_valid_client_id</ClientId>
    <SupportedGrantTypes>
        <GrantType>password</GrantType>
    </SupportedGrantTypes>
</OAuthV2>

Jika Anda menerapkan kebijakan ini di alur respons, kebijakan akan gagal dengan error 401 UnAuthorized, meskipun parameter login yang benar telah ditentukan dalam kebijakan. Untuk mengatasi masalah ini, Anda perlu menetapkan header permintaan Otorisasi.

Header Otorisasi harus berisi skema akses Dasar dengan client_id:client_secret berenkode Base64.

Anda dapat menambahkan header ini dengan kebijakan JavaScript yang ditempatkan tepat sebelum kebijakan OAuthV2, seperti ini. Variabel konteks "local_clientid" dan "local_secret" harus sudah ditetapkan sebelumnya dan tersedia dalam alur:

var clientId = context.getVariable("local_clientid");
var clientSecret = context.getVariable("local_secret");
context.setVariable("request.header.Authorization","Basic "+ CryptoJS.enc.Base64.stringify(CryptoJS.enc.Latin1
                                      .parse(clientId + ':' + clientSecret)));

Lihat juga Mengenkode kredensial autentikasi dasar.

Referensi elemen

Referensi kebijakan menjelaskan elemen dan atribut kebijakan OAuthV2.

Contoh kebijakan yang ditampilkan di bawah adalah salah satu dari banyak kemungkinan konfigurasi. Contoh ini menunjukkan kebijakan OAuthV2 yang dikonfigurasi untuk operasi GenerateAccessToken. Ini mencakup elemen wajib dan opsional. Lihat deskripsi elemen di bagian ini untuk mengetahui detailnya.

<OAuthV2 name="GenerateAccessToken">
  <!-- This policy generates an OAuth 2.0 access token using the client_credentials grant type -->
  <Operation>GenerateAccessToken</Operation>
  <!-- This is in millseconds, so expire in an hour -->
  <ExpiresIn>3600000</ExpiresIn>
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GrantType>request.queryparam.grant_type</GrantType>
  <GenerateResponse/>
</OAuthV2>

Atribut <OAuthV2>

<OAuthV2 async="false" continueOnError="false" enabled="true" name="MyOAuthPolicy">

Tabel berikut menjelaskan atribut yang sama 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.

Atau, gunakan elemen <DisplayName> untuk memberi label kebijakan di editor proxy UI pengelolaan dengan nama natural-language yang berbeda.

T/A Diperlukan
continueOnError

Setel ke false untuk menampilkan error jika kebijakan gagal. Ini adalah perilaku yang wajar untuk sebagian besar kebijakan.

Setel ke true agar eksekusi alur tetap berlanjut bahkan setelah kebijakan gagal. Lihat juga:

false Opsional
enabled

Setel ke true untuk menerapkan kebijakan.

Setel ke false untuk menonaktifkan kebijakan. Kebijakan tidak akan diterapkan meskipun tetap melekat pada alur.

true Opsional
async

Atribut ini sudah tidak digunakan lagi.

false Tidak digunakan lagi

Elemen <DisplayName>

Gunakan selain atribut name untuk memberi label kebijakan di editor proxy UI pengelolaan dengan nama natural-language 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>

<AccessToken>request.header.access_token</AccessToken>

Secara default, jika Operation adalah VerifyAccessToken, kebijakan mengharapkan token akses untuk dikirim dalam header Authorization sebagai token pemilik; yaitu, dengan awalan "Bearer", diikuti oleh satu spasi kosong. Anda dapat mengubah nilai default tersebut menggunakan elemen ini, dengan menentukan nama variabel yang berisi token akses untuk diverifikasi. Saat Anda menggunakan elemen ini, kebijakan secara default tidak akan mencari awalan dalam konten variabel. Jika Anda ingin menetapkan bahwa kebijakan harus mencari awalan, gunakan juga elemen AccessTokenPrefix.

Contoh:

  • Jika konfigurasi kebijakan:

      <OAuthV2 name="OAuthV2-Verify-Access-Token-in-Header">
          <Operation>VerifyAccessToken</Operation>
          <AccessToken>request.header.access_token</AccessToken>
      </OAuthV2>

    Untuk meneruskan token menggunakan curl, Anda dapat menggunakan:

      curl https://API_ENDPOINT/oauth2/validate -H "access_token:Rft3dqrs56Blirls56a"
  • Jika konfigurasi kebijakan:

      <OAuthV2 name="OAuthV2-Verify-Access-Token-in-QueryParam">
          <Operation>VerifyAccessToken</Operation>
          <AccessToken>request.queryparam.token</AccessToken>
      </OAuthV2>

    Untuk meneruskan token menggunakan curl, Anda dapat menggunakan:

      curl "https://API_ENDPOINT/oauth2/validate?token=Rft3dqrs56Blirls56a"

Dengan API_ENDPOINT adalah domain yang digunakan untuk mengakses API Anda, seperti yang dikonfigurasikan dalam sistem Apigee Anda.

Default:

T/A

Kehadiran:

Opsional

Jenis: String
Nilai yang valid:

nama variabel apa pun

Digunakan dengan operasi:
  • VerifyAccessToken

Elemen <AccessTokenPrefix>

<AccessTokenPrefix>Prefix</AccessTokenPrefix>

Secara default, jika Operation adalah VerifyAccessToken, kebijakan mengharapkan token akses untuk dikirim dalam header Authorization sebagai token pemilik; yaitu, dengan awalan "Bearer", diikuti oleh satu spasi kosong. Jika Anda menggunakan elemen AccessToken untuk menentukan lokasi berbeda bagi token akses masuk, Anda juga dapat menggunakan elemen ini, AccessTokenPrefix, untuk menentukan awalan non-standar yang berbeda.

Misalnya, jika Anda menentukan:

<OAuthV2 name="OAuthV2-Verify-Access-Token-Alternative-Header">
    <Operation>VerifyAccessToken</Operation>
    <AccessToken>request.header.token</AccessToken>
    <AccessTokenPrefix>KEY</AccessTokenPrefix>
</OAuthV2>

Kemudian, kebijakan akan mengekstrak token akses masuk dari header permintaan token, dengan cara ini: jika header diawali dengan kata "KEY" diikuti dengan spasi, kebijakan akan menghapus awalan dan spasi tersebut serta menafsirkan nilai yang tersisa sebagai token akses. Jika awalan yang ditentukan tidak ada di header, kebijakan akan menampilkan kesalahan.

Jika Anda menentukan elemen AccessToken, dan tidak menentukan elemen AccessTokenPrefix, kebijakan ini akan menafsirkan seluruh nilai variabel yang ditentukan dalam elemen AccessToken sebagai token akses.

Elemen ini hanya efektif jika elemen AccessToken juga digunakan.

Default:

-tidak ada-

Kehadiran:

Opsional

Jenis: String
Nilai yang valid:

string apa pun

Digunakan dengan operasi:
  • VerifyAccessToken

<Algorithm>

<Algorithm>algorithm-here</Algorithm>

Menentukan algoritma enkripsi yang digunakan untuk menandatangani token akses JWT. Algoritma RSA (RS*) menggunakan pasangan kunci publik/rahasia, sedangkan algoritma HMAC (HS*) menggunakan secret bersama. Elemen ini diperlukan untuk operasi GenerateJWTAccessToken, VerifyJWTAccessToken, dan RefreshJWTAccessToken.

Default T/A
Kehadiran Diperlukan saat menggunakan operasi GenerateJWTAccessToken, VerifyJWTAccessToken, dan RefreshJWTAccessToken.
Type String
Nilai yang valid HS256, HS384, HS512, RS256, RS384, RS512

Elemen <AppEndUser>

<AppEndUser>request.queryparam.app_enduser</AppEndUser>

Jika ID pengguna akhir aplikasi harus dikirim ke server otorisasi, elemen ini memungkinkan Anda menentukan tempat Apigee harus mencari ID pengguna akhir. Misalnya, parameter ini dapat dikirim sebagai parameter kueri atau di header HTTP.

Misalnya, request.queryparam.app_enduser menunjukkan bahwa AppEndUser harus ada sebagai parameter kueri, misalnya ?app_enduser=ntesla@theramin.com. Misalnya, untuk mewajibkan AppEndUser di header HTTP, tetapkan nilai ini ke request.header.app_enduser.

Menyediakan setelan ini memungkinkan Anda menyertakan ID pengguna akhir aplikasi dalam token akses. Fitur ini berguna jika Anda ingin dapat mengambil atau mencabut token akses OAuth 2.0 dengan ID pengguna akhir. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan pengambilan dan pencabutan token akses OAuth 2.0 berdasarkan ID pengguna akhir, ID aplikasi, atau keduanya.

Default:

T/A

Kehadiran:

Opsional

Jenis: String
Nilai yang valid:

Variabel alur apa pun yang dapat diakses oleh kebijakan pada saat runtime.

Digunakan dengan jenis hibah:
  • authorization_code
  • implisit
  • sandi
  • client_credentials

<Atribut/Atribut>

<Attributes>
    <Attribute name="attr_name1" ref="flow.variable" display="true|false">value1</Attribute>
    <Attribute name="attr_name2" ref="flow.variable" display="true|false">value2</Attribute>
</Attributes>

Gunakan elemen ini untuk menambahkan atribut khusus ke token akses atau kode otorisasi. Misalnya, Anda mungkin ingin menyematkan ID pengguna atau ID sesi dalam token akses yang dapat diekstrak dan diperiksa saat runtime.

Elemen ini memungkinkan Anda menentukan nilai dalam variabel alur atau dari string literal. Jika Anda menentukan variabel dan string, nilai yang ditentukan dalam variabel flow akan digunakan. Jika variabel tidak dapat di-resolve, maka string yang digunakan adalah default.

Untuk mengetahui informasi selengkapnya tentang penggunaan elemen ini, lihat Menyesuaikan Token dan Kode Otorisasi.

Menampilkan atau menyembunyikan atribut khusus dalam respons

Perlu diingat bahwa jika Anda menetapkan elemen GenerateResponse kebijakan ini ke true, representasi JSON lengkap dari token akan ditampilkan dalam respons, termasuk semua atribut khusus yang Anda tetapkan. Dalam beberapa kasus, sebaiknya sembunyikan beberapa atau semua atribut khusus sebagai respons agar tidak terlihat oleh aplikasi klien.

Secara default, atribut khusus akan muncul dalam respons. Jika ingin menyembunyikannya, Anda dapat menetapkan parameter display ke false. Contoh:

<Attributes>
    <Attribute name="employee_id" ref="employee.id" display="false"/>
    <Attribute name="employee_name" ref="employee.name" display="false"/>
</Attributes>

Nilai atribut display tidak dipertahankan. Misalnya Anda membuat token akses dengan atribut khusus yang ingin disembunyikan dalam respons yang dihasilkan. Menetapkan display=false akan mencapai sasaran tersebut. Namun, jika token akses baru dibuat nanti menggunakan token refresh, atribut khusus asli dari token akses tersebut akan muncul dalam respons token refresh. Hal ini karena Apigee tidak ingat bahwa atribut display mulanya ditetapkan ke false dalam kebijakan buat token akses--atribut khusus tersebut hanyalah bagian dari metadata token akses.

Anda akan melihat perilaku yang sama jika menambahkan atribut khusus ke kode otorisasi--saat token akses dibuat menggunakan kode tersebut, atribut khusus tersebut akan muncul dalam respons token akses. Sekali lagi, ini mungkin bukan perilaku yang Anda inginkan.

Untuk menyembunyikan atribut khusus dalam kasus ini, Anda memiliki pilihan berikut:

  • Reset atribut khusus secara eksplisit dalam kebijakan token refresh dan setel tampilannya ke false. Dalam hal ini, Anda mungkin perlu mengambil nilai kustom asli dari token akses asli menggunakan kebijakan GetOAuthV2Info.
  • Gunakan kebijakan JavaScript pascapemrosesan untuk mengekstrak secara manual atribut khusus yang tidak ingin Anda lihat dalam respons.

Lihat juga Menyesuaikan Token dan Kode Otorisasi.

Default:

N/A

Kehadiran:

Opsional

Nilai yang valid:
  • name -Nama atribut
  • ref - Nilai atribut. Dapat berasal dari variabel flow.
  • display - (Opsional) Memungkinkan Anda menentukan apakah atribut khusus muncul dalam respons atau tidak. Jika true, atribut khusus akan muncul dalam respons (Jika GenerateResponse juga diaktifkan). Jika false, atribut khusus tidak disertakan dalam respons. Nilai defaultnya adalah true. Lihat Menampilkan atau menyembunyikan atribut khusus dalam respons.
Digunakan dengan jenis hibah:
  • authorization_code
  • implisit
  • sandi
  • client_credentials
  • refresh_token
  • Juga dapat digunakan dengan operasi GenerateAuthorizationCode.

Elemen <CacheExpiryInSeconds>

<CacheExpiryInSeconds ref="request.queryparam.cache_expiry">Value 1</CacheExpiryInSeconds>

Elemen ini menerapkan TTL pada cache, yang memungkinkan penyesuaian jangka waktu untuk masa berlaku token akses yang di-cache. Rentang yang didukung adalah antara 1 dan 180 detik. Anda dapat menyediakan variabel alur dan variabel default. Jika diberikan, nilai variabel flow akan lebih diprioritaskan daripada nilai default yang ditentukan.

Elemen ini hanya dapat digunakan dengan operasi VerifyAccessToken.

Default T/A

Jika Anda menghapus elemen ini, periode habis masa berlaku default untuk token akses yang di-cache adalah 180 detik.

Kehadiran Opsional
Jenis Bilangan bulat
Nilai valid Semua bilangan bulat positif bukan nol. Menentukan waktu habis masa berlaku dalam detik.

Atribut

Tabel berikut menjelaskan atribut elemen <CacheExpiryInSeconds>

Atribut Deskripsi Default Kehadiran
referensi

Referensi ke variabel flow yang berisi nilai masa berlaku cache, yang dinyatakan dalam detik.

Jika diberikan, nilai variabel flow akan lebih diprioritaskan daripada nilai default yang ditentukan.

T/A Opsional

Elemen <ClientId>

<ClientId>request.formparam.client_id</ClientId>

Dalam beberapa kasus, aplikasi klien harus mengirim client ID ke server otorisasi. Elemen ini memungkinkan Anda menentukan lokasi yang digunakan Apigee untuk mencari client ID. Satu-satunya lokasi valid yang dapat Anda tetapkan adalah lokasi default, variabel alur request.formparam.client_id. Menyetel ClientId ke variabel lain tidak didukung. Lihat juga Mendapatkan token OAuth 2.0.

Default:

request.formparam.client_id (kode x-www-form-urlencoding dan ditentukan dalam isi permintaan)

Kehadiran:

Opsional

Jenis: String
Nilai yang valid: Variabel flow: request.formparam.client_id
Digunakan dengan jenis hibah:
  • authorization_code
  • sandi
  • implisit
  • client_credentials

Juga dapat digunakan dengan operasi GenerateAuthorizationCode.

Elemen <Code>

<Code>request.queryparam.code</Code>

Dalam alur jenis pemberian otorisasi, klien harus mengirimkan kode otorisasi ke server otorisasi (Apigee). Elemen ini memungkinkan Anda menentukan tempat Apigee harus mencari kode otorisasi. Misalnya, parameter dapat dikirim sebagai parameter kueri, header HTTP, atau parameter formulir (default).

Variabel, request.queryparam.auth_code, menunjukkan bahwa kode otorisasi harus ada sebagai parameter kueri, seperti, misalnya, ?auth_code=AfGlvs9. Misalnya, untuk mewajibkan kode otorisasi di header HTTP, tetapkan nilai ini ke request.header.auth_code. Lihat juga Mendapatkan token OAuth 2.0.

Default:

request.formparam.code (x-www-form-urlencoding dan ditetapkan dalam isi permintaan)

Kehadiran:

opsional

Jenis: String
Nilai yang valid: Variabel alur apa pun yang dapat diakses oleh kebijakan saat runtime
Digunakan dengan jenis hibah: authorization_code

Elemen <ExpiresIn>

<ExpiresIn>10000</ExpiresIn>

Menerapkan waktu habis masa berlaku token akses dan kode otorisasi dalam milidetik. (Untuk token refresh, gunakan <RefreshTokenExpiresIn>.) Nilai expiry time adalah nilai yang dihasilkan sistem ditambah nilai <ExpiresIn>. Jika <ExpiresIn> ditetapkan ke -1, masa berlaku token atau kode akan berakhir sesuai dengan masa berlaku token akses OAuth maksimum. Jika <ExpiresIn> tidak ditentukan, sistem akan menerapkan nilai default yang dikonfigurasi di tingkat sistem.

Waktu habis masa berlaku juga dapat disetel saat runtime menggunakan nilai default hard code atau dengan mereferensikan variabel alur. Misalnya, Anda dapat menyimpan nilai masa berlaku token dalam peta nilai kunci, mengambilnya, menetapkannya ke variabel, dan mereferensikannya dalam kebijakan. Contoh, kvm.oauth.expires_in.

Apigee menyimpan entity berikut dalam cache selama minimal 180 detik setelah entity diakses.

  • Token akses OAuth. Artinya, elemen ExpiresIn pada kebijakan OAuth v2 tidak akan dapat mengakhiri masa berlaku token akses dalam waktu kurang dari 180 detik.
  • Entitas Key Management Service (KMS) (Aplikasi, Developer, Produk API).
  • Atribut khusus pada token OAuth dan entity KMS.

Stanza berikut menentukan variabel flow dan nilai default juga. Perlu diperhatikan bahwa nilai variabel flow lebih diutamakan daripada nilai default yang ditentukan.

<ExpiresIn ref="kvm.oauth.expires_in">
    3600000 <!--default value in milliseconds-->
</ExpiresIn>

Apigee tidak mendukung cara untuk memaksa habisnya masa berlaku token setelah dibuat. Jika Anda perlu memaksa masa berlaku token berakhir (misalnya, berdasarkan suatu kondisi), solusi yang memungkinkan dijelaskan dalam postingan Komunitas Apigee ini.

Secara default, token akses yang habis masa berlakunya akan dihapus permanen dari sistem Apigee Apigee secara otomatis 3 hari setelah masa berlakunya habis. Lihat juga Menghapus token akses

Default:

Jika tidak ditentukan, sistem akan menerapkan nilai default yang dikonfigurasi pada tingkat sistem.

Kehadiran:

Opsional

Jenis: Bilangan bulat
Nilai yang valid:
  • Semua bilangan bulat positif tanpa nol. Tentukan waktu habis masa berlaku dalam milidetik. Meskipun nilai elemen ini dalam milidetik, nilai yang ditetapkan dalam properti expires_in token dan dalam variabel alur expires_in dinyatakan dalam detik.
  • -1 akan berakhir masa berlakunya sesuai dengan masa berlaku token akses OAuth maksimum.

    Catatan: Menentukan bilangan bulat negatif lainnya atau nol akan menyebabkan error deployment.
Digunakan dengan jenis hibah:
  • authorization_code
  • implisit
  • sandi
  • client_credentials
  • refresh_token

Juga digunakan dengan operasi GenerateAuthorizationCode.

Elemen <ExternalAccessToken>

<ExternalAccessToken>request.queryparam.external_access_token</ExternalAccessToken>

Memberi tahu Apigee tempat Anda dapat menemukan token akses eksternal (token akses yang tidak dihasilkan oleh Apigee).

Variabel request.queryparam.external_access_token menunjukkan bahwa token akses eksternal harus ada sebagai parameter kueri, seperti, misalnya, ?external_access_token=12345678. Misalnya, untuk meminta token akses eksternal di header HTTP, tetapkan nilai ini ke request.header.external_access_token. Lihat juga Menggunakan Token OAuth Pihak Ketiga.

Elemen <ExternalAuthorization>

<ExternalAuthorization>true</ExternalAuthorization>

Jika elemen ini salah atau tidak ada, Apigee akan memvalidasi client_id dan client_secret secara normal terhadap penyimpanan otorisasi Apigee. Gunakan elemen ini jika Anda ingin menggunakan token OAuth pihak ketiga. Untuk mengetahui detail tentang penggunaan elemen ini, lihat Menggunakan Token OAuth Pihak Ketiga.

Default:

false

Kehadiran:

Opsional

Jenis: Boolean
Nilai yang valid: benar atau salah
Digunakan dengan jenis hibah:
  • authorization_code
  • sandi
  • client_credentials

Elemen <ExternalAuthorizationCode>

<ExternalAuthorizationCode>request.queryparam.external_auth_code</ExternalAuthorizationCode>

Memberi tahu Apigee di mana kode autentikasi eksternal dapat ditemukan (kode autentikasi yang tidak dihasilkan oleh Apigee).

Variabel request.queryparam.external_auth_code menunjukkan bahwa kode autentikasi eksternal harus ada sebagai parameter kueri, seperti, misalnya, ?external_auth_code=12345678. Misalnya, untuk meminta kode autentikasi eksternal di header HTTP, tetapkan nilai ini ke request.header.external_auth_code. Lihat juga Menggunakan Token OAuth Pihak Ketiga.

Elemen <ExternalRefreshToken>

<ExternalRefreshToken>request.queryparam.external_refresh_token</ExternalRefreshToken>

Memberi tahu Apigee tempat Anda dapat menemukan token refresh eksternal (token refresh tidak dihasilkan oleh Apigee).

Variabel request.queryparam.external_refresh_token menunjukkan bahwa token refresh eksternal harus ada sebagai parameter kueri, seperti, misalnya, ?external_refresh_token=12345678. Misalnya, untuk meminta token refresh eksternal di header HTTP, tetapkan nilai ini ke request.header.external_refresh_token. Lihat juga Menggunakan Token OAuth Pihak Ketiga.

Elemen <GenerateResponse>

<GenerateResponse enabled='true'/>

Jika ditetapkan ke true atau jika atribut enabled dihilangkan, kebijakan akan membuat dan menampilkan respons. Misalnya, untuk GenerateAccessToken, responsnya mungkin seperti:

{
  "issued_at" : "1467841035013",
  "scope" : "read",
  "application_name" : "e31b8d06-d538-4f6b-9fe3-8796c11dc930",
  "refresh_token_issued_at" : "1467841035013",
  "status" : "approved",
  "refresh_token_status" : "approved",
  "api_product_list" : "[Product1, nhl_product]",
  "expires_in" : "1799",
  "developer.email" : "edward@slalom.org",
  "token_type" : "BearerToken",
  "refresh_token" : "rVSmm3QaNa0xBVFbUISz1NZI15akvgLJ",
  "client_id" : "Adfsdvoc7KX5Gezz9le745UEql5dDmj",
  "access_token" : "AnoHsh2oZ6EFWF4h0KrA0gC5og3a",
  "organization_name" : "cerruti",
  "refresh_token_expires_in" : "0",
  "refresh_count" : "0"
}

Jika ditetapkan ke false atau jika elemen <GenerateResponse> dihilangkan, tidak ada respons yang dikirim. Sebagai gantinya, serangkaian variabel alur diisi dengan nilai yang terkait dengan fungsi kebijakan. Misalnya, variabel flow yang disebut oauthv2authcode.OAuthV2-GenerateAuthorizationCode.code akan diisi dengan kode autentikasi yang baru dibuat. Perhatikan bahwa expires_in dinyatakan dalam detik dalam respons.

Default:

true

Kehadiran:

Opsional

Jenis: string
Nilai yang valid: benar atau salah
Digunakan dengan jenis hibah:
  • implisit
  • sandi
  • client_credentials
  • refresh_token
  • Juga dapat digunakan dengan operasi GenerateAuthorizationCode.

Elemen <GenerateErrorResponse>

<GenerateErrorResponse enabled='true'/>

Jika ditetapkan ke true, kebijakan akan membuat dan menampilkan respons jika atribut ContinueOnError disetel ke benar (true). Jika false (default), tidak ada respons yang dikirim. Sebagai gantinya, serangkaian variabel alur diisi dengan nilai yang terkait dengan fungsi kebijakan.

Default:

false

Kehadiran:

Opsional

Jenis: string
Nilai yang valid: benar atau salah
Digunakan dengan jenis hibah:
  • implisit
  • sandi
  • client_credentials
  • refresh_token
  • Juga dapat digunakan dengan operasi GenerateAuthorizationCode.

<GrantType>

<GrantType>request.queryparam.grant_type</GrantType>

Memberi tahu kebijakan tempat menemukan parameter jenis pemberian yang diteruskan dalam permintaan. Sesuai spesifikasi OAuth 2.0, jenis pemberian harus disertakan dengan permintaan token akses dan kode otorisasi. Variabel dapat berupa header, parameter kueri, atau parameter formulir (default).

Misalnya, request.queryparam.grant_type menunjukkan bahwa Sandi harus ada sebagai parameter kueri, misalnya, ?grant_type=password. Misalnya, untuk meminta jenis pemberian di header HTTP, tetapkan nilai ini ke request.header.grant_type. Lihat juga Mendapatkan token OAuth 2.0.

Default:

request.formparam.grant_type (yang dienkode dengan x-www-form-urlencoding dan ditentukan dalam isi permintaan)

Kehadiran:

Opsional

Jenis: string
Nilai yang valid: Variabel, seperti yang dijelaskan di atas.
Digunakan dengan jenis hibah:
  • authorization_code
  • sandi
  • implisit
  • client_credentials
  • refresh_token

Elemen <Operation>

<Operation>GenerateAuthorizationCode</Operation>

Operasi OAuth 2.0 yang dijalankan oleh kebijakan.

Default:

Jika <Operation> tidak ditentukan, Apigee akan melihat daftar <SupportedGrantTypes>. Hanya operasi pada jenis pemberian tersebut yang akan berhasil. Dengan kata lain, Anda dapat menghilangkan <Operation> jika menentukan <GrantType> dalam daftar <SupportedGrantTypes>. Jika <Operation> atau <SupportedGrantTypes> tidak ditentukan, jenis pemberian default adalah authorization_code. Artinya, permintaan jenis pemberian otorisasi_code akan berhasil, tetapi permintaan lainnya akan gagal.

Kehadiran:

Opsional

Jenis: String
Nilai yang valid:
  • GenerateAccessToken - Membuat token akses. Lihat juga Mendapatkan token OAuth 2.0.
  • GenerateAccessTokenImplicitGrant - Membuat token akses untuk jenis pemberian implisit. Lihat juga Mendapatkan token OAuth 2.0.
  • GenerateAuthorizationCode - Membuat kode autentikasi. Digunakan dengan jenis pemberian kode otorisasi. Lihat juga Mendapatkan token OAuth 2.0.
  • RefreshAccessToken - Tukar token refresh dengan token akses baru. Lihat juga Mendapatkan token OAuth 2.0.
  • VerifyAccessToken - Memverifikasi bahwa token akses yang dikirim dalam permintaan valid. Lihat contoh VerifyAccessToken di atas dan Memverifikasi token akses.
  • InvalidateToken - Mencabut token akses. Setelah token dicabut, klien tidak dapat menggunakan token tersebut untuk memanggil API yang dilindungi. Lihat juga Menyetujui dan mencabut token akses.
  • ValidateToken - Mengaktifkan kembali atau "menyetujui" token akses yang sebelumnya dicabut. Lihat juga Menyetujui dan mencabut token akses.

Operasi token akses JWT tambahan

Jika Anda lebih suka menggunakan token akses JWT, bukan token string buram, operasi berikut juga tersedia untuk menghasilkan dan memvalidasi token JWT. Untuk mengetahui detailnya, lihat Menggunakan operasi token OAuth JWT:

Elemen <PassWord>

<PassWord>request.queryparam.password</PassWord>

Elemen ini digunakan hanya dengan jenis pemberian sandi. Dengan jenis pemberian sandi, kredensial pengguna (sandi dan nama pengguna) harus disediakan untuk kebijakan OAuthV2. Elemen <PassWord> dan <UserName> digunakan untuk menentukan variabel tempat Apigee dapat menemukan nilai-nilai ini. Jika elemen ini tidak ditentukan, kebijakan ini akan menemukan nilai (secara default) dalam parameter formulir yang bernama username dan password. Jika nilainya tidak ditemukan, kebijakan akan menampilkan error. Anda dapat menggunakan elemen <PassWord> dan <UserName> untuk mereferensikan variabel alur apa pun yang berisi kredensial.

Misalnya, Anda dapat meneruskan sandi dalam permintaan token menggunakan parameter kueri dan menetapkan elemen seperti ini: <PassWord>request.queryparam.password</PassWord>. Untuk mewajibkan sandi di header HTTP, tetapkan nilai ini ke request.header.password.

Kebijakan OAuthV2 tidak melakukan apa pun terhadap nilai kredensial ini; Apigee hanya memverifikasi bahwa nilai kredensial tersebut ada. Developer API bebas mengambil permintaan nilai dan mengirimkannya ke penyedia identitas sebelum kebijakan pembuatan token dijalankan.

Lihat juga Mendapatkan token OAuth 2.0.

Default:

request.formparam.password (yang dienkode dengan x-www-form-urlw dan ditentukan dalam isi permintaan)

Kehadiran:

Opsional

Jenis: String
Nilai yang valid: Variabel alur apa pun yang tersedia untuk kebijakan saat runtime.
Digunakan dengan jenis hibah: sandi

<PrivateKey>/<Value>

<PrivateKey>
  <Value ref="variable-name-here"/>
</PrivateKey>

Menyediakan kunci pribadi yang digunakan untuk memverifikasi atau menandatangani token akses berformat JWT dengan algoritma RSA. Gunakan atribut ref untuk meneruskan kunci dalam variabel flow. Hanya gunakan jika nilai elemen Algorithm adalah salah satu dari RS256, RS384, atau RS512. Untuk informasi selengkapnya, lihat Menggunakan operasi token OAuth JWT.

Default T/A
Kehadiran Wajib jika nilai elemen Algorithm adalah salah satu dari HS256, HS384, atau HS512.
Type String
Nilai yang valid Variabel flow yang berisi string yang mewakili nilai kunci pribadi RSA berenkode PEM.

<PublicKey>/<Value>

<PublicKey>
   <Value ref="variable-name-here"/>
</PublicKey>

Menentukan kunci publik atau sertifikat publik yang digunakan untuk memverifikasi tanda tangan pada token akses berformat JWT yang ditandatangani dengan algoritma RSA. Gunakan atribut ref untuk meneruskan kunci/sertifikat dalam variabel flow. Hanya gunakan jika nilai elemen Algorithm adalah salah satu dari RS256, RS384, atau RS512.

Default T/A
Kehadiran Untuk memverifikasi JWT yang ditandatangani dengan algoritma RSA, Anda harus menggunakan elemen Certificate, JWKS, atau Value.
Type String
Nilai yang valid String atau variabel alur.

Elemen <RedirectUri>

<RedirectUri>request.queryparam.redirect_uri</RedirectUri>

Menentukan di mana Apigee harus mencari parameter redirect_uri dalam permintaan.

Tentang URI pengalihan

URI Pengalihan digunakan dengan kode otorisasi dan jenis pemberian implisit. URI pengalihan memberi tahu server otorisasi (Apigee) tujuan pengiriman kode otorisasi (untuk jenis pemberian kode autentikasi) atau token akses (untuk jenis pemberian implisit). Penting untuk memahami kapan parameter ini diperlukan, kapan parameter ini opsional, dan bagaimana parameter tersebut digunakan:

  • (wajib) Jika URL Callback didaftarkan dengan aplikasi developer yang terkait dengan kunci klien permintaan, dan jika redirect_uri ada dalam permintaan, keduanya harus sama persis. Jika tidak cocok, error akan ditampilkan. Untuk mengetahui informasi tentang mendaftarkan aplikasi developer di Apigee dan menentukan URL Callback, lihat Mendaftarkan aplikasi dan mengelola kunci API.

  • (opsional) Jika URL Callback terdaftar, dan redirect_uri tidak ada dalam permintaan, Apigee akan mengalihkan ke URL Callback yang terdaftar.
  • (wajib) Jika URL Callback tidak terdaftar, redirect_uri diperlukan. Perhatikan bahwa dalam kasus ini, Apigee akan menerima URL APA PUN. Kasus ini dapat menimbulkan masalah keamanan, sehingga hanya boleh digunakan dengan aplikasi klien yang tepercaya. Jika aplikasi klien tidak dipercaya, praktik terbaiknya adalah selalu mewajibkan pendaftaran URL Callback.

Anda dapat mengirim parameter ini dalam parameter kueri atau di header. Variabel request.queryparam.redirect_uri menunjukkan bahwa RedirectUri harus ada sebagai parameter kueri, seperti, misalnya, ?redirect_uri=login.myapp.com. Misalnya, untuk meminta RedirectUri di header HTTP, tetapkan nilai ini ke request.header.redirect_uri. Baca juga Mendapatkan token OAuth 2.0.

Default:

request.formparam.redirect_uri (dienkode x-www-form-url dan ditentukan dalam isi permintaan)

Kehadiran:

Opsional

Jenis: String
Nilai yang valid: Variabel alur apa pun yang dapat diakses dalam kebijakan saat runtime
Digunakan dengan jenis hibah:
  • authorization_code
  • implisit

Juga digunakan dengan operasi GenerateAuthorizationCode.

Elemen <RefreshToken>

<RefreshToken>request.queryparam.refreshtoken</RefreshToken>

Saat meminta token akses menggunakan token refresh, Anda harus menyediakan token refresh dalam permintaan. Elemen ini memungkinkan Anda menentukan tempat Apigee harus mencari token refresh. Misalnya, parameter ini dapat dikirim sebagai parameter kueri, header HTTP, atau parameter formulir (default).

Variabel request.queryparam.refreshtoken menunjukkan bahwa token refresh harus ada sebagai parameter kueri, seperti, misalnya, ?refresh_token=login.myapp.com. Misalnya, untuk mewajibkan RefreshToken di header HTTP, tetapkan nilai ini ke request.header.refresh_token. Baca juga Mendapatkan token OAuth 2.0.

Default:

request.formparam.refresh_token (format x-www-form-urlencoding dan ditentukan dalam isi permintaan)

Kehadiran:

Opsional

Jenis: String
Nilai yang valid: Variabel alur apa pun yang dapat diakses dalam kebijakan saat runtime
Digunakan dengan jenis hibah:
  • refresh_token

Elemen <RefreshTokenExpiresIn>

<RefreshTokenExpiresIn>1000</RefreshTokenExpiresIn>

Menerapkan waktu habis masa berlaku token refresh dalam milidetik. Nilai waktu habis masa berlaku adalah nilai yang dihasilkan sistem ditambah nilai <RefreshTokenExpiresIn>. Jika <RefreshTokenExpiresIn> ditetapkan ke -1, masa berlaku token refresh akan berakhir sesuai dengan masa berlaku token refresh OAuth maksimum. Jika <RefreshTokenExpiresIn> tidak ditentukan, sistem akan menerapkan nilai default.

Waktu habis masa berlaku juga dapat disetel saat runtime menggunakan nilai default hard code atau dengan mereferensikan variabel alur. Misalnya, Anda dapat menyimpan nilai masa berlaku token dalam peta nilai kunci, mengambilnya, menetapkannya ke variabel, dan mereferensikannya dalam kebijakan. Misalnya, kvm.oauth.expires_in.

Stanza berikut menentukan variabel flow dan nilai default juga. Perhatikan bahwa nilai variabel flow lebih diutamakan daripada nilai default yang ditentukan.

<RefreshTokenExpiresIn ref="kvm.oauth.expires_in">
    86400000 <!--value in milliseconds-->
</RefreshTokenExpiresIn>

Default:

2592000000 md (30 hari) (berlaku 31 Mei 2023)

Kehadiran:

Opsional

Jenis: Bilangan bulat
Nilai yang valid:
  • Semua bilangan bulat positif tanpa nol. Menentukan waktu masa berakhir dalam milidetik.
  • -1 akan berakhir masa berlakunya sesuai dengan masa berlaku token refresh OAuth maksimum.

    Catatan: Menentukan bilangan bulat negatif lainnya atau nol akan menyebabkan error deployment.
Digunakan dengan jenis hibah:
  • authorization_code
  • sandi
  • refresh_token

Elemen <ResponseType>

<ResponseType>request.queryparam.response_type</ResponseType>

Elemen ini memberi tahu Apigee jenis pemberian yang diminta aplikasi klien. Metode ini hanya digunakan dengan kode otorisasi dan alur jenis pemberian implisit.

Secara default, Apigee mencari nilai jenis respons dalam parameter kueri response_type. Jika Anda ingin mengganti perilaku default ini, gunakan elemen <ResponseType> untuk mengonfigurasi variabel flow yang berisi nilai jenis respons. Misalnya, jika Anda menetapkan elemen ini ke request.header.response_type, Apigee akan mencari jenis respons yang akan diteruskan dalam header permintaan. Lihat juga Mendapatkan token OAuth 2.0.

Default:

request.formparam.response_type (yang dienkode dengan x-www-form-url dan ditentukan dalam isi permintaan)

Kehadiran:

Opsional. Gunakan elemen ini jika Anda ingin mengganti perilaku default.

Jenis: String
Nilai yang valid: Baik code (untuk jenis pemberian kode otorisasi) atau token (untuk jenis pemberian kode implisit)
Digunakan dengan jenis hibah:
  • implisit
  • Juga digunakan dengan operasi GenerateAuthorizationCode.

Elemen <RefreshToken>

<ReuseRefreshToken>true</ReuseRefreshToken>

Jika ditetapkan ke true, token refresh yang ada akan digunakan kembali hingga masa berlakunya habis. Jika false, token refresh baru akan dikeluarkan oleh Apigee saat token refresh yang valid ditampilkan.

Default:

false

Kehadiran:

opsional

Jenis: boolean
Nilai yang valid:

true atau false

Digunakan dengan jenis hibah:
  • refresh_token

Elemen <RFCCompliantRequestResponse>

<RFCCompliantRequestResponse>[true | false]</RFCCompliantRequestResponse>

Jika true, kebijakan tersebut mematuhi standar RFC6749 dan memungkinkan perilaku yang mematuhi kebijakan berikut:

  • Respons error dan non-error akan menyertakan kolom header respons Cache-Control HTTP untuk mematuhi RFC2616 (Hypertext Transfer Protocol -- HTTP/1.1), dengan nilai no-store dalam respons apa pun yang berisi token, kredensial, atau informasi sensitif lainnya, serta kolom header respons Pragma dengan nilai no-cache.
  • Properti expires_in akan menggunakan format alfanumerik. Agar konsisten, refresh_token_expires_in juga akan berupa alfanumerik.
  • Respons OAuthV2 untuk pembuatan token akan menyertakan kolom header Bearer yang sesuai dengan RFC, bukan BearerToken.
  • Pesan error dalam payload respons akan memiliki format: {"error" : "xxx", "error_description" :"yyy"} untuk error token refresh.

Default:

false: Secara default, kebijakan tersebut mengizinkan perilaku tertentu yang tidak sesuai dengan RFC. Untuk mengetahui detailnya, lihat Perilaku yang tidak sesuai dengan RFC. Tetapkan elemen ini ke true untuk mengaktifkan kepatuhan RFC.

Kehadiran:

Opsional

Jenis: Boolean
Nilai yang valid: true atau false
Digunakan dengan jenis hibah: Semua

<SecretKey>/<Value>

<SecretKey>
  <Value ref="your-variable-name"/>
</SecretKey>

Memberikan kunci rahasia yang digunakan untuk memverifikasi atau menandatangani token akses berformat JWT dengan algoritma HMAC. Hanya gunakan jika algoritma menggunakan salah satu dari HS256, HS384, atau HS512. Gunakan atribut ref untuk meneruskan kunci dalam variabel flow. Untuk informasi selengkapnya, lihat Menggunakan operasi token OAuth JWT.

Apigee menerapkan kekuatan kunci minimum untuk algoritma HS256/HS384/HS512. Panjang kunci minimum untuk HS256 adalah 32 byte, untuk HS384 adalah 48 byte, dan untuk HS512 adalah 64 byte. Menggunakan kunci dengan kekuatan yang lebih rendah akan menyebabkan error runtime.

Default T/A
Kehadiran Diperlukan untuk algoritma HMAC.
Type String
Nilai yang valid Variabel flow

Elemen <Scope>

<Scope>request.queryparam.scope</Scope>

Jika elemen ini ada dalam salah satu kebijakan GenerateAccessToken atau GenerateAuthorizationCode, elemen ini akan digunakan untuk menentukan cakupan mana yang akan memberikan token atau kode. Nilai ini biasanya diteruskan ke kebijakan dalam permintaan dari aplikasi klien. Anda dapat mengonfigurasi elemen untuk mengambil variabel alur, sehingga memberi Anda opsi untuk memilih cara cakupan diteruskan dalam permintaan. Dalam contoh berikut, request.queryparam.scope menunjukkan bahwa cakupan harus ada sebagai parameter kueri, seperti, misalnya, ?scope=READ. Misalnya, untuk meminta cakupan di header HTTP, tetapkan nilai ini ke request.header.scope.

Jika elemen ini muncul dalam kebijakan "VerifyAccessToken", elemen tersebut akan digunakan untuk menentukan cakupan mana yang harus diterapkan oleh kebijakan. Dalam jenis kebijakan ini, nilai harus berupa nama cakupan yang "hard code" -- Anda tidak dapat menggunakan variabel. Contoh:

<Scope>A B</Scope>

Lihat juga Menggunakan cakupan OAuth2 dan Mendapatkan token OAuth 2.0.

Default:

Tidak ada cakupan

Kehadiran:

Opsional

Jenis: String
Nilai yang valid:

Variabel flow, jika digunakan dengan kebijakan Buat*.

Jika digunakan dengan VerifyAccessToken, daftar nama cakupan (string) yang dipisahkan spasi.

Digunakan dengan jenis hibah:
  • authorization_code
  • implisit
  • sandi
  • client_credentials
  • Dapat juga digunakan dengan operasi GenerateAuthorizationCode dan VerifyAccessToken.

Elemen <State>

<State>request.queryparam.state</State>

Jika aplikasi klien harus mengirimkan informasi status ke server otorisasi, elemen ini memungkinkan Anda menentukan tempat Apigee harus mencari nilai status. Misalnya, parameter ini dapat dikirim sebagai parameter kueri atau di header HTTP. Nilai status biasanya digunakan sebagai tindakan keamanan untuk mencegah serangan CSRF.

Misalnya, request.queryparam.state menunjukkan bahwa status harus ada sebagai parameter kueri, misalnya, ?state=HjoiuKJH32. Misalnya, untuk meminta status di header HTTP, tetapkan nilai ini ke request.header.state. Lihat juga Mendapatkan token OAuth 2.0.

Default:

Tanpa status

Kehadiran:

Opsional

Jenis: String
Nilai yang valid: Variabel alur apa pun yang dapat diakses oleh kebijakan saat runtime
Digunakan dengan jenis hibah:
  • Semua
  • Juga dapat digunakan dengan operasi GenerateAuthorizationCode

Elemen <StoreToken>

 <StoreToken>true</StoreToken>

Setel elemen ini ke true jika elemen <ExternalAuthorization> adalah true. Elemen <StoreToken> memberi tahu Apigee untuk menyimpan token akses eksternal. Jika tidak, data tidak akan dipertahankan.

Default:

false

Kehadiran:

Opsional

Jenis: Boolean
Nilai yang valid: benar atau salah
Digunakan dengan jenis hibah:
  • authorization_code
  • sandi
  • client_credentials

Elemen <SupportedGrantTypes>/<GrantType>

<SupportedGrantTypes>
    <GrantType>authorization_code</GrantType>
    <GrantType>client_credentials</GrantType>
    <GrantType>implicit</GrantType>
    <GrantType>password</GrantType>
</SupportedGrantTypes>

Menentukan jenis pemberian yang didukung oleh endpoint token OAuth di Apigee. Endpoint dapat mendukung beberapa jenis pemberian (yaitu, satu endpoint dapat dikonfigurasi untuk mendistribusikan token akses ke beberapa jenis pemberian.) Untuk mendapatkan informasi lebih lanjut tentang endpoint, lihat Memahami endpoint OAuth. Jenis pemberian diteruskan dalam permintaan token di parameter grant_type.

Jika tidak ada jenis pemberian yang didukung yang ditentukan, satu-satunya jenis pemberian yang diizinkan adalah authorization_code dan implicit. Lihat juga elemen <GrantType> (yang merupakan elemen level lebih tinggi yang digunakan untuk menentukan tempat Apigee harus mencari parameter grant_type yang diteruskan dalam permintaan klien. Apigee akan memastikan bahwa nilai parameter grant_type cocok dengan salah satu jenis pemberian yang didukung).

Default:

otorisasi _code dan implicit

Kehadiran:

Diperlukan

Jenis: String
Nilai yang valid:
  • client_credentials
  • authorization_code
  • sandi
  • implisit

Elemen <Tokens>/<Token>

Digunakan dengan operasi ValidateToken dan InvalidateToken. Lihat juga Menyetujui dan mencabut token akses. Elemen <Token> mengidentifikasi variabel alur yang menentukan sumber token yang akan dicabut. Misalnya, jika developer diharapkan mengirimkan token akses sebagai parameter kueri dengan nama access_token, gunakan request.queryparam.access_token.

Elemen <UserName>

<UserName>request.queryparam.user_name</UserName>

Elemen ini digunakan hanya dengan jenis pemberian sandi. Dengan jenis pemberian sandi, kredensial pengguna (sandi dan nama pengguna) harus disediakan untuk kebijakan OAuthV2. Elemen <PassWord> dan <UserName> digunakan untuk menentukan variabel tempat Apigee dapat menemukan nilai-nilai ini. Jika elemen ini tidak ditentukan, kebijakan ini akan menemukan nilai (secara default) dalam parameter formulir yang bernama username dan password. Jika nilainya tidak ditemukan, kebijakan akan menampilkan error. Anda dapat menggunakan elemen <PassWord> dan <UserName> untuk mereferensikan variabel alur apa pun yang berisi kredensial.

Misalnya, Anda dapat meneruskan nama pengguna dalam parameter kueri dan menetapkan elemen <UserName> seperti ini: <UserName>request.queryparam.username</UserName>.Untuk meminta nama pengguna di header HTTP, tetapkan nilai ini ke request.header.username.

Kebijakan OAuthV2 tidak melakukan apa pun terhadap nilai kredensial ini; Apigee hanya memverifikasi bahwa nilai kredensial tersebut ada. Developer API bebas mengambil permintaan nilai dan mengirimkannya ke penyedia identitas sebelum kebijakan pembuatan token dijalankan.

Lihat juga Mendapatkan token OAuth 2.0.

Default:

request.formparam.username (x-www-form-urlencoding dan ditetapkan dalam isi permintaan)

Kehadiran:

Opsional

Jenis: String
Nilai yang valid: Setelan variabel apa pun.
Digunakan dengan jenis hibah: sandi

Memverifikasi token akses

Setelah endpoint token disiapkan untuk proxy API, kebijakan OAuthV2 terkait yang menentukan operasi VerifyAccessToken akan disertakan ke Flow yang mengekspos resource yang dilindungi.

Misalnya, untuk memastikan bahwa semua permintaan ke API sudah diberi otorisasi, kebijakan berikut akan menerapkan verifikasi token akses:

<OAuthV2 name="VerifyOAuthAccessToken">
  <Operation>VerifyAccessToken</Operation>
</OAuthV2>

Kebijakan ini dilampirkan ke resource API yang akan dilindungi. Untuk memastikan semua permintaan ke API telah diverifikasi, lampirkan kebijakan ke PreFlow permintaan ProxyEndpoint seperti berikut:

<PreFlow>
  <Request>
    <Step><Name>VerifyOAuthAccessToken</Name></Step>
  </Request>
</PreFlow>

Elemen opsional berikut dapat digunakan untuk mengganti setelan default untuk operasi VerifyAccessToken.

Nama Deskripsi
Cakupan

Daftar cakupan yang dipisahkan spasi. Verifikasi akan berhasil jika setidaknya salah satu cakupan yang tercantum ada dalam token akses. Misalnya, kebijakan berikut akan memeriksa token akses untuk memastikan token tersebut berisi setidaknya salah satu cakupan yang tercantum. Jika ada BACA atau TULIS, verifikasi akan berhasil.

<OAuthV2 name="ValidateOauthScopePolicy">
  <Operation>VerifyAccessToken</Operation>
  <Scope>READ WRITE</Scope>
</OAuthV2>
AccessToken Variabel tempat token akses diharapkan berada. Misalnya request.queryparam.accesstoken. Secara default, token akses diharapkan akan ditampilkan oleh aplikasi di header HTTP Otorisasi, sesuai dengan spesifikasi OAuth 2.0. Gunakan setelan ini jika token akses diperkirakan akan ditampilkan di lokasi non-standar, seperti parameter kueri, atau header HTTP dengan nama selain Otorisasi.

Lihat juga Memverifikasi token akses dan Mendapatkan token OAuth 2.0.

Menentukan lokasi variabel permintaan

Untuk setiap jenis hibah, kebijakan membuat asumsi tentang lokasi atau informasi yang diperlukan dalam pesan permintaan. Asumsi ini didasarkan pada spesifikasi OAuth 2.0. Jika aplikasi Anda harus menyimpang dari spesifikasi OAuth 2.0, Anda dapat menentukan lokasi yang diharapkan untuk setiap parameter. Misalnya, saat menangani kode otorisasi, Anda dapat menentukan lokasi kode otorisasi, client ID, URI pengalihan, dan cakupannya. Parameter ini dapat ditentukan sebagai header HTTP, parameter kueri, atau parameter formulir.

Contoh di bawah menunjukkan cara menentukan lokasi parameter kode otorisasi yang diperlukan sebagai header HTTP:

  ...
  <GrantType>request.header.grant_type</GrantType>
  <Code>request.header.code</Code>
  <ClientId>request.header.client_id</ClientId>
  <RedirectUri>request.header.redirect_uri</RedirectUri>
  <Scope>request.header.scope</Scope>
  ...

Atau, jika diperlukan untuk mendukung basis aplikasi klien, Anda dapat memadupadankan header dan parameter kueri:

  ...
  <GrantType>request.header.grant_type</GrantType>
  <Code>request.header.code</Code>
  <ClientId>request.queryparam.client_id</ClientId>
  <RedirectUri>request.queryparam.redirect_uri</RedirectUri>
  <Scope>request.queryparam.scope</Scope>
  ...

Hanya satu lokasi yang dapat dikonfigurasi per parameter.

Variabel alur

Variabel alur yang ditentukan dalam tabel ini akan diisi saat masing-masing kebijakan OAuth dijalankan, sehingga tersedia untuk kebijakan atau aplikasi lain yang dijalankan dalam alur proxy API.

Operasi VerifyAccessToken

Saat operasi VerifyAccessToken dijalankan, sejumlah besar variabel alur akan diisi dalam konteks eksekusi proxy. Variabel ini memberi Anda properti yang terkait dengan token akses, aplikasi developer, dan developer. Anda dapat menggunakan kebijakan ProvideMessage atau JavaScript, untuk membaca salah satu variabel ini dan menggunakannya sesuai kebutuhan nanti dalam alur. Variabel ini juga dapat berguna untuk tujuan proses debug.

Variabel khusus token

Variabel Deskripsi
organization_name Nama organisasi tempat proxy dieksekusi.
developer.id ID developer atau AppGroup yang terkait dengan aplikasi klien yang terdaftar.
developer.app.name Nama developer atau aplikasi AppGroup yang terkait dengan aplikasi klien terdaftar.
client_id Client ID aplikasi klien yang terdaftar.
grant_type Jenis pemberian yang terkait dengan permintaan. Tidak didukung untuk operasi VerifyJWTAccessToken.
token_type Jenis token yang terkait dengan permintaan.
access_token Token akses yang sedang diverifikasi.
accesstoken.{custom_attribute} Atribut khusus yang telah diberi nama dalam token akses.
issued_at Tanggal penerbitan token akses yang dinyatakan dalam waktu epoch Unix dalam milidetik.
expires_in Waktu habis masa berlaku untuk token akses. Dinyatakan dalam detik. Meskipun elemen ExpiresIn menetapkan masa berlaku dalam milidetik, pada respons token dan variabel alur, nilainya akan dikeluarkan dalam detik.
status Status token akses (misalnya, disetujui atau dicabut).
scope Cakupan (jika ada) yang terkait dengan token akses.
apiproduct.<custom_attribute_name> Atribut khusus bernama dari produk API yang terkait dengan aplikasi klien terdaftar.
apiproduct.name Nama produk API yang terkait dengan aplikasi klien terdaftar.
revoke_reason

(Khusus Apigee Hybrid) Menunjukkan alasan token akses dicabut. Tidak didukung untuk operasi VerifyJWTAccessToken.

Nilainya dapat berupa REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, atau TOKEN_REVOKED.

Variabel khusus aplikasi

Variabel ini terkait dengan Aplikasi Developer yang dikaitkan dengan token.

Variabel Deskripsi
app.name
app.id
app.accessType
app.callbackUrl
app.status disetujui atau dicabut
app.scopes
app.appFamily
app.apiproducts
app.appParentStatus
app.appType Contoh: Developer
app.appParentId
app.created_by
app.created_at
app.last_modified_at
app.last_modified_by
app.{custom_attributes} Atribut khusus bernama dari aplikasi klien terdaftar.

Variabel khusus AppGroup

Variabel alur berikut yang berisi informasi tentang AppGroup untuk token dan diisi oleh kebijakan. Atribut AppGroup ini hanya diisi jika verifyapikey.{policy_name}.app.appType adalah "AppGroup".

Variabel Deskripsi
appgroup.displayName Nama tampilan AppGroup.
appgroup.name Nama AppGroup.
appgroup.id ID AppGroup.
appOwnerStatus Status pemilik aplikasi: 'active', 'inactive', atau 'login_lock'.
created_at Stempel tanggal/waktu saat AppGroup dibuat.
created_by Alamat email developer yang membuat AppGroup.
last_modified_at Stempel tanggal/waktu saat AppGroup terakhir diubah.
last_modified_by Alamat email developer yang terakhir kali mengubah AppGroup.
{appgroup_custom_attributes} Atribut AppGroup kustom apa pun. Tentukan nama atribut khusus.

Variabel khusus developer

Jika app.appType adalah "Developer", atribut developer akan diisi.

Variabel Deskripsi
Variabel khusus developer
developer.id
developer.userName
developer.firstName
developer.lastName
developer.email
developer.status aktif atau tidak aktif
developer.apps
developer.created_by
developer.created_at
developer.last_modified_at
developer.last_modified_by
developer.{custom_attributes} Atribut khusus developer yang telah diberi nama.

Operasi GenerateAuthorizationCode

Variabel ini ditetapkan saat operasi GenerateAuthorizationCode berhasil dijalankan:

Awalan: oauthv2authcode.{policy_name}.{variable_name}

Contoh: oauthv2authcode.GenerateCodePolicy.code

Variabel Deskripsi
code Kode otorisasi yang dihasilkan saat kebijakan dijalankan.
redirect_uri URI pengalihan yang terkait dengan aplikasi klien yang terdaftar.
scope Cakupan OAuth opsional diteruskan di permintaan klien.
client_id Client ID yang diteruskan di permintaan klien.

Operasi GenerateAccessToken dan RefreshAccessToken

Variabel ini ditetapkan saat operasi GenerateAccessToken dan RefreshAccessToken berhasil dijalankan. Perlu diperhatikan bahwa variabel token refresh tidak berlaku untuk alur jenis pemberian kredensial klien.

Awalan: oauthv2accesstoken.{policy_name}.{variable_name}

Contoh: oauthv2accesstoken.GenerateTokenPolicy.access_token

Nama variabel Deskripsi
access_token Token akses yang dibuat.
client_id Client ID aplikasi developer yang terkait dengan token ini.
expires_in Nilai masa berlaku token. Lihat elemen <ExpiresIn> untuk mengetahui detailnya. Perhatikan bahwa dalam respons, expires_in dinyatakan dalam detik.
scope Daftar cakupan yang tersedia yang dikonfigurasi untuk token. Lihat Bekerja dengan cakupan OAuth2.
status Berupa approved atau revoked.
token_type Disetel ke BearerToken.
developer.email Alamat email developer terdaftar yang memiliki aplikasi developer yang terkait dengan token.
organization_name Organisasi tempat proxy dieksekusi.
api_product_list Daftar produk yang terkait dengan aplikasi developer terkait token.
refresh_count
refresh_token Token refresh yang dibuat. Perhatikan bahwa token refresh tidak dibuat untuk jenis pemberian kredensial klien.
refresh_token_expires_in Masa aktif token refresh, dalam detik.
refresh_token_issued_at Nilai waktu ini adalah representasi string dari kuantitas stempel waktu 32-bit yang sesuai. Misalnya, 'Rab, 21 Aug 2013 19:16:47 UTC' sesuai dengan nilai stempel waktu 1377112607413.
refresh_token_status Berupa approved atau revoked.

GenerateAccessTokenImplicitGrant

Variabel ini ditetapkan saat operasi GenerateAccessTokenImplicit berhasil dijalankan untuk alur jenis pemberian implisit.

Awalan: oauthv2accesstoken.{policy_name}.{variable_name}

Contoh: oauthv2accesstoken.RefreshTokenPolicy.access_token

Variabel Deskripsi
oauthv2accesstoken.access_token Token akses yang dibuat saat kebijakan dijalankan.
oauthv2accesstoken.{policy_name}.expires_in Nilai masa berlaku token, dalam detik. Lihat elemen <ExpiresIn> untuk mengetahui detailnya.

Referensi error

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

Error runtime

Error ini dapat terjadi saat kebijakan dieksekusi.

Kode kesalahan Status HTTP Penyebab Dilempar oleh operasi
steps.oauth.v2.access_token_expired 401 Masa berlaku token akses telah berakhir.

VerifyAccessToken
InvalidateToken

steps.oauth.v2.access_token_not_approved 401 Token akses dicabut. VerifyAccessToken
steps.oauth.v2.apiresource_doesnot_exist 401 Resource yang diminta tidak ada produk API apa pun yang terkait dengan token akses. VerifyAccessToken
steps.oauth.v2.FailedToResolveAccessToken 500 Kebijakan diharapkan dapat menemukan token akses dalam variabel yang ditentukan dalam elemen <AccessToken>, tetapi variabel tersebut tidak dapat di-resolve. GenerateAccessToken
steps.oauth.v2.FailedToResolveAuthorizationCode 500 Kebijakan ini seharusnya menemukan kode otorisasi dalam variabel yang ditentukan dalam elemen <Code>, tetapi variabel tersebut tidak dapat di-resolve. GenerateAuthorizationCode
steps.oauth.v2.FailedToResolveClientId 500 Kebijakan ini diharapkan dapat menemukan Client-ID dalam variabel yang ditentukan dalam elemen <ClientId>, tetapi variabel tersebut tidak dapat di-resolve. GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken
steps.oauth.v2.FailedToResolveRefreshToken 500 Kebijakan ini diharapkan menemukan token refresh dalam variabel yang ditentukan dalam elemen <RefreshToken>, tetapi variabel tersebut tidak dapat di-resolve. RefreshAccessToken
steps.oauth.v2.FailedToResolveToken 500 Kebijakan diharapkan menemukan token dalam variabel yang ditentukan dalam elemen <Tokens>, tetapi variabel tersebut tidak dapat di-resolve.

ValidateToken
InvalidateToken

steps.oauth.v2.InsufficientScope 403 Token akses yang ditampilkan dalam permintaan memiliki cakupan yang tidak cocok dengan cakupan yang ditentukan dalam kebijakan verifikasi token akses. Untuk mempelajari cakupan, lihat Menggunakan cakupan OAuth2. VerifyAccessToken
steps.oauth.v2.invalid_access_token 401 Token akses yang dikirim dari klien tidak valid. VerifyAccessToken
steps.oauth.v2.invalid_client 401

Nama error ini ditampilkan jika properti <GenerateResponse> kebijakan disetel ke true dan client ID yang dikirim dalam permintaan tidak valid. Pastikan Anda menggunakan nilai kunci dan rahasia klien yang benar untuk Aplikasi Developer yang terkait dengan proxy Anda. Biasanya, nilai ini dikirim sebagai header Otorisasi Dasar berenkode Base64.

GenerateAccessToken
RefreshAccessToken
steps.oauth.v2.invalid_request 400 Nama error ini digunakan untuk berbagai jenis error, biasanya untuk parameter yang tidak ada atau salah yang dikirim dalam permintaan. Jika <GenerateResponse> ditetapkan ke false, gunakan variabel kesalahan (yang dijelaskan di bawah) untuk mengambil detail error, seperti nama dan penyebab kesalahan. GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken
steps.oauth.v2.InvalidAccessToken 401 Header otorisasi tidak memiliki kata Bearer, yang diperlukan. Sebagai contoh: Authorization: Bearer your_access_token VerifyAccessToken
steps.oauth.v2.InvalidAPICallAsNo\
ApiProductMatchFound
401

Operasi atau proxy API yang sedang dijalankan tidak ada dalam Produk yang terkait dengan token akses.

Tips: Pastikan produk yang terkait dengan token akses dikonfigurasi dengan benar. Misalnya, jika Anda menggunakan karakter pengganti di jalur resource, pastikan karakter pengganti tersebut digunakan dengan benar. Lihat Mengelola produk API untuk detailnya.

Lihat juga Verifikasi Token Akses Oauth2.0 menampilkan error "Invalid API call as no apiproduct match found" untuk mendapatkan panduan selengkapnya tentang penyebab error ini.

VerifyAccessToken
steps.oauth.v2.InvalidClientIdentifier 500

Nama error ini ditampilkan jika properti <GenerateResponse> kebijakan disetel ke false dan client ID yang dikirim dalam permintaan tidak valid. Pastikan Anda menggunakan nilai kunci dan rahasia klien yang benar untuk Aplikasi Developer yang terkait dengan proxy Anda. Biasanya, nilai ini dikirim sebagai header Otorisasi Dasar berenkode Base64.

GenerateAccessToken
RefreshAccessToken

steps.oauth.v2.InvalidParameter 500 Kebijakan ini harus menentukan token akses atau kode otorisasi, tetapi tidak keduanya. GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
steps.oauth.v2.InvalidTokenType 500 Elemen <Tokens>/<Token> mengharuskan Anda menentukan jenis token (misalnya refreshtoken). Jika klien meneruskan jenis yang salah, error ini akan ditampilkan. ValidateToken
InvalidateToken
steps.oauth.v2.MissingParameter 500 Jenis responsnya adalah token, tetapi tidak ada jenis pemberian yang ditentukan. GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
steps.oauth.v2.UnSupportedGrantType 500

Klien menentukan jenis pemberian yang tidak didukung oleh kebijakan (tidak tercantum dalam elemen <SupportedGrantTypes>).

GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken

Error runtime khusus token JWT

Kode dan deskripsi error runtime untuk alur token autentikasi JWT bergantung pada konteks alur OAuth2:

Kode error untuk pembuatan token JWT dan alur refresh

Untuk alur OAuth2 yang menghasilkan atau memuat ulang token JWT, respons error akan mematuhi respons error yang ditentukan dalam RFC6749. Untuk mengetahui detailnya, lihat Respons Error Bagian 5.2.

Kode error untuk alur verifikasi token

Kode error yang tercantum dalam tabel berikut hanya berlaku untuk operasi VerifyAccessToken.

Kode kesalahan Status HTTP Penyebab Dilempar oleh operasi
oauth.v2.JWTSigningFailed 401 Kebijakan tidak dapat menandatangani JWT.

GenerateJWTAccessToken

oauth.v2.InvalidValueForJWTAlgorithm 401 Hal ini terjadi ketika algoritma tidak ada dalam token akses JWT atau ketika nilainya tidak didukung.

GenerateJWTAccessToken
VerifyJWTAccessToken

oauth.v2.InsufficientKeyLength 401 Dalam Pembuatan JWT, untuk kunci yang kurang dari ukuran minimum untuk algoritma HS384 atau HS512

GenerateJWTAccessToken
VerifyJWTAccessToken

oauth.v2.JWTAlgorithmMismatch 401 Algoritme yang ditentukan dalam kebijakan Buat tidak cocok dengan yang diharapkan dalam kebijakan Verifikasi. Algoritma yang ditentukan harus cocok.

VerifyJWTAccessToken

oauth.v2.JWTDecodingFailed 401 Kebijakan tidak dapat mendekode JWT. JWT mungkin rusak.

VerifyJWTAccessToken

oauth.v2.MissingMandatoryClaimsInJWT 401 Terjadi saat klaim yang diperlukan tidak ada dalam token Jwt Access

VerifyJWTAccessToken

oauth.v2.InvalidJWTSignature 401 Hal ini terjadi ketika tanda tangan token akses JWT tidak dapat diverifikasi atau jika tanda tangan tidak valid.

VerifyJWTAccessToken

oauth.v2.InvalidTypeInJWTHeader 401 Terjadi saat jenis JWT bukan at+Jwt

VerifyJWTAccessToken

Error saat deployment

Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.

Nama error Penyebab
InvalidValueForExpiresIn

Untuk elemen <ExpiresIn>, nilai yang valid adalah bilangan bulat positif dan -1.

InvalidValueForRefreshTokenExpiresIn Untuk elemen <RefreshTokenExpiresIn>, nilai yang valid adalah bilangan bulat positif dan -1.
InvalidGrantType Jenis pemberian yang tidak valid ditentukan dalam elemen <SupportedGrantTypes>. Lihat referensi kebijakan untuk mengetahui daftar jenis yang valid.
ExpiresInNotApplicableForOperation Pastikan operasi yang ditentukan dalam elemen <Operations> mendukung akhir masa berlaku. Misalnya, operasi VerifyToken tidak demikian.
RefreshTokenExpiresInNotApplicableForOperation Pastikan operasi yang ditentukan dalam elemen <Operations> mendukung akhir masa berlaku token refresh. Misalnya, operasi VerifyToken tidak demikian.
GrantTypesNotApplicableForOperation Pastikan jenis pemberian yang ditentukan dalam <SupportedGrantTypes> didukung untuk operasi yang ditentukan.
OperationRequired

Anda harus menentukan operasi dalam kebijakan ini menggunakan elemen <Operation>.

InvalidOperation

Anda harus menentukan operasi yang valid dalam kebijakan ini menggunakan elemen <Operation>.

TokenValueRequired Anda harus menentukan nilai token <Token> dalam elemen <Tokens>.

Error deployment khusus token JWT

Error deployment ini khusus untuk kebijakan yang menggunakan operasi token JWT.

Nama error Penyebab
InvalidValueForAlgorithm Algoritme yang ditentukan dalam elemen <Algorithm> tidak termasuk dalam daftar algoritma yang tersedia atau tidak ada.
MissingKeyConfiguration Elemen <SecretKey>, <PrivateKey>, atau <PublicKey> yang diperlukan tidak ada, bergantung pada algoritme yang digunakan.
EmptyValueElementForKeyConfiguration Elemen turunan <Value> yang diperlukan tidak ditentukan dalam elemen <PrivateKey>, <PublicKey>, atau <SecretKey>
InvalidKeyConfiguration Elemen <PrivateKey> tidak digunakan dengan algoritme keluarga RSA atau elemen <SecretKey> tidak digunakan dengan algoritma Keluarga HS.
EmptyRefAttributeForKeyconfiguration Atribut ref elemen turunan <Value> dari elemen <PrivateKey>, <PublicKey>, atau <SecretKey> kosong.
InvalidVariableNameForKey Nama variabel flow yang ditentukan dalam atribut ref elemen turunan <Value> dari elemen <PrivateKey>, <PublicKey>, atau <SecretKey> tidak berisi awalan private.

Variabel kesalahan

Variabel ini ditetapkan saat kebijakan ini memicu error saat runtime.

Variabel Dari mana Contoh
fault.name="fault_name" fault_name adalah nama kesalahan, seperti yang tercantum dalam tabel Error runtime di atas. Nama kesalahan adalah bagian terakhir dari kode kesalahan. fault.name = "invalid_request"
oauthV2.policy_name.failed policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan kesalahan. oauthV2.GenerateAccesstoken.failed = true
oauthV2.policy_name.fault.name policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan kesalahan. oauthV2.GenerateAccesstoken.fault.name = invalid_request
oauthV2.policy_name.fault.cause policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan kesalahan. oauthV2.GenerateAccesstoken.cause = Required param : grant_type

Contoh respons error

Respons ini akan dikirim kembali ke klien jika elemen <GenerateResponse> bernilai true.

Jika <GenerateResponse> bernilai true, kebijakan akan menampilkan error dalam format ini untuk operasi yang menghasilkan token dan kode. Untuk mengetahui daftar lengkapnya, lihat Referensi respons error HTTP OAuth.

{"ErrorCode" : "invalid_client", "Error" :"ClientId is Invalid"}

Jika <GenerateResponse> bernilai true, kebijakan akan menampilkan error dalam format ini untuk operasi verifikasi dan validasi. Untuk mengetahui daftar lengkapnya, lihat Referensi respons error HTTP OAuth.

{  
   {  
      "fault":{  
         "faultstring":"Invalid Access Token",
         "detail":{  
            "errorcode":"keymanagement.service.invalid_access_token"
         }
      }
   }

Contoh aturan kesalahan

<FaultRule name=OAuthV2 Faults">
    <Step>
        <Name>AM-InvalidClientResponse</Name>
        <Condition>(fault.name = "invalid_client") OR (fault.name = "InvalidClientIdentifier")</Condition>
    </Step>
    <Step>
        <Name>AM-InvalidTokenResponse</Name>
        <Condition>(fault.name = "invalid_access_token")</Condition>
    </Step>
    <Condition>(oauthV2.failed = true) </Condition>
</FaultRule>

Token dalam Penyimpanan Di-Hash

Jika Anda menggunakan Apigee Hybrid atau Apigee, token akses OAuthV2 dan token refresh akan di-hash secara default saat disimpan di database Cassandra runtime. Hashing mencegah penggunaan token jika database disusupi.

Menggunakan konfigurasi OAuth default

Setiap organisasi (bahkan organisasi uji coba gratis) di Apigee disediakan dengan endpoint token OAuth. Endpoint telah dikonfigurasi sebelumnya dengan kebijakan dalam proxy API yang disebut oauth. Anda dapat mulai menggunakan endpoint token segera setelah membuat akun di Apigee. Untuk mengetahui detailnya, lihat Memahami endpoint OAuth.

Menghapus token akses

Secara default, token OAuth2 dihapus permanen dari sistem Apigee 3 hari (259.200 detik) setelah token akses dan token refresh (jika ada) tidak berlaku lagi.

Perilaku yang tidak sesuai dengan RFC

Secara default, kebijakan OAuthV2, dengan operasi GenerateAccessToken, menampilkan respons token yang berisi properti tertentu yang tidak sesuai dengan RFC. Tabel berikut menunjukkan properti yang tidak mematuhi kebijakan dan ditampilkan oleh kebijakan OAuthV2 dan properti yang mematuhi kebijakan.

OAuthV2 menampilkan: Properti yang sesuai dengan RFC adalah:
"token_type":"BearerToken" "token_type":"Bearer"
"expires_in":"3600" "expires_in":3600

(Nilai yang sesuai adalah angka, bukan string.)

Selain itu, respons error untuk token refresh yang sudah tidak berlaku lagi saat grant_type = refresh_token:

{"ErrorCode" : "invalid_request", "Error" :"Refresh Token expired"}

Namun, respons yang sesuai dengan RFC adalah:

{"error" : "invalid_grant", "error_description" :"refresh token expired"}

Topik terkait