[英]How to validate JWT signed with RS256 Algorithm with validate-jwt policy in Azure API management
[英]Validating “scp” in Api Management's validate-jwt
我試圖驗證傳入的JWT令牌的作用域為“ labresults.read”和“ user_impersonation”。 我做了以下政策摘要
<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Invalid JWT Token" require-signed-tokens="true">
<openid-config url="(snip)" />
<audiences>
<audience>(snip)</audience>
</audiences>
<required-claims>
<claim name="scp" match="all">
<value>labresults.read</value>
<value>user_impersonation</value>
</claim>
</required-claims>
</validate-jwt>
我傳入的令牌看起來像
{
"iss": "(snip)",
"exp": 1522334650,
"nbf": 1522331050,
"aud": "(snip)",
"sub": "(snip)",
"email": "(snip)",
"name": "Scott Chamberlain",
"scp": "labresults.read user_impersonation",
"azp": "(snip)",
"ver": "1.0",
"iat": 1522331050
}
當我從開發人員門戶網站進行“嘗試”時,查看對錯誤報告的跟蹤
validate-jwt (648 ms){
"message": "JWT Validation Failed: Claim value mismatch: scp=labresults.read.."
}
我是否被迫使用一項
<claim name="scp">
<value>labresults.read user_impersonation</value>
</claim>
我確實不願意,因為我不想強迫此api的使用者將這兩個作用域按唯一的順序傳遞給我。
我需要怎么做才能正確驗證范圍?
在Microsoft的MSDN論壇上得到了答案。
我建議您在策略語句中指定“ separator”屬性,以驗證JWT令牌並查看是否有幫助。 有關更多信息,您可以參考以下文檔: https : //docs.microsoft.com/zh-cn/azure/api-management/api-management-access-restriction-policies#ValidateJWT 。
Swikruti BoseMicrosoft-MSFT(MSFT CSG)
第一次查看文檔時,我完全忽略了分隔符屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.