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. 跳转主页并获取资源服务器信息
  • 相关阅读:
    3090显卡(CUDA11.1)安装Pytorch
    ros环境搭建
    github设置仓库可见性 私人仓库设置他人协作/可见
    安全可靠国产系统下的应用怎么搭建?
    燕山大学操作系统课程设计计划书
    flink 1.9.0 编译:flink-fs-hadoop-shaded 找不到
    产品经理面试——简历填写
    什么是可串行化MVCC
    fatal: early EOF fatal: index-pack failed
    Maven 初学+http://mvnrepository.com/
  • 原文地址:https://www.cnblogs.com/sky-chen/p/10528282.html
Copyright © 2011-2022 走看看