- 参考
- 项目方案
JWT概念:
JWT认证解决问题、原理、数据结构、特点
JWT认证与常见认证方式概念:1、2章节部分
自定义JWT生成以及解码工具
SpringSecurity配置JWT校验过滤器:3章节部分:过滤器链与完成认证后放入response
SpringSecurity配置用户完成身份认证后返回JWT:完成认证后在response中放入token信息传给前端
实际项目:
SSO与JWT结合
JWT阿里文档
项目方案需求:内部服务需要开放一个外部接口供业务方调用,因此涉及到业务方身份认证、权限识别问题。
认证方案:采用token认证,使用JWT
登陆对象:
1,一期对方以app的身份登陆的,参考salesforce app认证的方式设计认证流程。
2,后期会考虑以用户身份登陆。
app认证具体方案:由业务方完成认证token的生成并携带着获取accessToken
一、
内部tcc(动态配置微服务)建立配置{appid、appName、appSecret(发给用户、用于生成JWT的私钥}
私钥生成方式:生成随机字符串的方式。
将信息告知业务方
服务端另准备一个自己的私钥,同样用JWT方式生成accessToken
二、
业务方获取与刷新accessToken的步骤
1,使用私钥生成JWT
参考SpringBoot生成JWT
2,服务端提供getAccessToken接口,业务方携带appID与JWT访问
getAccessToken做的事情:1,查询tcc,获取私钥;2,使用私钥解析JWT并对比tcc配置完成JWT校验。3,获取JWT中的过期时间字段,生成accessToken,并将该token存放在redis中并设置过期时间,key为使用appid进行拼接。4,返回给业务方accessToken。
3,服务端提供refresAccessToken接口,用于接受业务方传入的旧的即将过期的token,完成token时间的刷新。这里入参要求业务方用私钥生成一次JWT。
三、
accessToken认证过程:
1,访问任何接口在request的header中必须有accessToken
2,解析accessToken,获取其中的appID,拼接redis的key
3,与redis存储内容进行对比,要求一致
app认证方案2:业务方不生成认证token,走认证的方式
参考:非对称加密保证登陆安全
为了避免明文传输密码,需要采用非对称加密,提供业务方公钥来加密appid与appsecret,我方获取后解密并与tcc对比,一致即完成认证,下发accessToken。
一个业务方访问实现的demo



