一、源码结构:
client 复杂应用客户端的管理
common 公共类
config 配置层
http.converter 转换层
provider 复杂管理认证服务器和资源服务器
1、client包:
典型的类:
(1) OAuth2ClientAuthenticationProcessingFilter :负责对客户端的访问进行过滤,验证token处理等操作。
(2)JdbcClientTokenServices:里面封装对oauth_client_token表的一系列操作(如增删改查),此表保存的是此client的token信息。
(3)OAuth2RestTemplate:实现了OAuthRestOperations接口,主要是用来去调用受保护的资源,会自己带上当前token的信息。
2、common公共包:
这一层主要是对json字符串处理、解析和实例化等操作
(4)converter 层:略
(5)provider层:
最核心的一层,里面包含了endpoint、认证、以及四种授权方式的管理
1、approval包:包含了授权的信息
2、authntication包:这个包说一下OAuth2AuthenticationProcessingFilter类,这个类主要负责当资源服务器接收到请求此类将进行过滤校验等操作
OAuth2AuthenticationManager这个类是重点
(3)client包:这里只讲一个JdbcClientDetailsService一个类,打开此类的源码可以看到它里面声明了很多的sql语句。此类主要是关系着client信息的管理。以jdbc的方式进行读取
(4)code、implicit、password、refresh层这里就不再展开,就是对应着四种授权方式的管理
(5)endpoint层:此层很重要,代码里面定义了基本的接口地址,如/oauth/authorize、/oauth/token、/oauth/confirm_access等等