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 Security之默认的过滤器链及自定义Filter操作

    Spring Security 是 Spring 框架中提供的安全管理框架,它是基于 Servlet 过滤器实现的。 默认的过滤器链 Spring Security 在初始化时会自动生成一整套默认的过滤器链,这些过滤器链是按顺序有序地执行的。因为每个过滤器链都有特定的功能和处理逻辑,对于一个用户的请求,在整个过滤器链中会按照顺序经过每一个过滤器链的处理。最终…

    Java 2023年5月20日
    00
  • spring boot实战之本地jar包引用示例

    下面就为大家详细讲解 “spring boot实战之本地jar包引用示例”的完整攻略。 1. 前置知识 在介绍本地Jar包引用之前,我们需要先掌握以下基础知识: Java的classpath概念,即classpath的含义与用法 Maven的本地仓库,即本地仓库的含义与配置 Maven的工作原理,即pom.xml文件的作用 2. 引用本地Jar包示例 2.1…

    Java 2023年5月20日
    00
  • Java中关于String StringBuffer StringBuilder特性深度解析

    Java中关于String StringBuffer StringBuilder特性深度解析 Java中有三种处理字符串的方式,分别是使用String、StringBuffer和StringBuilder类。这三种类在处理字符串时具有不同的特点和性能表现,下面将详细解析每个类的特性。 String类 String是Java中最常用的字符串处理类,它是一个不可…

    Java 2023年5月20日
    00
  • Java编程Post数据请求和接收代码详解

    下面我将对”Java编程Post数据请求和接收代码详解” 这个话题进行详细讲解。 一、什么是Post数据请求 Post数据请求是一种常见的HTTP请求方式,用于向Web服务器提交数据。与GET请求不同,POST请求的数据是在请求头之后的请求体中发送的。 Post数据请求常常用于表单提交、文件上传等场景,具有传输数据量大、安全性高等优点。 二、Java编程Po…

    Java 2023年5月20日
    00
  • Java实现数据库连接池简易教程

    Java实现数据库连接池简易教程 在Java web开发中,经常会使用到数据库连接池技术,它可以缓存一定数量的数据库连接,通过再次请求时,优先从连接池中获取已有的连接,而不是重新创建连接,从而提高程序的性能和响应速度。在这里,我们将详细讲解如何使用Java语言来实现一个简单的数据库连接池。 步骤 第一步:创建连接池 首先,我们需要创建连接池,代码如下: im…

    Java 2023年5月19日
    00
  • SpringMVC集成redis配置的多种实现方法

    SpringMVC集成Redis配置的多种实现方法 Redis是一种高性能的NoSQL数据库,常用于缓存和数据存储。在SpringMVC中,我们可以使用多种方式来集成Redis配置。本文将详细讲解SpringMVC集成Redis配置的多种实现方法,并提供两个示例说明。 实现步骤 下面是实现SpringMVC集成Redis配置的多种实现方法的详细步骤: 步骤一…

    Java 2023年5月17日
    00
  • java如何实现抽取json文件指定字段值

    要实现抽取JSON文件指定字段值,可以通过使用Java中的JSON库和一些基本的数据结构来完成。以下是步骤和示例: 1. 导入JSON库 在Java程序中,最常见的JSON处理库是org.json。可以通过Maven来添加库的依赖,或者将JAR文件直接添加到项目的类路径中。以Maven为例,需要在pom.xml文件中添加以下代码: <dependenc…

    Java 2023年5月26日
    00
  • 你真的知道Java中对象的销毁吗

    当一个Java对象不再被程序使用时,它会被JVM自动回收,这个过程称为垃圾回收(Garbage Collection)。垃圾回收器会扫描堆中的所有对象,将未被引用的对象回收,腾出空间供其他对象使用。 Java 中对象的销毁与使用无关,取决于对象是否被垃圾回收器扫描到并回收,因此需要了解垃圾回收机制。 具体来说,Java 的垃圾回收器主要通过以下两个机制进行对…

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