Anda sedang melihat dokumentasi Apigee Edge.
Lihat dokumentasi Apigee X.

Apa
Memungkinkan Anda menggunakan Autentikasi Dasar ringan untuk keamanan mil terakhir. Kebijakan ini menggunakan nama pengguna dan sandi, Base64 mengenkodenya, dan menulis nilai yang dihasilkan ke variabel. Nilai yang dihasilkan dalam bentuk Basic
Base64EncodedString
. Anda biasanya menuliskan nilai ini ke header HTTP, seperti
header Otorisasi.
Kebijakan ini juga memungkinkan Anda mendekode kredensial yang disimpan dalam string yang dienkode Base64 ke nama pengguna dan sandi.
Video: Video ini menunjukkan cara mengenkode nama pengguna dan sandi menggunakan base64 menggunakan kebijakan Autentikasi Dasar.
Video: Video ini menunjukkan cara mendekode nama pengguna dan sandi berenkode base64 menggunakan kebijakan Autentikasi Dasar.
Sample
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 berasal dari variabel yang ditentukan oleh atribut ref
pada elemen <User>
dan <Password>
. Variabel harus ditetapkan sebelum kebijakan ini dieksekusi. Biasanya, variabel diisi dengan nilai yang dibaca dari peta kunci/nilai. Lihat kebijakan Operasi Peta Nilai Kunci.
Konfigurasi ini menghasilkan header HTTP bernama Authorization, seperti yang ditentukan oleh elemen <TetapkanTo>, yang ditambahkan ke pesan permintaan keluar yang dikirim ke server backend:
Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk
Nilai <User>
dan <Password>
disambungkan dengan titik dua sebelum encoding Base64.
Pertimbangkan untuk 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 elemen <User>
dan
<Password>
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 ditetapkan oleh elemen <Source>. String berenkode Base64 harus dalam format Basic Base64EncodedString.
Kebijakan ini menulis nama pengguna yang didekode ke variabel request.header.username dan sandi yang 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 dalam variabel
- Dekode: Mendekode nama pengguna dan sandi dari string yang dienkode Base64
Nama pengguna dan sandi umumnya disimpan di penyimpanan kunci/nilai, lalu dibaca dari penyimpanan kunci/nilai saat runtime. Untuk mengetahui detail tentang penggunaan penyimpanan kunci/nilai, lihat kebijakan Key Map Operations.
Referensi elemen
Referensi elemen menjelaskan elemen dan atribut kebijakan BasicAuthentication.
<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>
Atribut <BasicAuthentication>
<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 | Ketersediaan |
---|---|---|---|
name |
Nama internal kebijakan. Nilai atribut Secara opsional, gunakan elemen |
T/A | Wajib |
continueOnError |
Tetapkan ke Tetapkan ke |
false | Opsional |
enabled |
Tetapkan ke Tetapkan ke |
benar | Opsional |
async |
Atribut ini tidak digunakan lagi. |
false | Tidak digunakan lagi |
Elemen <DisplayName>
Selain atribut name
, beri label pada kebijakan
di editor proxy UI pengelolaan dengan nama bahasa natural yang berbeda.
<DisplayName>Policy Display Name</DisplayName>
Default |
T/A Jika Anda menghilangkan elemen ini, nilai atribut |
---|---|
Ketersediaan | Opsional |
Type | String |
Elemen <Operation>
Menentukan apakah kebijakan Base64 mengenkode atau mendekode kredensial.
<Operation>Encode</Operation>
Default: | T/A |
Kehadiran: | Wajib diisi |
Jenis: |
String. Nilai yang valid mencakup:
|
Elemen <IgnoreUnresolvedVariables>
Jika disetel ke true
, kebijakan tidak akan menampilkan error jika variabel tidak dapat
diselesaikan. Saat digunakan dalam konteks kebijakan BasicAuthentication, setelan ini biasanya ditetapkan ke false
karena biasanya akan bermanfaat untuk menampilkan error jika nama pengguna atau sandi tidak dapat ditemukan dalam variabel yang ditentukan.
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
Default: | true |
Kehadiran: | Opsional |
Jenis: |
Boolean |
Elemen <User>
- Untuk encoding, gunakan elemen
<User>
untuk menentukan variabel yang berisi nama pengguna. Nilai nama pengguna dan sandi disambungkan dengan titik dua sebelum encoding Base64. - Untuk mendekode, tentukan variabel tempat nama pengguna yang didekode ditulis.
<User ref="request.queryparam.username" />
Default: | T/A |
Kehadiran: | Wajib diisi |
Jenis: |
T/A |
Atribut
Atribut | Deskripsi | Default | Ketersediaan |
---|---|---|---|
Rujukan |
Variabel yang digunakan untuk membaca nama pengguna (enkode) atau menulis nama pengguna (dekode) secara dinamis. |
T/A | Wajib diisi |
Elemen <Password>
- Untuk encoding, gunakan elemen
<Password>
untuk menentukan variabel yang berisi sandi. - Untuk mendekode, tentukan variabel tempat sandi yang didekode ditulis.
<Password ref="request.queryparam.password" />
Default: | T/A |
Kehadiran: | Wajib diisi |
Jenis: |
T/A |
Atribut
Atribut | Deskripsi | Default | Ketersediaan |
---|---|---|---|
Rujukan |
Variabel yang digunakan untuk membaca sandi (encode) atau menulis sandi (mendekode). |
T/A | Wajib diisi |
Elemen <assignTo>
Menentukan variabel target yang akan ditetapkan dengan nilai yang dienkode atau didekode yang dihasilkan oleh kebijakan ini.
Contoh berikut menunjukkan bahwa kebijakan harus menetapkan header Authorization
pesan ke nilai yang dihasilkan:
<AssignTo createNew="false">request.header.Authorization</AssignTo>
Default: | T/A |
Kehadiran: | Wajib diisi |
Jenis: |
String |
Atribut
Atribut | Deskripsi | Default | Ketersediaan |
---|---|---|---|
buatBaru | Menentukan apakah kebijakan harus menimpa variabel jika variabel sudah
ditetapkan.
Jika "false", penetapan ke variabel terjadi hanya jika variabel saat ini tidak ditetapkan (null). Jika "true", penetapan ke variabel selalu terjadi. Anda biasanya menetapkan atribut ini ke "false" (default). |
false | Opsional |
Elemen <Source>
Untuk decoding, variabel yang berisi string yang dienkode Base64, dalam bentuk Basic
Base64EncodedString
. Misalnya,
tentukan request.header.Authorization
, yang sesuai dengan header Otorisasi.
<Source>request.header.Authorization</Source>
Default: | T/A |
Kehadiran: | Diperlukan untuk operasi Dekode. |
Jenis: |
T/A |
Variabel flow
Variabel flow berikut ditetapkan saat kebijakan gagal:
BasicAuthentication.{policy_name}.failed
(dengan nilai true)
Referensi error
Bagian ini menjelaskan kode kesalahan dan pesan error yang dikembalikan, serta variabel kesalahan yang disetel oleh Edge saat kebijakan ini memicu error. Informasi ini penting untuk diketahui jika Anda 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 dijalankan.
Kode kesalahan | Status HTTP | Penyebab | Perbaiki |
---|---|---|---|
steps.basicauthentication.InvalidBasicAuthenticationSource |
500 | Pada dekode jika string berenkode Base64 yang masuk tidak berisi nilai yang valid atau format headernya salah (misalnya, tidak dimulai dengan "Dasar"). | build |
steps.basicauthentication.UnresolvedVariable |
500 | Variabel sumber yang diperlukan untuk dekode atau encoding tidak ada. Error ini hanya dapat terjadi jika IgnoreUnresolvedVariables bernilai salah. |
build |
Error deployment
Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.
Nama error | Terjadi saat | Perbaiki |
---|---|---|
UserNameRequired |
Elemen <User> harus ada untuk operasi bernama. |
build |
PasswordRequired |
Elemen <Password> harus ada untuk operasi bernama. |
build |
AssignToRequired |
Elemen <AssignTo> harus ada untuk operasi bernama. |
build |
SourceRequired |
Elemen <Source> harus ada untuk operasi bernama. |
build |
Variabel kesalahan
Variabel ini ditetapkan saat terjadi error runtime. Untuk informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.
Variabel | Lokasi | Contoh |
---|---|---|
fault.name="fault_name" |
fault_name adalah nama fault, seperti yang tercantum pada tabel Error runtime di atas. Nama fault adalah bagian terakhir dari kode fault. | fault.name Matches "UnresolvedVariable" |
BasicAuthentication.policy_name.failed |
policy_name adalah nama kebijakan yang ditentukan oleh pengguna yang melemparkan 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>