springcloud各服务之间的鉴权大家用啥方案

sjfdesolve   (dfljsdklfjsdlkfjsd)2019-01-11 18:17:57
我看这里的方案 https://blog.csdn.net/luwei42768/article/details/79312867
鉴权一次,访问鉴权服务两次,感觉性能比较糟糕啊
guestking   (无)2019-01-11 18:25:42
内部服务互相调用的话,其实可以不用鉴权
【 在 sjfdesolve (dfljsdklfjsdlkfjsd) 的大作中提到: 】
: 我看这里的方案 https://blog.csdn.net/luwei42768/article/details/79312867
sanfei   (巴西太守)2019-01-11 18:36:36
我用的JSON Web Token (JWT)
就是一个叫Authorization的HTTP头
每次要带上这个Authorization头才可以访问
第一步,远程获取AccessToken
get_AccessToken_by_AppKey_and_AppSecret(...)
第二步,本地生成Authorization头
get_AuthorizationHeader_by_AccessToken(...)
第三步,远程执行API
excute_API_with_AuthorizationHeader(...)
// 当然,第一步需要另外一种专用的Authorization头(生成这个头也是在本地进行)
// 第一步和第三步可以视作是同一种操作(第一步是第三步的特例)
// 所以总体上还是有两次鉴权
【 在 sjfdesolve (dfljsdklfjsdlkfjsd) 的大作中提到: 】
: 我看这里的方案 https://blog.csdn.net/luwei42768/article/details/79312867
cybereagle   (2\/3的沉默@XMUCSD)2019-01-11 19:08:49
取 accessToken 不用每次请求都做吧
【 在 sanfei (巴西太守) 的大作中提到: 】
: 我用的JSON Web Token (JWT)
prettyrabbit   (pretty)2019-01-11 19:58:17
规模不是很大的话, 随手撸一个就行了啊...
内存里缓存一下 src->des 的关系
cn62   (cn62)2019-01-11 20:11:42
第一/二步只要做一次就可以了,不过一般token需要有过期机制,过期了就要重新获取了。
JWT的一个好处是token可以自验证。
【 在 cybereagle 的大作中提到: 】
: 取 accessToken 不用每次请求都做吧
sjfdesolve   (dfljsdklfjsdlkfjsd)2019-01-11 23:47:54
不同的用户对不同的服务有不同的权限啊
你权限控制全部做在网关/controller上?
【 在 guestking (无) 的大作中提到: 】
: 内部服务互相调用的话,其实可以不用鉴权
sjfdesolve   (dfljsdklfjsdlkfjsd)2019-01-12 00:02:56
感觉要进行权限检查的话
jwt在服务间鉴权没啥意义啊
权限检查意味着有一个权限检查服务
各服务要调用权限检查服务进行判断
权限检查服务要在 缓存/数据库中查询用户对应权限
那这样的话,直接在缓存里存sessionid/token岂不是更好
【 在 cn62 (cn62) 的大作中提到: 】
: 第一/二步只要做一次就可以了,不过一般token需要有过期机制,过期了就要重新获取
了。
cn62   (cn62)2019-01-12 00:20:27
实际上权限信息也可以放在jwt里,作为payload的一部分。
只是如果权限字串很长的话,显得效率不高。
【 在 sjfdesolve 的大作中提到: 】
: 感觉要进行权限检查的话
fff333   (幺妹)2019-01-12 02:10:50
eureka发现后,内部白名单
Nineteen   (..)2019-01-12 07:46:24
鉴权有无数的不需访问鉴权授权服务的办法,为什么要局限在它的框架里?
【 在 sjfdesolve 的大作中提到: 】
: 我看这里的方案 https://blog.csdn.net/luwei42768/article/details/79312867
sjfdesolve   (dfljsdklfjsdlkfjsd)2019-01-12 11:35:59
分布式/微服务系统中,不访问鉴权授权服务的话
每个服务内部自己整一个鉴权授权模块?
【 在 Nineteen (..) 的大作中提到: 】
: 鉴权有无数的不需访问鉴权授权服务的办法,为什么要局限在它的框架里?
fff333   (幺妹)2019-01-12 11:45:21
底层服务,为了提高效率,一般输入检查都不做的
【 在 sjfdesolve 的大作中提到: 】
: 分布式/微服务系统中,不访问鉴权授权服务的话
--来自微水木3.3.5
whateverwtf   (whateverwtf)2019-01-12 14:41:27
spring不太熟
不过好像微服务有一个注册机制
应该可以在注册的时候控制吧?
Mikov   (Mikov Chain)2019-01-12 18:01:17
内网不用. 外网照着微信API的accessToken抄
一般服务端设置一小时的过期, 客户端稍微做短点比如每半小时主动更换, 这半小时内调
用接口, 服务端都只需要一次鉴权.
【 在 sjfdesolve (dfljsdklfjsdlkfjsd) 的大作中提到: 】
: 我看这里的方案
https://blog.csdn.net/luwei42768/article/details/79312867
sjfdesolve   (dfljsdklfjsdlkfjsd)2019-01-12 19:49:25
比方单体项目中的shiro
会在service的方法上做权限控制
现在微服务化
那么这些方法上的权限控制
就变成了内网服务间调用的权限控制了
【 在 Mikov (Mikov Chain) 的大作中提到: 】
: 内网不用. 外网照着微信API的accessToken抄
iStudy   (爱学习)2019-01-14 14:55:24
1.jwt自验证的意思,是可以解析成明文?
2.token过期了,被调service会知道? 如果主动获取token,那要服务被调用方去检查,那就是每次服务调用都要去检查token是否合法,是否过期吧? 我记得有一个refresh_token,系统会自动refersh,然后每次用refresh_token去调用servcie ,refersh_token到期会自动更新。。不知道我理解得对不对
【 在 cn62 (cn62) 的大作中提到: 】
: 第一/二步只要做一次就可以了,不过一般token需要有过期机制,过期了就要重新获取了。
iStudy   (爱学习)2019-01-14 15:13:17
你说的内部服务互相调用,是指service1 调用service2吗?
前端调后端,鉴权哪个系统做呢?api gateway? 还是后端服务自己和鉴权服务交互?
有没有现成模块和annotaion?
【 在 guestking (无) 的大作中提到: 】
: 内部服务互相调用的话,其实可以不用鉴权
guestking   (无)2019-01-14 17:26:16
jwt默认是base64编码,就是明文
靠签名来防篡改
所以只能用来放可以公开的数据
你自己加密当然也不是不可以
【 在 iStudy (爱学习) 的大作中提到: 】
: 1.jwt自验证的意思,是可以解析成明文?
weizhaokang   (奋斗)2019-01-15 15:53:34
gateway统一做鉴权更合理
【 在 iStudy 的大作中提到: 】:
你说的内部服务互相调用,是指service1 调用service2吗?
前端调后端,鉴权哪个系统做呢?api gatew

水木社区