• spring认证的一些核心类


    SecurityContextHolder, to provide access to the SecurityContext. 
    SecurityContext: to hold the Authentication and possibly request-specific security information. 
    Authentication: 表示用户认证信息
    GrantedAuthority: 当前用户拥有的权限,通过Authentication的getAuthorities()获取,是一个数组。 
    UserDetails: 定义了一些可以获取用户名、密码、权限等与认证相关的信息的方法,通过UserDetailsService的loadUserByUsername()方法进行加载。
    UserDetailsService: org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl(通过数据库或内存获取UserDetails)
    UserDetailsService->UserDetails
    UserDetailsService->GrantedAuthority(role)
    SecurityContextHolder->SecurityContext->Authentication(principal,)
    加载用户dao相关:
    UserDetailsService(接口):loadUserByUsername(String username) 子类
        UserDetailsManager:(接口)changePassword(String oldPassword, String newPassword),createUser(UserDetails user),deleteUser(String username)等
        CachingUserDetailsService:
        InMemoryUserDetailsManager: 
        JdbcDaoImpl:
            JdbcUserDetailsManager: 
        LdapUserDetailsManager:
        LdapUserDetailsService:
    用户信息相关:
    UserDetails:(接口)getAuthorities(),getPassword(),getUsername(),isAccountNonExpired()等
        InetOrgPerson:
        LdapUserDetailsImpl:
        LdapUserDetailsImpl:
        Person:UserDetails implementation whose properties are based on the LDAP schema for Person.
        User:(类)
    认证相关:
    Principal:(java.security)equals(Object another),getName() 
        Authentication:(接口)一旦一个request被认证,Authentication 就会被放入 thread-local SecurityContext managed by the SecurityContextHolder 
                        SecurityContextHolder.getContext().setAuthentication(anAuthentication);显式认证,
                        Collection<? extends GrantedAuthority> getAuthorities(),getCredentials(), getDetails(),getPrincipal()
            UsernamePasswordAuthenticationToken:for simple presentation of a username and password. 
            RememberMeAuthenticationToken:
            OpenIDAuthenticationToken:
            ...
    GrantedAuthority:(接口)getAuthority()该方法返回一个字符串,表示对应权限的字符串表示,如果对应权限不能用字符串表示,则应当返回null。
        SimpleGrantedAuthority:为Authentication存放一个代表权限的字符串.
        ...
    AuthenticationManager:(接口)处理一个Authentication request, Authentication authenticate(Authentication authentication)
        ProviderManager:通过AuthenticationProvider列表来处理认证请求,List<AuthenticationProvider> getProviders()  
                            authenticate(Authentication authentication) 
    AuthenticationProvider:(接口)
        DaoAuthenticationProvider:从UserDetailsService获取一个user,getUserDetailsService(),
                        retrieveUser(String username, UsernamePasswordAuthenticationToken authentication)
    
    
    异常相关:
    AuthenticationException:
    
    AuthenticationServiceException
    过滤器相关:
    Filter(javax.servlet):void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)  
        GenericFilterBean
            DelegatingFilterProxy:
            OncePerRequestFilter:
            FilterChainProxy:
            AbstractAuthenticationProcessingFilter: attemptAuthentication (request,response),getFailureHandler(),getSuccessHandler() 
                                successfulAuthentication(),unsuccessfulAuthentication()
                CasAuthenticationFilter,
                OpenIDAuthenticationFilter
                UsernamePasswordAuthenticationFilter:getPasswordParameter() ,getUsernameParameter() ,obtainPassword( request) ,setDetails()
            ExceptionTranslationFilter:Handles any AccessDeniedException and AuthenticationException thrown within the filter chain. 
            ConcurrentSessionFilter:determineExpiredUrl(HttpServletRequest request, SessionInformation info) 
    
    Hander相关:
    AuthenticationSuccessHandler:(接口):onAuthenticationSuccess(request,response,authentication)
        ForwardAuthenticationSuccessHandler:
        SavedRequestAwareAuthenticationSuccessHandler:
        SimpleUrlAuthenticationSuccessHandler:
     
    Event相关:
    InteractiveAuthenticationSuccessEvent 
    入口:
    AuthenticationEntryPoint:
        LoginUrlAuthenticationEntryPoint:UsernamePasswordAuthenticationFilter使用ExceptionTranslationFilter来重定向到登录页面
         commence (request,response,authException)重定向方法,getLoginFormUrl() 
    Listener相关:
    javax.servlet.http.HttpSessionListener
        HttpSessionEventPublisher: sessionCreated(javax.servlet.http.HttpSessionEvent event), 
                                        sessionDestroyed(javax.servlet.http.HttpSessionEvent event) 
    Session相关:                                
    SessionRegistry:(接口):getAllPrincipals() getAllSessions(), getSessionInformation(),registerNewSession()
        SessionRegistryImpl:
    SessionAuthenticationStrategy:(接口)A 
        CompositeSessionAuthenticationStrategySessionAuthenticationStrategy that accepts multiple SessionAuthenticationStrategy 
                    implementations to delegate to. Each SessionAuthenticationStrategy is invoked in turn. The invocations are short circuited if any exception, (i.e. SessionAuthenticationException) is thrown. 
        ConcurrentSessionControlAuthenticationStrategy:控制用户可以同时登录的数量,就是控制一个用户可以同时创建几个session
        SessionFixationProtectionStrategy:防止会话固定攻击
        RegisterSessionAuthenticationStrategy:register a user with the SessionRegistry after successful Authentication. 
    匿名认证相关:
    AuthenticationProvider
        AnonymousAuthenticationProvider:authenticate(Authentication authentication), getKey()  
    Authentication:
        AnonymousAuthenticationToken:Represents an anonymous Authentication,getPrincipal() 
    GenericFilterBean
        AnonymousAuthenticationFilter: createAuthentication(HttpServletRequest request)  
        
    
    
    public String getCurrentUsername() 
    {
    
          Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    
          if (principal instanceof UserDetails) 
          {
    
             return ((UserDetails) principal).getUsername();
    
          }
    
          if (principal instanceof Principal) 
          {
    
             return ((Principal) principal).getName();
    
          }
    
          return String.valueOf(principal);
    
    }
  • 相关阅读:
    linux ls
    ExtJs 弹出窗口
    Redhat5 装中文
    Linux下配置JDK以及报cannot restore segment prot after reloc: Permission denied错解决方案
    工具
    得到剪切的图片
    label button等设置不同颜色的标题
    UITableView UITextField 键盘挡住
    给出颜色生成图片
    一个不错的学习网站
  • 原文地址:https://www.cnblogs.com/wangyonglong/p/7347209.html
Copyright © 2020-2023  润新知