JWT認證組件實現了基於JWT(JSON Web Token)進行認證鑒權的功能。支援從HTTP請求的URL參數、要求標頭或Cookie中解析JWT,並驗證該Token是否有許可權訪問。
功能類型
認證鑒權
欄位說明
ComponentConfig
參數 | 類型 | 是否必填 | 預設值 | 描述 |
Config | 是 | - | JWT認證配置。 |
JwtSpec
參數 | 類型 | 是否必填 | 預設值 | 描述 |
JwkConfig | 是 | - | 配置JWK的方式。 | |
JwtSources | 是 | - | 提取JWT的方式,僅支援單一提取源。 |
JwkConfigSpec
參數 | 類型 | 是否必填 | 預設值 | 描述 |
Type | 否 | - | JWK配置類型。 | |
RemoteJwks | 否 | - | 遠程JWKS配置。 |
JwkConfigType
值 | 描述 |
Remote | 遠程擷取JWK。 |
RemoteJwksSpec
參數 | 類型 | 是否必填 | 預設值 | 描述 |
Url | 否 | - | 遠程JWK地址。 |
URI
完整的FQDN名稱,包含協議、主機名稱和路徑。ALB執行個體將通過所在交換器的IP對該地址發起訪問,需確保目標地址網路可達;如果目標地址位於公網,則ALB所在交換器需配置公網SNAT。
樣本
http://example.com/jwt/pubkeys遠程JWK返回內容按RFC 7518標準實現,傳回值樣本如下:
{
"keys": [
{
"e": "公開金鑰的指數,例如AQAB",
"kid": "Key ID",
"kty": "使用的密碼編譯演算法的家族,例如RSA,必填,大小寫敏感",
"alg": "使用的具體的密碼編譯演算法,例如RS256,必填,大小寫敏感",
"use": "密鑰的用途,例如sig,用於簽名",
"n": "公開金鑰的模值"
},
{
"kty": "oct",
"k": "yMsZ3vkBL4fEwJrNOPW6RztnYpdQ0UlVTum7H1qAehD",
"alg": "HS256"
}
]
}JwtSourcesSpec
參數 | 類型 | 是否必填 | 預設值 | 描述 |
Headers | 否 | - | 從HTTP要求標頭中提取JWT。 | |
Params | String[] | 否 | - | 從URL參數中提取JWT。 |
Cookies | String[] | 否 | - | 從Cookie中提取JWT。 |
JwtHeaderSpec
參數 | 類型 | 是否必填 | 預設值 | 描述 |
Name | String | 是 | Authorization | 要求標頭中的欄位名。 |
ValuePrefix | String | 否 | Bearer | 要求標頭對應值的首碼,在提取Token前會被去除。 |
錯誤碼資訊
HTTP狀態代碼 | 出錯資訊 | 原因說明 |
401 | Jwt is missing | 請求未提供JWT。 |
401 | Jwks remote fetch is failed | 遠程Jwks地址訪問逾時。 |
401 | Jwt verification fails | JWT payload校正失敗。 |
401 | Jwt is expired | 請求提供的Token已逾時。 |
401 | Jwt signature is an invalid Base64url encoded | 請求提供的Token無法base64解碼。 |