Kebijakan BasicAuthentication

Halaman ini berlaku untuk Apigee dan Apigee hybrid.

Lihat Dokumentasi Apigee Edge.

ikon kebijakan

Apa

Memungkinkan Anda menggunakan Autentikasi Dasar ringan untuk keamanan kilometer terakhir. Kebijakan ini mengambil nama pengguna dan {i>password<i}, Base64 mengenkodenya, dan menulis nilai yang dihasilkan ke suatu variabel. Nilai yang dihasilkan akan dalam bentuk Basic Base64EncodedString. Anda biasanya menulis nilai ini ke header HTTP, seperti header Authorization.

Kebijakan ini juga memungkinkan Anda mendekode kredensial yang disimpan dalam string berenkode Base64 ke nama pengguna dan sandi.

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

Video: Video ini menunjukkan cara mengenkode nama pengguna dan melakukan enkode base64 {i>password<i} menggunakan kebijakan Autentikasi Dasar.

Video: Video ini menunjukkan cara mendekode nama pengguna berenkode base64 dan {i>password<i} menggunakan kebijakan Autentikasi Dasar.

Sampel

Encoding keluar

<BasicAuthentication name="ApplyBasicAuthHeader">
   <DisplayName>ApplyBasicAuthHeader</DisplayName>
   <Operation>Encode</Operation>
   <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
   <User ref="BasicAuth.credentials.username" />
   <Password ref="BasicAuth.credentials.password" />
   <AssignTo createNew="false">request.header.Authorization</AssignTo>
</BasicAuthentication>

Dalam contoh konfigurasi kebijakan di atas, nama pengguna dan sandi yang akan dienkode adalah berasal dari variabel yang ditentukan oleh atribut ref pada Elemen <User> dan <Password>. Variabel harus yang disetel sebelum kebijakan ini dijalankan. Biasanya, variabel diisi oleh nilai yang membaca dari peta kunci/nilai. Lihat Peta Nilai Kunci Kebijakan operasi.

Konfigurasi ini menghasilkan header HTTP bernama Authorization, seperti yang ditentukan oleh &lt;AssignTo&gt;, ditambahkan ke pesan permintaan keluar yang dikirim ke server backend:

Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk

Nilai <User> dan <Password> digabungkan dengan tanda titik dua sebelum encoding Base64.

Pertimbangkan bahwa Anda memiliki peta kunci/nilai dengan entri berikut:

{
  "encrypted" : true,
  "entry" : [ {
    "name" : "username",
    "value" : "MyUsername
  }, {
    "name" : "password",
    "value" : "MyPassword
  } ],
  "name" : "BasicAuthCredentials"
}
      

Lampirkan kebijakan KeyValueMapOperations berikut sebelum kebijakan BasicAuthentication agar dapat mengekstrak nilai untuk <User> dan <Password> elemen dari penyimpanan kunci/nilai dan mengisinya ke variabel credentials.username dan credentials.password.

<KeyValueMapOperations name="getCredentials" mapIdentifier="BasicAuthCredentials">
  <Scope>apiproxy</Scope>
  <Get assignTo="credentials.username" index='1'>
    <Key>
      <Parameter>username</Parameter>
    </Key>
  </Get>
  <Get assignTo="credentials.password" index='1'>
    <Key>
      <Parameter>password</Parameter>
    </Key>
  </Get>
</KeyValueMapOperations>
      

Dekode masuk

<BasicAuthentication name="DecodeBaseAuthHeaders">
   <DisplayName>Decode Basic Authentication Header</DisplayName>
   <Operation>Decode</Operation>
   <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
   <User ref="request.header.username" />
   <Password ref="request.header.password" />
   <Source>request.header.Authorization</Source>
</BasicAuthentication>

Dalam contoh kebijakan ini, kebijakan mendekode nama pengguna dan sandi dari Header HTTP Authorization, seperti yang ditentukan oleh elemen &lt;Source&gt;. Base64 string yang dienkode harus dalam bentuk Basic Base64EncodedString.

Kebijakan tersebut menulis nama pengguna yang didekode ke variabel request.header.username dan sandi yang telah didekode ke variabel request.header.password.


Tentang kebijakan Autentikasi Dasar

Kebijakan ini memiliki dua mode operasi:

  • Encode: Base64 mengenkode nama pengguna dan sandi yang disimpan di variabel
  • Dekode: Mendekode nama pengguna dan sandi dari String berenkode base64

Nama pengguna dan {i>password<i} biasanya disimpan di penyimpanan kunci/nilai dan kemudian dibaca dari penyimpanan kunci/nilai saat runtime. Untuk mengetahui detail tentang penggunaan penyimpanan kunci/nilai, lihat Operasi Peta Nilai Kunci kebijakan kami.

Referensi elemen

Referensi elemen menjelaskan elemen dan atribut BasicAuthentication lebih lanjut.

<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">
   <DisplayName>Basic Authentication 1</DisplayName>
   <Operation>Encode</Operation>
   <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
   <User ref="request.queryparam.username" />
   <Password ref="request.queryparam.password" />
   <AssignTo createNew="false">request.header.Authorization</AssignTo>
   <Source>request.header.Authorization</Source> 
</BasicAuthentication>

&lt;BasicAuthentication&gt; atribut

<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">

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

&lt;Operation&gt; elemen

Menentukan apakah kebijakan Base64 mengenkode atau mendekode kredensial.

