Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Lihat dokumentasi
Apigee Edge.
UnresolvedVariable
Kode error
steps.basicauthentication.UnresolvedVariable
Isi respons error
{
"fault": {
"faultstring": "Unresolved variable : [variable_name]",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Contoh Pesan Error
{
"fault": {
"faultstring": "Unresolved variable : request.header.Authorization",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Penyebab
Error ini terjadi jika variabel yang berisi string yang dienkode Base64 yang ditentukan dalam elemen <Source>
dari kebijakan BasicAuthentication adalah:
- Di luar cakupan (tidak tersedia dalam alur tertentu tempat kebijakan dijalankan)
- Tidak dapat diselesaikan (tidak ditentukan)
Misalnya, error ini terjadi jika kebijakan BasicAuthentication memiliki variabel yang ditentukan sebagairequest.header.Authorization
dalam elemen<Source>
, tetapi header Authorization tidak diteruskan sebagai bagian dari permintaan API.
Diagnosis
Identifikasi variabel yang digunakan untuk elemen
<Source>
dalam kebijakan BasicAuthentication. Anda dapat menemukan informasi ini di elemenfaultstring
respons error. Misalnya, dalamfaultstring,
berikut, variabel yang digunakan untuk elemen<Source>
adalahrequest.header.Authorization
:"faultstring": "Unresolved variable : request.header.Authorization"
Periksa semua kebijakan BasicAuthentication di Proxy API tertentu tempat kegagalan terjadi. Mungkin ada satu atau beberapa kebijakan BasicAuthentication. Identifikasi kebijakan BasicAuthentication tertentu yang variabelnya ditentukan dalam elemen
<Source>
cocok dengan nama variabel yang diidentifikasi dalam string error (langkah #1 di atas).Misalnya, kebijakan berikut menetapkan elemen
<Source>
ke variabel bernamarequest.header.Authorization
, yang cocok dengan yang ada difaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <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>
Tentukan apakah variabel ditentukan dan tersedia dalam alur tempat kebijakan BasicAuthentication dijalankan.
Jika variabel adalah:
- Di luar cakupan (tidak tersedia dalam alur tertentu tempat kebijakan dijalankan)
- Tidak dapat diselesaikan (tidak ditentukan)
Jika demikian, itulah penyebab error.
Dalam contoh kebijakan BasicAuthentication yang ditampilkan di atas, variabel
request.header.Authorization
tidak diteruskan sebagai bagian dari permintaan. Artinya, permintaan API dibuat tanpa header Authorization seperti yang ditunjukkan di bawah:curl -v "http://$EXTERNAL_IP/basicauth"
Dengan
$EXTERNAL_IP
adalah alamat IP load balancer eksternal. Alamat IP ini terekspos ke internet. Untuk informasi selengkapnya, lihat Menyesuaikan pemilihan rute akses.Karena variabel yang digunakan dalam kebijakan BasicAuthentication tidak tersedia, Anda akan menerima kode error:
steps.basicauthentication.UnresolvedVariable
Resolusi
Pastikan variabel yang digunakan dalam kebijakan BasicAuthentication ditentukan atau diteruskan sebagai input dan tersedia dalam alur tempat kebijakan dijalankan.
Untuk memperbaiki masalah pada contoh kebijakan BasicAuthentication yang dibahas di atas, buat permintaan API seperti yang ditunjukkan di bawah:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Dengan $EXTERNAL_IP
adalah alamat IP load balancer eksternal.
Alamat IP ini terekspos ke internet. Untuk informasi selengkapnya, lihat
Menyesuaikan pemilihan rute akses.
InvalidBasicAuthenticationSource
Kode error
steps.basicauthentication.InvalidBasicAuthenticationSource
Isi respons error
{
"fault": {
"faultstring": "Source variable : [variable_name] for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Pesan Error Contoh Error
{
"fault": {
"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Kemungkinan penyebab
Kemungkinan penyebab error ini adalah:
Penyebab | Deskripsi |
---|---|
Variabel sumber tidak valid | Variabel sumber input ke Kebijakan BasicAuthentication bukan string berenkode Base64 yang valid. |
Header Berformat Salah | Header yang berisi string yang dienkode Base64 yang diteruskan ke kebijakan BasicAuthentication salah format. |
Penyebab: Variabel sumber tidak valid
Error ini terjadi jika variabel yang berisi string yang dienkode Base64 yang ditentukan dalam elemen <Source>
dari kebijakan BasicAuthentication tidak berisi nilai yang valid.
Misalnya, error ini terjadi jika variabel yang ditentukan dalam elemen <Source>
kebijakan BasicAuthentication tidak memiliki string yang dienkode Base64 yang valid.
Diagnosis
Identifikasi variabel yang digunakan untuk elemen
<Source>
dalam kebijakan BasicAuthentication. Anda dapat menemukan informasi ini di elemenfaultstring
respons error. Misalnya, dalamfaultstring,
berikut, variabel yang digunakan untuk elemen<Source>
adalahrequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Periksa semua kebijakan BasicAuthentication di Proxy API tertentu tempat kegagalan terjadi. Mungkin ada satu atau beberapa kebijakan BasicAuthentication. Identifikasi kebijakan BasicAuthentication tertentu yang variabelnya ditentukan dalam elemen
<Source>
cocok dengan nama variabel yang diidentifikasi dalam string error (langkah #1 di atas).Misalnya, kebijakan berikut menetapkan elemen
<Source>
ke variabel bernamarequest.header.Authorization
, yang cocok dengan yang ada difaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <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>
Jika nilai yang disimpan dalam variabel yang ditentukan dalam elemen
<Source>
bukan string yang dienkode Base64 yang valid, makahal itulah yang menyebabkan error.
Dalam contoh kebijakan BasicAuthentication yang ditampilkan di atas, variabel
request.header.Authorization
yang dikirim oleh klien sebagai header tidak valid seperti yang ditunjukkan di bawah:curl -v "http://$EXTERNAL_IP /basicauth" -H "Authorization: Basic 23435"
Dengan
$EXTERNAL_IP
adalah alamat IP load balancer eksternal. Alamat IP ini terekspos ke internet. Untuk informasi selengkapnya, lihat Menyesuaikan pemilihan rute akses.Karena variabel
request.header.Authorization
memiliki string berenkode Base64 "23435"
yang tidak valid, Anda akan menerima kode error:steps.basicauthentication.InvalidBasicAuthenticationSource
Resolusi
Pastikan variabel yang ditentukan untuk elemen <Source>
dalam kebijakan BasicAuthentication memiliki string yang dienkode Base64 yang valid.
Untuk memperbaiki masalah pada contoh kebijakan BasicAuthentication yang dibahas di atas, buat permintaan API dengan meneruskan string berenkode Base64 yang valid di header Authorization seperti yang ditunjukkan di bawah:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Dengan $EXTERNAL_IP
adalah alamat IP load balancer eksternal.
Alamat IP ini terekspos ke internet. Untuk informasi selengkapnya, lihat
Menyesuaikan pemilihan rute akses.
Penyebab: Header Berbentuk Tidak Benar/tidak valid
Error ini terjadi jika header yang diteruskan ke kebijakan BasicAuthentication salah format atau tidak valid.
Misalnya, error ini terjadi jika kebijakan BasicAuthentication memiliki variabel yang ditentukan sebagairequest.header.Authorization
dalam elemen<Source>
dan header yang diteruskan sebagai bagian dari permintaan API salah format/tidak valid.
Diagnosis
Identifikasi variabel yang digunakan untuk elemen
<Source>
dalam kebijakan BasicAuthentication. Anda dapat menemukan informasi ini di elemenfaultstring
respons error. Misalnya, dalam error berikut, variabel yang digunakan untuk elemen<Source>
adalahrequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Periksa semua kebijakan BasicAuthentication di Proxy API tertentu tempat kegagalan terjadi. Mungkin ada satu atau beberapa kebijakan BasicAuthentication. Identifikasi kebijakan BasicAuthentication tertentu yang variabelnya ditentukan dalam elemen
<Source>
cocok dengan nama variabel yang diidentifikasi dalam string error (langkah #1 di atas).Misalnya, kebijakan berikut menetapkan elemen
<Source>
ke variabel bernamarequest.header.Authorization
, yang cocok dengan yang ada difaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <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>
Jika variabel adalah header dan salah format atau tidak valid, yaitu tidak memiliki jenis autentikasi atau jika jenis autentikasi bukan "Dasar", maka itulah penyebab error.
Header Otorisasi memiliki format ini:
Authorization: <Authentication type> <credentials>
Header yang salah format dapat diteruskan ke kebijakan BasicAuthentication dengan dua cara:
Contoh 1: Tidak ada jenis Autentikasi di Header:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: YWthc2g6MTIz"
Dengan
$EXTERNAL_IP
adalah alamat IP load balancer eksternal. Alamat IP ini terekspos ke internet. Untuk informasi selengkapnya, lihat Menyesuaikan pemilihan rute akses.Dalam contoh di atas, header Otorisasi tidak memiliki jenis Autentikasi. Jika header ini diteruskan ke kebijakan BasicAuthentication yang ditampilkan di atas, Anda akan menerima kode error:
steps.basicauthentication.InvalidBasicAuthenticationSource
Contoh 2: Jenis autentikasi bukan dari jenis "Dasar":
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
Dengan
$EXTERNAL_IP
adalah alamat IP load balancer eksternal. Alamat IP ini terekspos ke internet. Untuk informasi selengkapnya, lihat Menyesuaikan pemilihan rute akses.Pada contoh di atas, header Otorisasi tidak memiliki jenis Autentikasi "Dasar". Jika ini diteruskan ke kebijakan BasicAuthentication yang ditampilkan di atas, Anda akan menerima kode error:
steps.basicauthentication.InvalidBasicAuthenticationSource
Demikian pula, error ini juga dapat terjadi jika jenis Autentikasi seperti Bearer, Digest Auth, dll. digunakan di header Otorisasi.
Resolusi
Pastikan header tempat input ke kebijakan BasicAuthentication diteruskan memiliki jenis Authentication dan berjenis "Basic".
Untuk memperbaiki masalah pada contoh kebijakan BasicAuthentication yang dibahas di atas, buat permintaan API dengan meneruskan string berenkode Base64 yang valid dengan jenis Autentikasi "Dasar" di header Otorisasi seperti yang ditunjukkan di bawah:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Dengan $EXTERNAL_IP
adalah alamat IP load balancer eksternal.
Alamat IP ini terekspos ke internet. Untuk informasi selengkapnya, lihat
Menyesuaikan pemilihan rute akses.