How to check error when validating jwt token using validate-jwt(以前:How to use a custom built jwt in validate-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 的访问。以前从来没有这样做过。
这是我的入站政策(取自简单令牌验证 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>
使用 this generator 我创建了一个声明(我不确定我是否正确理解发行者和受众):
{
"iss": "MyCompanyNameNotDns",
"iat": 1572360380,
"exp": 2361278784,
"aud": "CustomerNameNotDns",
"sub": "Auth"
}
在 签名 JSON Web 令牌 部分中,我从组合框中选择了 生成 64 位密钥。我将生成的密钥放在 {{jwt-signing-key}}.
的位置
现在,我正在尝试使用 Postman 调用 API。我添加了一个 "Authorization" header,作为我输入的值 "Bearer {{ JWT created by the linked generator }}".
我收到 401,JWT 不存在。我做错了什么?
根据我的研究,如果您使用 HS256 签名算法,则必须以 base64 编码形式在策略中内联提供密钥。换句话说,我们必须将密钥编码为 base64 字符串。更多详情,请参考document
我的测试步骤如下
创建 Jwt 令牌
测试
一种。如果我直接在策略中提供密钥,我会收到 401 错误
b。如果我在策略中将密钥编码为 base64 字符串,我可以调用 api
将密钥编码为策略中的 base64 字符串使我能够做到这一点:-)
我将 Ocp-Apim-Trace 参数设置为 true 以便更仔细地调试它。我按照 ocp-apim-trace-location 下的响应中提供的 link 进行操作,在 "on error" 部分中我发现了以下消息:
JWT Validation Failed: IDX10225: Lifetime validation failed. The token is missing an Expiration Time. Tokentype: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'..
这很有趣,因为我已将过期时间...设置为 2099。
我把它改为一个月后,效果很好。
我尝试使用 validate-jwt
策略使用 JWT 令牌限制对 REST API 的访问。以前从来没有这样做过。
这是我的入站政策(取自简单令牌验证 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>
使用 this generator 我创建了一个声明(我不确定我是否正确理解发行者和受众):
{
"iss": "MyCompanyNameNotDns",
"iat": 1572360380,
"exp": 2361278784,
"aud": "CustomerNameNotDns",
"sub": "Auth"
}
在 签名 JSON Web 令牌 部分中,我从组合框中选择了 生成 64 位密钥。我将生成的密钥放在 {{jwt-signing-key}}.
的位置现在,我正在尝试使用 Postman 调用 API。我添加了一个 "Authorization" header,作为我输入的值 "Bearer {{ JWT created by the linked generator }}".
我收到 401,JWT 不存在。我做错了什么?
根据我的研究,如果您使用 HS256 签名算法,则必须以 base64 编码形式在策略中内联提供密钥。换句话说,我们必须将密钥编码为 base64 字符串。更多详情,请参考document
我的测试步骤如下
创建 Jwt 令牌
测试 一种。如果我直接在策略中提供密钥,我会收到 401 错误
b。如果我在策略中将密钥编码为 base64 字符串,我可以调用 api
我将 Ocp-Apim-Trace 参数设置为 true 以便更仔细地调试它。我按照 ocp-apim-trace-location 下的响应中提供的 link 进行操作,在 "on error" 部分中我发现了以下消息:
JWT Validation Failed: IDX10225: Lifetime validation failed. The token is missing an Expiration Time. Tokentype: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'..
这很有趣,因为我已将过期时间...设置为 2099。
我把它改为一个月后,效果很好。