首页

欢迎访问

spring security oauth2自定义获取token

发布时间:2017-11-07 11:11:04

自定义/oauth/token获取token运行流程

(1)、首先去请求 TokenEndpoint 类的postAccessToken或者getAccessToken方法,就相当于一个普通的concoller请求方法(根据请求类型是get或者post,其实get请求内部也是调用post请求的方法),这个方法会在132行调用TokenGranter类的grant方法来获取token,这个方法也是最重要的,通过这个方法我们可以对请求的参数进行校验是否合法,是否给予令牌。

(2),我们可以继承TokenGranter来实现自定义的身份验证以便获取token,而AbstractTokenGranter是一个继承TokenGranter的实现类,一般我们都会继承这个类进行使用。

从下面代码可以看出,这个抽象类的grant方法最后调用了getOAuth2Authentication方法,所以

我们只需要继承AbstractTokenGranter类然后重写getOAuth2Authentication方法就可以。

而spring security oauth2自带已经实现了5类客户端的授权模式,我们也可以直接继承这些实现类进行getOAuth2Authentication方法重写来实现自定义获取token。

AuthorizationCodeTokenGranter:authorization_code

ResourceOwnerPasswordTokenGranter:password 

ClientCredentialsTokenGranter :client_credentials 

ImplicitTokenGranter:implicit 

RefreshTokenGranter:refresh_token

(3),开始继承AbstractTokenGranter重写getOAuth2Authentication方法,

一般我们会在这里根据传入的自定义参数进行判断,校验参数合法,具体代码参照spring security oauth2实现的五种客户端授权模式类。

(4),一般项目都会自定义好几种授权模式,邮箱验证码、手机验证码等等。

我们实现了自定义的token获取,会进行配置。

我的项目是继承 TokenGranter接口,重写grant方法,用集合把自定义的授权模式类使用集合全部放到这个类中,然后根据授权码的不同使用不同的类进行处理,找不到处理或者超速不合法则返回NULL。

(5),配置文件类,配置oauth2授权服务器方便策略

添加@EnableAuthorizationServer(授权服务器标注)和@Configuration注解,

继承AuthorizationServerConfigurerAdapter类,实现其三个方法,具体怎么写,看代码....会把代码上传。

(6),剩下的添加一些过滤路径之类的注解,网上有许多,可以自行百度。

-------------------

总结,说了那么多,其实就是3,4,5步骤需要自己写,自定义获取token类,整理多个自定义获取token类,配置文件类。

(7),示例代码。

 

 

注:

1、配置oauth2授权服务器方便策略,配置。

AuthorizationServerConfigurer类

2,访问令牌granters接口。规范中定义了各种赠款类型,每个类型都有实现,为需要扩展到规范的空间。/oauth/token接口扩展??

TokenGranter接口,实现下面的方法

OAuth2AccessToken grant(String grantType, TokenRequest tokenRequest);

或者AbstractTokenGranter 抽象类,实现下面的方法,这个抽象方法也继承自TokenGranter接口

OAuth2Authentication getOAuth2Authentication();

3、 oauth2资源服务器方便的标注,使弹簧安全过滤,通过认证的要求,添加一些过滤路径之类的,目前这样理解的..

@EnableResourceServer

一般和接口配合使用 ResourceServerConfigurer

配置器接口类,添加@ enableresourceserver注解。实现此接口来调整访问权限规则,

由oauth2安全保护路径。应用程序可以提供此接口的多个实例,和一般的(如与其他安全configurers),如果有多个配置相同的属性,那么最后配置的生效。

我要评论+
评论列表
  • 2020-05-05 00:53:09   谢庆贺:你好!!
  • 2020-05-05 00:44:16   谢庆贺:你好?
  • 2020-05-05 00:43:31   谢庆贺:命令
  • 2020-05-05 00:41:57   谢庆贺:2019-12-17 17:45:51 :ClientCredentialsTokenGranter 2019-05-27 22:15:28 谢庆贺:微软亚太 2018-03-27 18:54:32 :测试漏洞,竟然真的可以匿名评论,要修复 2018-03-27 18:30:31 :测试漏洞,竟然真的可以匿名评论 2018-03-27 18:30:11 :测试漏洞,竟然真的可以倪敏公论 2018-03-27 18:29:29 :test 2018-03-27 18:28:28 谢庆贺:test 2018-03-27 18:27:07 谢庆贺:111
  • 2019-12-17 17:45:51   :ClientCredentialsTokenGranter
  • 2019-05-27 22:15:28   谢庆贺:微软亚太
  • 2018-03-27 18:54:32   :测试漏洞,竟然真的可以匿名评论,要修复
  • 2018-03-27 18:30:31   :测试漏洞,竟然真的可以匿名评论
  • 2018-03-27 18:30:11   :测试漏洞,竟然真的可以倪敏公论
  • 2018-03-27 18:29:29   :test
  • 2018-03-27 18:28:28   谢庆贺:test
  • 2018-03-27 18:27:07   谢庆贺:111