zoukankan      html  css  js  c++  java
  • OAuth2简易实战(二)-模拟客户端调用

    1. OAuth2简易实战(二)

    1.1. 目标

    1. 模拟客户端获取第三方授权,并调用第三方接口

    1.2. 代码

    1.2.1. 核心流程

    1. 逻辑就是从数据库读取用户信息,封装成UserDetails对象,该逻辑在用户进行登录时调用,验证由Spring Security框架完成
    @Service("clientUserDetailsService")
    public class ClientUserDetailsService implements UserDetailsService {
    
        @Autowired
        private UserRepository users;
    
        @Override
        public UserDetails loadUserByUsername(String username)
                throws UsernameNotFoundException {
            Optional<ClientUser> optionalUser = users.findByUsername(username);
    
            if (!optionalUser.isPresent()) {
                throw new UsernameNotFoundException("invalid username or password");
            }
    
            return new ClientUserDetails(optionalUser.get());
        }
    
    }
    
    1. 验证核心代码
    @Configuration
    @EnableWebSecurity
    public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    
        @Autowired
        @Qualifier("clientUserDetailsService")
        private UserDetailsService userDetailsService;
    
        @Override
        protected void configure(AuthenticationManagerBuilder auth)
                throws Exception {
            auth.userDetailsService(userDetailsService);
        }
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                .authorizeRequests().antMatchers("/", "/index.html").permitAll().anyRequest().authenticated().and()
                .formLogin().and()
                .logout().permitAll().and()
                .csrf().disable();
        }
    
    }
    
    1. 验证完成后,进入controller方法,判断token不存在,调用授权连接,后续操作同上一篇的授权码模式,在认证通过后,继续转发调用controller
    2. 整个流程核心是模拟oauth的http调用
    3. 完整代码参看 https://github.com/spring2go/oauth2lab 中lab02

    1.3. 流程效果

    1. 访问客户端
    2. 跳转客户端登录
    3. 登陆后跳转授权登录
    4. 确认授权
    5. 跳转主页并获取资源服务器信息
  • 相关阅读:
    gsm at 指令
    wm8976 codec
    【Gym 100971J】Robots at Warehouse
    【XDU1144】合并模板
    腾讯云CentOS7安装LNMP+wordpress
    【USACO1.1】Broken Necklace
    【校赛小分队之我们有个女生】训练赛6
    【计导作业】——商品记录
    C 文件读写2
    C 文件读写1
  • 原文地址:https://www.cnblogs.com/sky-chen/p/10528282.html
Copyright © 2011-2022 走看看