其他分享
首页 > 其他分享> > Spring-Security集成Oauth2.0(上)

Spring-Security集成Oauth2.0(上)

作者:互联网

集成之前首先介绍一下Security的实现原理;

SecurityContextPersistenceFilter:拦截器的出口和入口,会在开始的时候从配置好的SecurityContextRepository中获取SecurityContext,然后设置给SecurityContextHolder。请求完成后将SecurityContextHolder中持有的SecurityContext保存到SecurityContextRepository,再清除SecurityContextHolder中持有的SecurityContext,我们可以看看Security中SecurityContext的源代码,其中包含的Authentication(PS:在分布式中网关转发的时候需要将Authentication中的信息报存到Request中,不然后丢失,Authentication中包含了用户的详细信息,后文会详细讲到)。

public class SecurityContextImpl implements SecurityContext {
    private static final long serialVersionUID = 510L;
    private Authentication authentication;

    public SecurityContextImpl() {
    }

UsernamePasswordAuthenticationFilter:处理用户提交的来自表单等方式的认证,这里我们演示的是表单认证方式(它还可以用户名密码提交,短信验证登录等)

public class UsernamePasswordAuthenticationFilter extends
		AbstractAuthenticationProcessingFilter {
    
    	protected String obtainPassword(HttpServletRequest request) {
		return request.getParameter(passwordParameter);
        }
        public void setPasswordParameter(String passwordParameter) {
		Assert.hasText(passwordParameter, "Password parameter must not be empty or null");
		this.passwordParameter = passwordParameter;
	    }
	}

FilterSecurityInterceptor:保护web资源,使用AccessDecisionManager对当前用户进行授权访问(AccessDecisionManager是起决策作用,security自带几种决策管理器,用于判断是否通过认证授权)

ExceptionTranslationFilter:捕获FilterChain的异常,并进行处理,不过它通常处理两类异常,AuthenticationException 和 AccessDeniedException,其它的异常它会继续抛出

  1.  

 

 

参考:https://www.liangzl.com/get-article-detail-4650.html

 

标签:null,Spring,object,Authentication,debug,fi,Security,Oauth2.0,public
来源: https://www.cnblogs.com/freedomBird/p/16069739.html