OAuth2.0学习(4-1)Spring Security OAuth2.0 - 代码分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OAuth2.0学习(4-1)Spring Security OAuth2.0 - 代码分析相关的知识,希望对你有一定的参考价值。

1、org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter

             org.springframework.security.oauth2.provider.client.ClientCredentialsTokenEndpointFilter

             org.springframework.security.oauth2.client.filter.OAuth2ClientAuthenticationProcessingFilter

             org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter  登录验证(用户名密码验证)

1.1、org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter

1.2、org.springframework.security.oauth2.provider.client.ClientCredentialsTokenEndpointFilter

1.3、org.springframework.security.oauth2.client.filter.OAuth2ClientAuthenticationProcessingFilter

1.4、UsernamePasswordAuthenticationFilter

父类AbstractAuthenticationProcessingFilter中有一个AuthenticationManager接口属性,验证工作主要是通过这个AuthenticationManager接口的实例来完成的。

在默认情况下,springSecurity框架会把org.springframework.security.authentication.ProviderManager类的实例注入到该属性。

UsernamePasswordAuthenticationFilter的验证过程如下:

1. 首先过滤器会调用自身的attemptAuthentication方法,从request中取出authentication, authentication是在org.springframework.security.web.context.SecurityContextPersistenceFilter过滤器中通过捕获用户提交的登录表单中的内容生成的一个org.springframework.security.core.Authentication接口实例.

2. 拿到authentication对象后,过滤器会调用ProviderManager类的authenticate方法,并传入该对象

3.ProviderManager类的authenticate方法再调用自身的doAuthentication方法,在doAuthentication方法中会调用类中的List<AuthenticationProvider> providers集合中的各个AuthenticationProvider接口实现类中的authenticate(Authentication authentication)方法进行验证,由此可见,真正的验证逻辑是由各个各个AuthenticationProvider接口实现类来完成的,DaoAuthenticationProvider类是默认情况下注入的一个AuthenticationProvider接口实现类

4.AuthenticationProvider接口通过UserDetailsService来获取用户信息

 

以上是关于OAuth2.0学习(4-1)Spring Security OAuth2.0 - 代码分析的主要内容,如果未能解决你的问题,请参考以下文章

带有 OAuth2.0 的 Spring REST 不起作用

Spring security OAuth2.0认证授权学习第四天(SpringBoot集成)

Spring security OAuth2.0认证授权学习第四天(SpringBoot集成)

OAuth2.0学习(4-12)spring-oauth-server分析 - 授权码模式验证过程

OAuth2.0学习(4-11)spring-oauth-server分析 - http元素使用的是何种AuthenticationManager?

OAuth2.0学习(3-1)服务端实现