[英]How to check error when validating jwt token using validate-jwt (Previously: How to use a custom built jwt in validate-jwt?)
我嘗試使用validate-jwt
策略使用 JWT 令牌限制對 REST API 的訪問。 以前從來沒有這樣做過。
這是我的入站策略(取自Simple token validation here ):
<validate-jwt header-name="Authorization" require-scheme="Bearer">
<issuer-signing-keys>
<key>{{jwt-signing-key}}</key>
</issuer-signing-keys>
<audiences>
<audience>CustomerNameNotDns</audience>
</audiences>
<issuers>
<issuer>MyCompanyNameNotDns</issuer>
</issuers>
</validate-jwt>
使用這個生成器我創建了一個聲明(我不確定我是否正確理解了發行者和受眾):
{
"iss": "MyCompanyNameNotDns",
"iat": 1572360380,
"exp": 2361278784,
"aud": "CustomerNameNotDns",
"sub": "Auth"
}
在Signed JSON Web Token部分中,我從組合框中選擇了Generate 64-bit key 。 我把生成的密鑰放在{{jwt-signing-key}}的位置。
現在,我正在嘗試使用 Postman 調用 API。 我添加了一個“授權”header,並將“Bearer {{ JWT 創建的鏈接生成器}}”作為值。
我得到 401,JWT 不存在。 我究竟做錯了什么?
根據我的研究,如果您使用 HS256 簽名算法,則必須在 base64 編碼形式的策略中內嵌提供密鑰。 換句話說,我們必須將密鑰編碼為 base64 字符串。 更多詳細信息,請參閱文檔
我的測試步驟如下
Jim Xu 在策略中將密鑰編碼為 base64 字符串的答案讓我能夠做到這一點:-)
我將Ocp-Apim-Trace參數設置為 true 以便更仔細地調試它。 我按照ocp-apim-trace-location下響應中提供的鏈接進行操作,在“出錯”部分中,我發現了以下消息:
JWT Validation Failed: IDX10225: Lifetime validation failed. The token is missing an Expiration Time. Tokentype: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'..
這很有趣,因為我已將 Expiration Time... 設置為 2099。
我從現在開始把它改成一個月,它工作得很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.