spring-security家族各包简要说明
因为最近发现spring-security相关包较多,便对spring-security进行整理了一下。
spring security
认证的基础底层,本质是过滤器链,oauth2等都是在security基础上扩展的。此模块不展开说明。感兴趣的可以看我论坛另一篇源码分析帖子。
官网文档地址:Spring Security :: Spring Security
spring-security-oauth2
spring提供的基于oauth2
协议开发的。底层为spring-security。包含隐式,资源拥有者(密码模式),客户端凭据,授权码模式的功能
并且提供resourceServer
等功能。
resourceServer
主要为token校验,其余的功能为通过注解配置得接口权限功能。
代码主要是提供各个功能的endpoint,并且可以通过自定义controller去替换这些endpoint.
现官网以及git仓库已移除相关文档和代码
已于2022年五月停止维护。
spring-cloud-security
基于spring-security-oauth2
添加自动配置,提供@EnableOAuth2Sso
实现了ssoClient
功能。最新版本2.2.5-RELEASE
ssoClient
为登录客户端功能。功能与下面说的oauth2-client
类似。
于2022-03停止维护支持
官网存在文档和案例,sample链接部分出错。
官当文档地址:Spring Cloud Security
spring-security-oauth2-authorization-server
基于oauth2.1
协议开发的全新的认证服务。也是使用的spring security作为底层。
支持客户端凭据,授权码模式以及支持oidc
,但是去除了资源拥有者模式和隐式授权
最低java
版本:java11
官网文档地址:Spring Authorization Server Reference
spring-security-oauth2-client
springSecurity5
开始提供的包,提供对接认证授权中心登陆的功能,包含github
登录等对接功能。
与spring-cloud-security提供的功能一致,多了些默认实现。
主要就是配置clientid
,secret
等客户端信息以及登录页面跳转地址。
提供github
等默认实现是通过配置配置得,配置是特定化的。
如:
spring:
security:
oauth2:
client:
registration:
github:
client-id: replace-with-client-id
client-secret: replace-with-client-secret
scope: read:user,public_repo
ps:本模块没看原代码,仅限于官网文档,
官网地址:OAuth 2.0 Client :: Spring Security
spring-security-oauth2-resource-server
springSecurity5
开始提供的包,提供基于Oauth2
的resource-server功能。
resource-server主要是提供accessToken
的校验功能,包括jwt
或者非暴露性的token,如uuid
。
通过解析jwt
或者远程调用校验端点校验。通过配置来进行控制。
ps:本模块没看原代码,仅限于官网文档。
官网地址:OAuth 2.0 Resource Server :: Spring Security
security-Oauth2 与authorization-server区别
通过运行官方案例以及阅读源码和文档总结
-
authorization-server
比spring-security-oauth2
多了oidc
支持,但是少了资源拥有者授权模式 -
实现上除了都是基于spring security,其余差别巨大。
security-oauth2
客户端校验通过filter实现,其余通过endpoint。authorization-server
通过大量的filter去替代endpoint完成功能,命名大多数以endpointFilter
结尾。除了客户端校验的Filter
与security-oauth2
相似。 -
目前
authorization-server
案例和文档较为简单,自定义bean
和替换不如security-oauth2
灵活方便。 -
但是使用
authorization-server
是spring的趋势,因为官网原spring-security-oauth2
文档代码已经没了,也不在支持