auth2 自定义授权模式

 我们知道,auth2的四种模式分别为:

1.ClientCredentialsTokenGranter--客户端模式

2.AuthorizationCodeTokenGranter-- 授权码模式

3.ResourceOwnerPasswordTokenGranter--密码模式

4.RefreshTokenGranter--刷新模式

(还有一个为授权码的简化模式,这里不贴了)

这些模式的配置在spring 里面是写死的,但是我们需要增加授权模式,比如手机验证吗登录授权怎么办呢?下面一起探讨下,如何实现自定义授权模式。

我们先看一个授权接口类:TokenGranter 



默认的实现类有:


其中有一个的类,CompositeTokenGranter

内置了自定义授权模式的方法入口,但是好像没有找到直接可以调用这个的方法的途径,不过这个类真正被用到的地方在  AuthorizationServerEndpointsConfigurer里面


这个加载默认授权模式的方法如下:


所以,启动的时候,并没有加载授权模式,当接口类的grant 方法被调用的时候,(首次)才回去创建 CompositeTokenGranter 并且加载默认授权模式,而CompositeTokenGranter这个实现类的grant方法和其他不一样,这个里面是循环遍历调用对应的grant—type类型符合的grant方法的实现类。(箭头所指的就是 密码模式下,需要 配置AuthenticationManager bean --->不然无法调用 authenticate方法进行用户校验授权)

讲到这里或许大家有思路了,没有思路也没有关系,下面接着讲!

*****************************************************************分割线*****************************************************************************************

我们知道,实现auth2最基本的两个步骤,

    1.加注解@EnableAuthorizationServer 并且 extends AuthorizationServerConfigurerAdapter

    2.@EnableWebSecurity  并且  extends WebSecurityConfigurerAdapter

话不多说,直接看 AuthorizationServerConfigurerAdapter,

重写public void configure(AuthorizationServerEndpointsConfigurer endpoints) 方法,

贴上我的代码:

第一次配置

第二次尝试,这个是错误的,因为 CompositeTokenGranter  在这个时候还没被赋值,故无法调用到addTokenGranter


终于成功了

备注:不会仿照ResourceOwnerPasswordTokenGranter 的 请留言:

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,887评论 1 32
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 4,798评论 0 4
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 5,078评论 0 2
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 10,968评论 0 9
  • 1 今天出场的大玩家是王敦王大将军。 其实上篇文章里他已经高调现身了。 王大将军这个称呼不是我硬套在他头上,而是他...
    早起去赶海阅读 5,701评论 1 8

友情链接更多精彩内容