簡體   English   中英

使用 validate-jwt 驗證 jwt 令牌時如何檢查錯誤(以前:如何在 validate-jwt 中使用自定義構建的 jwt?)

[英]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 字符串。 更多詳細信息,請參閱文檔在此處輸入圖像描述

我的測試步驟如下

  1. 創建 Jwt 令牌在此處輸入圖像描述 在此處輸入圖像描述

  2. 測試一個。 如果我直接在策略中提供密鑰,我會收到 401 錯誤在此處輸入圖像描述

在此處輸入圖像描述

灣。 如果我在策略中將密鑰編碼為 base64 字符串,我可以調用 api 在此處輸入圖像描述 在此處輸入圖像描述

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM