我正在从Kong开始。我成功地用 Oauth2 插件做了一个简单的身份验证系统,但现在我在使用 JWT 时遇到了一些麻烦。
我搜索了很多,但缺乏有关此主题的文档和资源。
我遵循了这里的指南:https://getkong.org/plugins/jwt/
我用他的 JWT 凭据创建了一个消费者:
{
"secret": "6b965bcbf48a4ea7a170bf56557e14c1",
"id": "5587b664-c8b5-4941-95fe-f6e03c319fa4",
"algorithm": "HS256",
"created_at": 1500473323000,
"key": "6fad7730b5134fbb9d74d356d838c9b4",
"consumer_id": "459cc6ab-fd62-4510-80cc-4eb48e5326a3"
}
然后我打开 https://jwt.io/和许多其他工具来生成密钥。无论如何,我输入的数据在这里:
页眉
{
"typ": "JWT",
"alg": "HS256"
}
有效载荷
{
"iss": "6fad7730b5134fbb9d74d356d838c9b4"
}
验证签名
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
6b965bcbf48a4ea7a170bf56557e14c1
)
该工具返回我用作授权标头的密钥:
Authorization: Bearer <token>
不幸的是,来自服务器的响应始终是 401:
{
"error_description": "The access token is invalid or has expired",
"error": "invalid_token"
}
如果我发送损坏的令牌或从错误数据生成的令牌,则会收到不同的错误消息。
我在这里做错了什么?
已解决。
基本上在同一个 API 上做了更多的测试,我应用了两个插件(Oauth2 和 JWT(,然后产生了冲突。
正如我所说,我才刚刚开始,所以对于新手,请注意不要在同一 API 上使用更多的身份验证插件。