<Operation>Encode</Operation>
Default: T/A
Kehadiran: Wajib
Jenis:

String.

Nilai yang valid mencakup:

  • Mengenkode
  • Dekode

&lt;IgnoreUnresolvedVariables&gt; elemen

Jika disetel ke true, kebijakan tidak akan menampilkan error jika variabel tidak dapat ditampilkan diselesaikan. Jika digunakan dalam konteks kebijakan BasicAuthentication, setelan ini biasanya ditetapkan ke false, karena biasanya menampilkan error jika nama pengguna atau password tidak dapat ditemukan dalam variabel yang ditentukan.

<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
Default: benar
Kehadiran: Opsional
Jenis:

Boolean

&lt;User&gt; elemen

  • Untuk encoding, gunakan elemen <User> untuk menentukan variabel yang berisi nama pengguna. Nilai nama pengguna dan {i>password<i} disambungkan dengan titik dua sebelum Encoding base64.
  • Untuk decoding, tentukan variabel tempat nama pengguna yang didekode ditulis.
<User ref="request.queryparam.username" /> 
Default: T/A
Kehadiran: Wajib
Jenis:

T/A

Atribut

Atribut Deskripsi Default Kehadiran
referensi

Variabel yang digunakan kebijakan secara dinamis membaca nama pengguna (enkode) atau menulis nama pengguna (dekode).

T/A Wajib

&lt;Password&gt; elemen

  • Untuk encoding, gunakan elemen <Password> untuk menentukan variabel yang berisi kata sandi.
  • Untuk decoding, tentukan variabel tempat sandi yang didekode ditulis.
<Password ref="request.queryparam.password" />
Default: T/A
Kehadiran: Wajib
Jenis:

T/A

Atribut

Atribut Deskripsi Default Kehadiran
referensi

Variabel yang digunakan kebijakan secara dinamis membaca sandi (mengenkode) atau menulis sandi (dekode).

T/A Wajib

&lt;AssignTo&gt; elemen

Menentukan variabel target yang akan ditetapkan dengan nilai yang dienkode atau didekode yang dihasilkan oleh variabel ini lebih lanjut.

Contoh berikut menunjukkan bahwa kebijakan harus menyetel Authorization header pesan ke nilai yang dihasilkan:

<AssignTo createNew="false">request.header.Authorization</AssignTo>
Default: T/A
Kehadiran: Wajib
Jenis:

String

Atribut

Atribut Deskripsi Default Kehadiran
createNew Menentukan apakah kebijakan harus menimpa variabel jika variabel sudah atur.

Jika "false", penetapan ke variabel hanya akan terjadi jika variabel tersebut saat ini tidak disetel (null).

Jika "true", penetapan ke variabel selalu terjadi.

Anda biasanya menetapkan atribut ini ke "false" (default).

salah Opsional

&lt;Source&gt; elemen

Untuk decoding, variabel yang berisi string berenkode Base64, di dari Basic Base64EncodedString. Misalnya, menentukan request.header.Authorization, yang sesuai dengan header Authorization.

<Source>request.header.Authorization</Source>
Default: T/A
Kehadiran: Diperlukan untuk operasi Dekode.
Jenis:

T/A

Variabel flow

Variabel alur berikut ditetapkan saat kebijakan gagal:

  • BasicAuthentication.{policy_name}.failed (dengan nilai true)

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 sedang mengembangkan aturan fault untuk menangani error. 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 Perbaikan
steps.basicauthentication.InvalidBasicAuthenticationSource 500 Pada dekode saat string berenkode Base64 yang masuk tidak berisi nilai yang valid atau format header salah (misalnya, tidak dimulai dengan Basic).
steps.basicauthentication.UnresolvedVariable 500 Variabel sumber yang diperlukan untuk dekode atau enkode tidak ada. Error ini hanya dapat terjadi jika IgnoreUnresolvedVariables bernilai salah (false).

Error saat deployment

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

Nama error Terjadi saat Perbaikan
UserNameRequired Elemen <User> harus ada untuk operasi yang diberi nama.
PasswordRequired Elemen <Password> harus ada untuk operasi yang diberi nama.
AssignToRequired Elemen <AssignTo> harus ada untuk operasi yang diberi nama.
SourceRequired Elemen <Source> harus ada untuk operasi yang diberi nama.

Variabel kesalahan

Variabel ini ditetapkan saat terjadi error runtime. Untuk informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.

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 Matches "UnresolvedVariable"
BasicAuthentication.policy_name.failed policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan kesalahan. BasicAuthentication.BA-Authenticate.failed = true

Contoh respons error

{
   "fault":{
      "detail":{
         "errorcode":"steps.basicauthentication.UnresolvedVariable"
      },
      "faultstring":"Unresolved variable : request.queryparam.password"
   }
}

Contoh aturan kesalahan

<FaultRule name="Basic Authentication Faults">
    <Step>
        <Name>AM-UnresolvedVariable</Name>
        <Condition>(fault.name Matches "UnresolvedVariable") </Condition>
    </Step>
    <Step>
        <Name>AM-AuthFailedResponse</Name>
        <Condition>(fault.name = "InvalidBasicAuthenticationSource")</Condition>
    </Step>
    <Condition>(BasicAuthentication.BA-Authentication.failed = true) </Condition>
</FaultRule>

Skema

Topik terkait

Peta Nilai Kunci Kebijakan operasi