结束语 | 把学习当成一种习惯
- 深入了解
- 翻译
- 解释
- 总结
学习OAuth 2.0技术需要养成一种习惯,文章提出了基础学习、分析学习和主题学习三个层次的学习方法。在基础学习阶段,需要了解OAuth 2.0的基本角色和授权许可类型;在分析学习中,要梳理知识结构并解决相关问题;主题学习则要求深入理解特定内容。此外,文章还强调了“输出倒逼输入”对学习的重要性,建议读者通过留言、分享和写作来加强学习效果。作者鼓励读者积极向外传达自己的想法,以获得更多的惊喜。整体而言,文章强调了学习的重要性和方法,为读者提供了系统的学习指导。
《OAuth 2.0 实战课》,新⼈⾸单¥29
全部留言(30)
- 最新
- 精选
- 而立斋马上买了一本《程序员思维修炼》,哈哈
作者回复: 哈哈 一起变得更加优秀
2020-08-0427 - Geek_883762当老师说再见的时候,我哭了。
作者回复: 我被感动到了,我会尽最大努力回复好每一位同学的留言。
2020-08-046 - 在路上感谢老师的精彩讲解,现在每次授权登录时,都想到老师讲些的后台流程。
作者回复: 多谢 ^_^
2020-08-0424 - zeroki“鉴权”是建议在开放平台的网关做呢,还是授权服务做呢?
作者回复: 放在网关来做,读取授权服务的接口或者是直接操作授权服务的数据存储。
2020-08-072 - inrtyx难说再见,谢谢老师
作者回复: 我会一直在的 ^_^
2020-08-042 - 哈德韦老师好,微信PC扫码登录就是一个标准的OAuth 2.0流程,用户扫码后,手机微信弹出确认框。用户确认后,微信重定向到开发者回调网址,带上code,之后开发者网站使用code换取accessToken等。但是也有网站(比如石墨文档),PC扫码登录实际上利用了微信的带参二维码,用户扫码后直接跳转到了其公众号,而微信服务器直接将用户信息发送给石墨服务器,石墨利用这些信息直接将用户登录。请问这种利用带参二维码形式的PC扫码登录,其安全性会比标准的OAuth 2.0差吗?由于微信服务器发送用户信息给开服务器时是加密的,是否可以保证其安全性呢?
作者回复: 我试了下石墨文档,现在也是采用了扫码登陆了,不过你说的这个关注二维码之后再登录,我印象中CSDN这样做过。 这个我们可以开放性讨论下,我看了下微信官方的文档,微信的带参二维码应该属于渠道码,一般用作对引流数据的统计。原理应该就是使用一个EvenkKey,当有人扫描这个二维码后,微信会推送给开发者这个EventKey,然后开发者在可以对此次事件做一些响应动作。 我个人认为如果拿这种方式用作登录的话,其背后还是OAuth机制,上面说的那种关注公众号才能登录,是建立在次基础上的。
2020-08-16 - Tim Zhang老师 不是很理解你回答的刷新逻辑在授权服务。 前提 我的oauth服务是我自己写的,并非第三方服务。 我一个请求首先访问了网关,网关进行了鉴权,然后请求打到了后面api,但是actoken过期了,需要拿着refreshtoken去刷新actoken,难道不是受保护资源自己去调用我的oauth服务拿actoken么?这个逻辑如果每个受保护资源自己做,那是不是每个受保护资源都需要引入这个sdk呢?
作者回复: 刷新逻辑在授权服务,意思是授权服务来接收刷新令牌负责生成新的访问令牌。 既然有了网关这一层,网关在进行鉴权的时候只会去验证令牌,如果令牌过期肯定会拒绝访问,也不会把token继续往下传的。
2020-08-07 - AgCl老师,看到留言,我有点疑惑,我们这边正想用oauth2的实现,如果网关做了验证和粗粒度的授权 但是资源服务器可能有更细粒度的权限管理,如果用的是spring security 的框架,资源服务器获取到用户id, 然后我们自己初始化好securitycontextHolder的内容;这样的话是不是我们直接网关就做转发,资源服务器自己去做token的验证以及权限验证,谢谢老师
作者回复: 如果是网关下面只有一个资源服务系统,这里的网关可能就是为了做非业务相关的比如限流、黑白名单等等,这种情况下可以再资源服务系统来做。但是如果网关下面有很多个资源服务系统,建议还是”切一下“在网关来做。 更细粒度的权限如果也都是跟access_token相关的,在网关去做验证肯定也没有问题,除非是那些其它维度跟令牌无关的权限控制,那么可以下放到资源服务系统来。
2020-08-07 - Tim Zhang请问下假设2个服务 a和b,首先调用a的/a,然后a会调用b的/b,在网关层只能针对/a进行权限校验,/a执行完毕后调用/b,这个时候已经不会访问到网关了,请问权限校验是否只能在/b的应用上通过横切逻辑类似filter进行校验过滤
作者回复: a和b相当于两个微服务了吧,a是用户请求流程上首先被访问到的一个服务,在这之上的权限校验已经被网关做了。当a去访问b的时候,一般情况下没有再涉及到用户的权限校验了。越往下越是基础的服务。但这里有可能会存在系统之间的权限访问,也就是说b是否允许a来调用,一般微服务之间都是需要做这样的系统校验的。 如果
2020-08-06 - Tim Zhang老师,还有疑问,求解答 1、scope与api的映射表,缓存在网关,网关进行鉴权。那么如果粒度很细,一个api(url路径+ http方法)就需要对应一个scope,那么可能有成千上万个api,都需要在表里面定义么 2、网关已经校验过了scope,并且通过,请求调用到了受保护资源的某个api,还需要针对于这个api进行比如 @Precheck(hasRole('admin')) 或者 @Precheck(hasAuthority('xxx')) 的鉴权么,因为据我了解网关可能针对于粗粒度的api 比如/A/** 实际上访问的/A/aa还有更细粒度的比如rbac中的权限鉴定,所以其实不仅网关一层对于scope进行鉴权,访问到某个特定api还需要通过rbac进行鉴权,是这样么 3、如果刷新token,重定向等针对于oauth2的逻辑实现在网关,后续api假设有2个 a和b, 网关首先调用了a,a计算完成还需要调用b,这个时候假设accessToken过期了,但是刷新token逻辑在网关,a调用b不经过网关了,那么这些刷新逻辑是否还需要在b的filter切面层进行拦截处理
作者回复: 1、这个数量参照要按照accesstoken的角度来讲,每一个accesstoken对应一个scope,如果按照上面所述的,就是一对一对多的关系,这些数据都存储在redis中。 2、在网关做了OAuth的鉴权也包括scope的校验,受保护资源不需要在做类似的验证,但是越权访问,也就是之前我们讲到的数据归属判断,是一定要在受保护资源内部逻辑中去做的。 3、刷新token的逻辑在授权服务系统中实现,不在网关层。
2020-08-06