Spring cloud oauth2如何搭建认证资源中心

Spring Cloud Oauth2是Spring Cloud生态中基于Oauth2.0协议实现的授权、认证框架。它将授权、认证、鉴权的功能进行了拆分,将获得token的过程分离出来形成一个微服务,我们可以称之为认证服务认证中心,而资源服务需要鉴权的时候可以通过Feign请求认证服务获取token后再访问资源服务。下面是搭建认证资源中心的详细攻略。

1. 创建认证服务认证中心

首先我们需要创建一个认证中心服务作为认证中心,该服务需要依赖Spring Cloud Oauth2所提供的starter,因此在pom.xml中引入如下依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>

接着,在认证中心服务的配置文件中,我们需要配置以下几个核心的配置项,分别是:

  1. 配置认证中心的信息,如认证服务的端口号、应用名称等。
spring:
  application:
    name: oauth-server
  profiles:
    active: dev
server:
  port: 8200
  1. 配置认证中心所依赖的数据库。
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/oauth2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: root
  1. 配置授权类型。在OAuth2协议中,授权类型分为四种,可以对应grant_type这个参数,包括authorization_code, password, client_credentials, 和 refresh_token。在这里我们选择password这个类型,表示需要使用账号密码进行认证。
security:
  oauth2:
    client:
      client-id: client
      client-secret: secret
      authorized-grant-types: password,refresh_token
      scopes: read,write
  1. 配置用户信息与权限信息。在OAuth2协议中,用户信息和权限信息分别存储在两个表中,分别是oauth_user和oauth_authority。在这里我们使用了Mysql数据库进行存储。
security:
  oauth2:
    resource:
      user-info-uri: http://localhost:8200/user/me
    client:
      client-id: client
      client-secret: secret
      authorized-grant-types: password,refresh_token
      scopes: read,write
    token:
      store-type: jwt
    authorization:
      check-token-access: isAuthenticated()
  user:
    name: user
    password: password
    roles: ROLE_USER

2. 创建资源服务

认证中心创建成功后,我们需要再创建一个资源服务,该服务需要依赖Spring Cloud Oauth2所提供的starter,并且需要在配置文件中进行以下几个核心的配置:

  1. 配置资源服务的信息,如端口号、应用名称等。
spring:
  application:
    name: resource-server
  profiles:
    active: dev
server:
  port: 8201
  1. 配置资源服务如何与认证服务进行交互,包括认证服务的URL以及认证类型等。
security:
  oauth2:
    resource:
      user-info-uri: http://localhost:8200/user/me
    client:
      client-id: client
      client-secret: secret
      token-type: bearer
      check-token-access: isAuthenticated()
  1. 配置资源服务所需获取的权限信息。
