spring security5 OAuth授权模式中的客户端

解决我在之前遇见的问题:https://blog.csdn.net/qq_43633220/article/details/108477023


前言

因为找到的资料有限,这些内容都是自己的理解,并不能保证完全正确,发现错误随时改。


客户端在项目中的定位

这是原理解:
我之前一直无法理解客户端的定位主要原因其实是我理解错了资源服务器的定位,我一直以为那些自己写的restful的接口全部都是资源服务器中的资源,但其实不对。

资源服务器中的资源一定是全部受授权服务器保护的,而这些资源通常是像用户信息之类的带强烈私人属性的,就一个论坛而言,论坛中的那些帖子并不属于资源服务器,而当一个用户发帖时需要通过一个客户端访问的用户信息才是资源服务器中资源。

到这客户端的定位就很清楚了,客户端是当一个项目需要去访问另一个一个受授权服务器保护的资源时创建的一个工具。

举一个例子:假设现在两个项目,我想让这两个项目都使用同一个账户,需要做的时将账户信息相关的内容作为资源服务器,当这两个项目需要去访问用户账号的信息时,这时就需要通过客户端去与授权服务器和资源服务器交互去获取这些信息。而如果这两个项目中自身有一些需要保护的资源,是需要在设置一个在客户端中的登录,而这个登录与授权服务器无关,所以那个demo中客户端本身也有一个登录。

更新:
还有一种理解就是客户端全部由前端去实现,客户端实际上就是前端的一部分。
我本以为原理解是正确的,但是按照这个理解去写代码是却出现了很多问题,而且网上很多案例中客户端部分就是前端实现的,按照客户端即前端的理解的话写代码过程中不会出现问题,但是Oauth2授权模式的规范有一条是说关于令牌与客户端和用户对应的映射必须储存在服务器,按前端即客户端的理解这个规范是无法做到的。
等有机会去请教大佬吧

客户端与授权服务器交互的实现

OAuth2AuthorizedClientProvider的工作被描述成对客户端进行授权,但我觉得这个描述很不清楚。
因为它的默认实现DelegatingOAuth2AuthorizedClientProvider的工作是调用一些支持不同授权方式的OAuth2AuthorizedClientProvider的实现对授权请求进行判断,如果授权请求的授权方式不同或客户端未得到授权返回null,例如授权码模式的授权请求会被AuthorizationCodeOAuth2AuthorizedClientProvider认为授权方式相同但未得到授权也会返回null,当所有OAuth2AuthorizedClientProvider都表示客户端没有得到授权时,会抛出一个异常

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值