Kong JWT插件的身份验证步骤详解
最编程
2024-07-28 11:02:06
...
认证过程
- 如果配置中允许OPTIONS请求,并且请求的方法确实是OPTIONS,放行。
- 如果配置中设置了匿名消费者,并且有凭证,放行。这里是为了实现多重认证,通过配置匿名消费者来实现逻辑或的认证,此时必须有其他认证插件,当其他认证插件通过,jwt插件就不再验证,若不设置匿名,则既要jwt验证也要其他认证插件验证。
- 先后从query params,request header中查找token(根据配置的变量),token的格式为
\\s*[Bb]earer\\s+(.+)
,如果从query params找到就返回了,不会再根据request header找。
- 如果没有找到token,或者token格式不对,并且不允许匿名,返回401。
- 如果没有找到token,并且允许匿名,根据配置的匿名的id查询消费者,增加request header:
X-Consumer-ID
、X-Consumer-Username
和X-Anonymous-Consumer=true
,id是自动生成的,username是配置时填写的,设置这个消费者的凭证是nil
,放行。
- 如果找到token,且格式合法,jwt解码这个token,验证token的 claim,消费者,签名验证,过期验证,全部通过后,同匿名一样,增加步骤5中的request header,并且清除
X-Anonymous-Consumer
这个header。
\\s*[Bb]earer\\s+(.+)
,如果从query params找到就返回了,不会再根据request header找。X-Consumer-ID
、X-Consumer-Username
和X-Anonymous-Consumer=true
,id是自动生成的,username是配置时填写的,设置这个消费者的凭证是nil
,放行。X-Anonymous-Consumer
这个header。认证失败说明
response status全部为401,response body只需要区分过期和强制失效,来实现业务处理,其他情况归为未知异常处理。
http status
401
http response body
1. jwt没有包含必要的声明(字段名称被修改了)
-
缺少user_name
Invalid user_name in claims
-
缺少jti
Invalid jti in claims
2.jwt签名无效(数据被篡改了)
{
"message": "Bad token; invalid signature"
}
3.jwt已过期
{
"exp": "token expired"
}
4.被强制失效
{"msg":"账号已在别处登录","state":1001}
上一篇: 使用SpringBoot与JWT结合,轻松实现接口访问权限验证
下一篇: JWT验证原理
推荐阅读
-
实际操作指南:解决Alibaba Java编码规范插件(idea2022)中的Exception问题步骤详解
-
JWT身份验证机制详解:Token的作用与工作原理 - 代码实现探索
-
ASP.NET Core中的身份验证与权限管理:JWT身份验证与授权详解
-
解析身份验证授权的三种方法:会话、令牌与JWT详解
-
详解JWT身份验证的优缺点及常遇问题解决策略
-
详解JSON Web Tokens在处理跨域身份验证的实用方案与步骤
-
ASP.NET Core中JWT令牌身份验证的工作机制与流程详解
-
深入理解SpringCloud中的服务身份验证:JWT详解
-
Kong JWT插件的身份验证步骤详解
-
详解 SpringSecurity 结合 JWT 的身份验证流程操作指南