作者回复: 不是,资源服务器会对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
作者回复: 资源服务器可以去授权服务器校验(透明令牌bearer token场景),也可以网关集中校验,也可自校验(自包含令牌jwt token场景)。授权服务器和资源服务器上的校验功能(如filter)一般由一个团队(比如框架)集中开发维护,资源服务器本身一般由各业务团队独立开发。
作者回复: OAuth2只是一个授权协议,它没有规范认证部分,通过OAuth2获取的令牌是bearer token,只表示获得授权可以访问资源,但是这个token是透明的,不带用户身份相关信息。OIDC是OAuth2的扩展,支持认证部分。id token表示资源所有者已经经过认证,id token是自包含的自校验的,它里头有claims,可以包含用户身份identity相关信息。
作者回复: 具体要看应用场景和微信的开发者文档,可以参考 https://open.weixin.qq.com/ 的资源中心,我简单看了一下,网站应用,还有移动应用的微信登陆功能等,都是直接支持oauth2的。其它应用场景,可能采用的是oauth2的一种变体,或者微信定制的认证授权协议。
作者回复: 这个从配置看,不是oauth2协议,而是微信定制的一种安全认证协议。
作者回复: 对,oauth2主要是一个授权协议,它没有规范认证部分。一般oauth2服务器实现可以把认证和授权都集成在一起。 例如可以参考fusionauth这个免费(但不开源)产品,它主要是一个身份(identity server)服务,同时集成了oauth。https://fusionauth.io/