Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
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.
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.
Contoh
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 <AssignTo>, 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 <Source>. 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>
<BasicAuthentication> atribut
<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">
Tabel berikut menjelaskan atribut yang umum 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 Setel ke |
salah | Opsional |
enabled |
Setel ke Setel ke |
true | Opsional |
async |
Atribut ini tidak digunakan lagi. |
salah | Tidak digunakan lagi |
<DisplayName> elemen
Gunakan selain atribut name
untuk memberi label kebijakan di
editor proxy UI dengan nama natural language yang berbeda.
<DisplayName>Policy Display Name</DisplayName>
Default |
T/A Jika Anda menghapus elemen ini, nilai atribut |
---|---|
Ketersediaan | Opsional |
Jenis | String |
<Operation> elemen
Menentukan apakah kebijakan Base64 mengenkode atau mendekode kredensial.
<Operation>Encode</Operation>
Default: | T/A |
Kehadiran: | Wajib |
Jenis: |
String. Nilai yang valid mencakup:
|
<IgnoreUnresolvedVariables> 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: | true |
Kehadiran: | Opsional |
Jenis: |
Boolean |
<User> 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 | Ketersediaan |
---|---|---|---|
referensi |
Variabel yang digunakan kebijakan secara dinamis membaca nama pengguna (enkode) atau menulis nama pengguna (dekode). |
T/A | Wajib |
<Password> 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 | Ketersediaan |
---|---|---|---|
referensi |
Variabel yang digunakan kebijakan secara dinamis membaca sandi (mengenkode) atau menulis sandi (dekode). |
T/A | Wajib |
<AssignTo> 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 | Ketersediaan |
---|---|---|---|
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 |
<Source> 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 error dan pesan error yang ditampilkan serta variabel error yang ditetapkan oleh Edge 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 kesalahan.
Error runtime
Error ini dapat terjadi saat kebijakan dieksekusi.
Kode kerusakan | Status HTTP | Penyebab | Perbaiki |
---|---|---|---|
steps.basicauthentication.InvalidBasicAuthenticationSource |
500 | Pada dekode saat string yang dienkode Base64 yang masuk tidak berisi nilai yang valid atau header salah format (misalnya, tidak dimulai dengan "Basic"). | build |
steps.basicauthentication.UnresolvedVariable |
500 | Variabel sumber yang diperlukan untuk dekode atau encode tidak ada. Error ini hanya dapat terjadi jika IgnoreUnresolvedVariables salah. |
build |
Error saat 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 yang dinamai. |
build |
PasswordRequired |
Elemen <Password> harus ada untuk operasi yang dinamai. |
build |
AssignToRequired |
Elemen <AssignTo> harus ada untuk operasi yang dinamai. |
build |
SourceRequired |
Elemen <Source> harus ada untuk operasi yang dinamai. |
build |
Variabel error
Variabel ini ditetapkan saat error runtime terjadi. Untuk informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.
Variabel | Di 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 "UnresolvedVariable" |
BasicAuthentication.policy_name.failed |
policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan error. | 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>