Anda sedang melihat dokumentasi Apigee dan Apigee Hybrid.
Lihat
dokumentasi Apigee Edge.
FailedToDecode
Kode error
steps.jwt.FailedToDecode
Isi respons error
{
"fault": {
"faultstring": "Failed to Decode Token: policy({0})",
"detail": {
"errorcode": "steps.jwt.FailedToDecode"
}
}
}
Penyebab
Error ini terjadi jika JSON Web Token (JWT) yang ditentukan dalam elemen <Source>
kebijakan JWT Decode memiliki format yang salah, tidak valid, atau tidak dapat didekode.
JWT yang terstruktur dengan benar harus berisi header, payload, dan tanda tangan dalam format berikut: header.payload.signature
. Jika JWT yang diteruskan ke kebijakan DecodeJWT tidak memiliki bagian komponen, Anda akan mendapatkan error. Misalnya, jika JWT hanya memiliki payload.signature
, tetapi tidak memiliki header
, error akan terjadi.
Diagnosis
Identifikasi variabel yang ditentukan dalam elemen
<Source>
dari kebijakan JWT Decode. Variabel ini harus berisi JWT.Berikut adalah contoh kebijakan Decode JWT:
<DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>request.header.authorization</Source> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </DecodeJWT>
Pada contoh di atas, JWT harus ditempatkan di header permintaan Otorisasi.
Periksa variabel yang diidentifikasi di Langkah 1 dan periksa apakah JWT yang ada di dalamnya valid. Jika JWT input tidak valid, itulah penyebab error.
Pada contoh permintaan API di bawah, JWT input diteruskan di header permintaan Otorisasi:
curl -v "http://$EXTERNAL_IP/v1/decodeJWT" -H "Authorization: Bearer eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"
Dengan
$EXTERNAL_IP
adalah alamat IP load balancer eksternal. Alamat IP ini terekspos ke internet. Untuk informasi selengkapnya, lihat Mengonfigurasi pemilihan rute.Pemeriksaan dekat pada JWT menunjukkan bahwa JWT memiliki format
payload.signature
yang tidak valid. Format JWT yang diharapkan adalahheader.payload.signature
. Akibatnya, kebijakan Decode JWT gagal dengan error :"faultstring": "Failed to Decode Token: policy({0})"
Resolusi
Pastikan JWT yang diteruskan ke kebijakan JWT Decode berisi ketiga elemen, diformat dengan benar, dan dapat didekode.
Untuk memperbaiki contoh yang ditampilkan di atas, Anda dapat meneruskan JWT yang valid dengan format header.payload.signature
. Hal ini dapat dilakukan dengan melakukan panggilan API menggunakan perintah cURL sebagai berikut:
curl -v "http://$EXTERNAL_IP/v1/decodeJWT" -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"
Dengan $EXTERNAL_IP
adalah alamat IP load balancer eksternal.
Alamat IP ini terekspos ke internet. Untuk informasi selengkapnya, lihat
Mengonfigurasi pemilihan rute.
InvalidToken
Kode error
steps.jwt.InvalidToken
Isi respons error
{
"fault": {
"faultstring": "Invalid token: policy({0})",
"detail": {
"errorcode": "steps.jwt.InvalidToken"
}
}
}
Penyebab
Error ini terjadi jika variabel flow yang ditentukan dalam elemen <Source>
dari kebijakan JWT Decode adalah:
- di luar cakupan (tidak tersedia di alur tertentu tempat kebijakan dijalankan) atau
- tidak dapat diselesaikan (tidak ditentukan)
Diagnosis
Identifikasi variabel yang ditentukan dalam elemen
<Source>
dari kebijakan JWT Decode. Variabel ini harus berisi JWT.Berikut adalah contoh kebijakan Decode JWT:
<DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>request.header.authorization</Source> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </DecodeJWT>
Pada contoh di atas, header permintaan Otorisasi harus berisi JWT.
Tentukan apakah variabel yang diidentifikasi pada Langkah 1 telah didefinisikan dan tersedia dalam alur tempat kebijakan Decode JWT dijalankan.
Jika variabelnya:
- di luar cakupan (tidak tersedia di alur tertentu tempat kebijakan dijalankan) atau
- tidak dapat diselesaikan (tidak ditentukan)
maka itulah penyebab {i>error<i}.
Pada contoh permintaan API di bawah ini, JWT tidak diteruskan dalam header permintaan otorisasi oleh pengguna.
curl -v "http://$EXTERNAL_IP/v1/decodeJWT"
Dengan $EXTERNAL_IP
adalah alamat IP load balancer eksternal.
Alamat IP ini terekspos ke internet. Untuk informasi selengkapnya, lihat
Mengonfigurasi pemilihan rute.
Because the authorization request header is not passed, the Decode JWT policy fails with the error:
```
"faultstring": "Invalid token: policy({0})"
```
Resolusi
Pastikan variabel yang dirujuk dalam elemen <Source>
dari kebijakan JWT Decode ditentukan, berisi JWT yang valid (dapat di-decode), dan tersedia di flow tertentu tempat kebijakan Decode JWT dijalankan.
Untuk memperbaiki contoh yang ditampilkan di atas, Anda bisa meneruskan JWT yang valid di header otorisasi permintaan. Hal ini dapat dilakukan dengan melakukan panggilan API menggunakan perintah cURL sebagai berikut:
curl -v "http://$EXTERNAL_IP/v1/decodeJWT" -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"
Dengan $EXTERNAL_IP
adalah alamat IP load balancer eksternal.
Alamat IP ini terekspos ke internet. Untuk informasi selengkapnya, lihat
Mengonfigurasi pemilihan rute.