使用春云oauth2实现用户认证登录

  介绍

这篇文章运用简单易懂的例子给大家介绍使用春云oauth2实现用户认证登录,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强> OAuth3

OAuth3是一个关于授权的网络标准,他定制了设计思路和执行流程.OAuth3一共有四种授权模式:授权码模式(授权代码),简化模式(隐性),密码模式(资源所有者密码)和客户端模式(客户端凭据)。数据的所有者告诉系统同意授权第三方应用进入系统,获取这些数据。于是数据所有者生产了一个短时间内有效的授权码(令牌)给第三方应用,用来代替密码,供第三方使用。具体流程请看下图,具体的OAuth3介绍,可以参考这篇文章,写的很详细。(https://www.jb51.net/article/198292.htm)

使用春云oauth2实现用户认证登录

令牌(令牌)和密码(密码)的作用是一样的,都可以进入系统获取资源,但是也有几点不同:

    <李>令牌是短期的,到期会自动失效,用户无法修改。密码是长期的,用户可以修改,如果不修改,就不会发生变化。李 <>李令牌可以被数据所有者撤销,令牌会立即失效。密码一般不允许其他人撤销,只能被操作权限更高的人或者本人修改/重制。 <李>令牌是有权限范围的,会被数据所有者授予。


本篇介绍的是通过密码模式来实现单点登录的功能。

, # 8203;在微服务架构中,我们的一个应用可能会有很多个服务运行,协调来处理实际的业务。这就需要用到单点登录的技术,来统一认证调取接口的是哪个用户。那总不能请求一次,就认证一次,这么做肯定是不行的。那么就需要在认证完用户之后,给这个用户授权,然后发一个令牌(令牌),有效期内用户请求资源时,就只需要带上这个标识自己身份的令牌即可。

<>强架构说明
认证中心:oauth3-oauth-server, OAuth3的服务端,主要完成用户令牌的生成,刷新,验证等。

微服务:mzh-etl,微服务之一,接收到请求之后回到认证中心(oauth3-oauth-server)去验证。


使用到的框架是java基础的弹簧引导和spring-cloud-oauth3

<>强认证中心:

1,引入需要的maven包

& lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-web   & lt;/dependency>   & lt; dependency>   & lt; groupId> org.springframework.cloud   & lt; artifactId> spring-cloud-starter-oauth3   & lt;/dependency>   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-data-redis   & lt;/dependency>   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-actuator   & lt;/dependency>

因为spring-cloud-starter-oauth3中包含了spring-cloud-starter-security,所以就不用再单独引入了,引入复述,包是为了使用复述来存储牌。

2,配置应用程序。yml

这里主要用到的是复述的配置,mysql数据库的配置暂时没有用的到。

春:   应用程序:   名称:oauth-server   数据源:   url: jdbc: mysql://localhost: 3306/mzh_oauth& # 63; useSSL=false& characterEncoding=utf - 8   用户名:根   密码:admin123   driver-class-name: com.mysql.jdbc.Driver   hikari:   连接超时:30000   闲置超时:600000   max-lifetime: 1800000   最大池大小:9   复述:   数据库:0   主持人:localhost   端口:6379   能:   池:   max-active: 8   最大空闲:8   min-idle: 0   超时:10000   服务器:   端口:8888   use-forward-headers:真      管理:   端点:   健康:   启用:真

3, spring security权限配置

需要继承WebSecurityConfigurerAdapter

/* *   * @Author mzh   * @Date 2020/10/24   */@ configuration   @EnableWebSecurity   @EnableGlobalMethodSecurity (prePostEnabled=true)   公开课WebSecurityConfig延伸WebSecurityConfigurerAdapter {      @ autowired   私人CustomUserDetailsService CustomUserDetailsService;/* *   *修改密码的加密方式   * @return   */@ bean   公共PasswordEncoder PasswordEncoder () {   返回新BCryptPasswordEncoder ();   }      @ bean   @Override   公共AuthenticationManager authenticationManagerBean()抛出异常{   返回super.authenticationManagerBean ();   }      @Override   保护无效配置(AuthenticationManagerBuilder auth)抛出异常{//如果使用BCryptPasswordEncoder,这里就必须指定密码的加密类   auth.userDetailsService (customUserDetailsService) .passwordEncoder (passwordEncoder ());   }      @Override   保护无效配置(HttpSecurity http){抛出异常   http.authorizeRequests ()   .antMatchers (“/oauth/* *“) .permitAll ();   }   }

使用春云oauth2实现用户认证登录