security:
  oauth2:
    resource:
      user-info-uri: http://localhost:8200/user/me
    client:
      client-id: client
      client-secret: secret
      token-type: bearer
      check-token-access: isAuthenticated()
    resource-id: resource
    prefer-token-info: true
    ignored-uri-patterns: /**
    filter-order: 3

3. 认证方式选择与应用

在完成上述步骤后,我们就可以启动认证服务认证中心和资源服务,并构建一个基于 Spring Cloud Oauth2 的完整系统。在此基础上,我们根据具体的业务需求,选择不同的认证方式,并在应用中实现。例如,可以选择基于 OAuth2协议的其它认证方式,或者使用单点登录(SSO)等技术。

示例一:基于Password授权方式的认证服务

package cn.merryyou.oauth2;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@SpringBootApplication
public class Oauth2ServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(Oauth2ServerApplication.class, args);
    }

    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

示例二:基于OAuth2协议的认证服务

package cn.merryyou.oauth2;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Oauth2ServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(Oauth2ServerApplication.class, args);
    }
}

以上就是 Spring Cloud Oauth2如何搭建认证资源中心的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring cloud oauth2如何搭建认证资源中心 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Spring中的注解@Autowired实现过程全解(@Autowired 背后的故事)

    下面是关于“Spring中的注解@Autowired实现过程全解”的详细攻略: 什么是@Autowired注解? @Autowired是Spring Framework中常用的一个注解,通过它可以实现依赖注入(DI),即自动将一个需要的对象注入到另一个对象中。使用@Autowired注解,可以避免手动编写繁琐的getter、setter方法以及硬编码的依赖对…

    Java 2023年5月19日
    00
  • java生成指定范围随机数的多种代码

    下面是“java生成指定范围随机数”的完整攻略: 1. 使用java.util.Random类生成随机数 使用java.util.Random类可以生成随机数,这个类提供了一系列的方法来生成数字、布尔值和伪随机字节流。 代码示例1:生成指定范围的随机数 下面是一个例子,生成指定范围内的随机数: import java.util.Random; public …

    Java 2023年5月26日
    00
  • java 使用策略模式操作JDBC数据库

    使用策略模式操作JDBC数据库 什么是策略模式 策略模式是一种行为设计模式,它可以让你定义一系列的算法,将这些算法封装起来并且可以相互替换。策略模式让算法的变化独立于使用算法的客户端(调用者)。本质上来讲,策略模式是一种用来管理过多相似类的经典方法,使用策略模式可以避免使用大量的if语句。 策略模式在Java中的应用 在Java中,我们可以使用策略模式对JD…

    Java 2023年6月16日
    00
  • 一文带你学会Java网络编程

    一文带你学会Java网络编程攻略 什么是网络编程 网络编程指的是利用计算机网络实现不同计算机间的数据通信。网络编程需要使用网络协议和Socket套接字等技术。Java语言提供了丰富的网络编程API,开发者们可以利用Java语言实现各种网络通信。 Java网络编程的核心技术 协议 网络编程中最关键的技术就是各种网络协议:TCP、UDP、HTTP、SMTP、FT…

    Java 2023年5月19日
    00
  • 在JSP页面内编写java代码方法总结

    在JSP页面内编写Java代码是Web开发中非常常见的一个操作,在这里我会为大家总结一下在JSP页面中编写Java代码的方法与步骤。 步骤一:编写JSP页面 首先,我们需要编写一个JSP页面来对外展示我们所编写的Java代码。在JSP页面中,我们使用<% %>标签来插入Java代码。在<% %>中插入的Java代码会被解析器当作脚本来…

    Java 2023年5月23日
    00
  • Java批量转换文件编码格式的实现方法及实例代码

    下面是详细的攻略: 1. 什么是文件编码格式 文件编码格式是指文本文件中字符的编码方式,它决定了计算机如何读取和处理该文本文件。常见的文件编码格式有UTF-8、GBK、GB2312等。 2. 批量转换文件编码格式的步骤 Java实现批量转换文件编码格式的主要步骤如下: 获取需要转换编码格式的文件夹路径 遍历该文件夹中所有文本文件 读取文本文件内容并转换编码格…

    Java 2023年5月20日
    00
  • SrpingDruid数据源加密数据库密码的示例代码

    首先我们需要明确什么是SpringDruid数据源,以及为什么需要加密数据库密码。 SpringDruid数据源是一种基于Spring框架和阿里巴巴德鲁伊连接池的数据源,它能够提高数据库的连接性能、可用性和稳定性。 在实际应用中,我们通常需要在配置文件中配置数据库连接信息,包括数据库用户名和密码。然而,这样做存在一定风险,因为配置文件可能会被非授权的人员获取…

    Java 2023年5月20日
    00
  • Java Apache Commons报错“MathException”的原因与解决方法

    “MathException”是Java的Apache Commons类库中的一个异常,通常由以下原因之一引起: 无效的数学运算:如果数学运算无效,则可能会出现此错误。在这种情况下,需要检查数学运算以解决此问题。 数学运算溢出:如果数学运算结果超出了数据类型的范围,则可能会出现此错误。在这种情况下,需要使用更大的数据类型或其他方法来解决此问题。 以下是两个实…

    Java 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部