作者回复: 不是,资源服务器会对token进行权限校验(也可在微服务网关上集中做),简单讲,资源服务器可以按需增加细粒度权限控制~这个token对应的用户是什么角色,有什么权限,能做什么操作,资源服务器有更多决策权,而且不同资源服务器可有不用策略。当然token是有被盗用风险,有一些安全措施防止被盗,发现被盗可以吊销,另外可根据场景缩短token有效期。
作者回复: 谢谢支持🌹
作者回复: 恩,你看得很细,这个严格不能算按某个维度分的类型,是常见token称谓的解释,谢谢反馈🌹
作者回复: Bearer Token是Access Token的一种格式,这种格式一般是随机字符串无特殊意义,也就是不能从Bearer Token的字面推断出这个Token是谁颁发给谁的,像现钞一样谁拿到了都可以去消费使用;还有一种叫Proof of Possession(PoP) Token,这种Token里头包含所有者信息,可以校验拥有者,别人不能随便用。
作者回复: 这个问题很容易混淆,oauth2的是一种代理授权协议,它只是定义令牌颁发的几种流程,具体你是怎么认证的,它其实没有定义,当然授权之前一般都有认证过程,只是它的规范没有定义。
参考rfc 6749的3.1节(最后一句是重点):
https://tools.ietf.org/html/rfc6749#section-3.1
The authorization endpoint is used to interact with the resource owner and obtain an authorization grant. The authorization server MUST first verify the identity of the resource owner. The way in which the authorization server authenticates the resource owner (e.g., username and password login, session cookies) is beyond the scope of this specification.
进一步可以参考stackoverflow上的说明,解释很清楚:
https://stackoverflow.com/questions/33702826/oauth-authorization-vs-authentication
作者回复: 细粒度权限控制一般都是需要定制的,在微服务场景下,常见做法使用jwt令牌,里头可个包含用户角色和组等信息,这样可以在网关层做初步的权限控制,后台服务层还可以根据用户角色/组等信息做进一步权限控制。后面我会开发一个案例项目,展示如何实现细粒度的微服务权限控制,请关注github.com/spring2go上面的项目。
作者回复: 严格按OAuth2协议规范讲是授权服务器,但是实际不需要太纠结,因为一般授权服务器也支持用户认证。
作者回复: OAuth2主要的模式有四种,其中一种是机器直接参与(没有人参与的),称为客户端模式(Client Credentials Grant) ,你讲的应该属于这种。课程后面有讲解,也可以进一步参考RFC6749,或者阮一峰的文章《理解OAuth2》http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
作者回复: oauth2安全敏感场景下要求使用https
作者回复: 资源服务器可以去授权服务器校验(透明令牌bearer token场景),也可以网关集中校验,也可自校验(自包含令牌jwt token场景)。授权服务器和资源服务器上的校验功能(如filter)一般由一个团队(比如框架)集中开发维护,资源服务器本身一般由各业务团队独立开发。
作者回复: 授权服务器主要管授权,它一般集成有用户登录认证(user identity)模块,用户登录同意授权第三方应用可以访问自己在资源服务器上的资源。