整合spring cloud云架构 - commonservice-sso服务搭建(一)

前面几篇我们已经介绍了Spring Cloud和oauth2的知识点,今天我们要利用Spring Cloud和oauth2进行commonservice-sso服务搭建,本节我们只是搭建commonservice-sso的基础平台,闲话少说,直接将步骤记录下来:

1. 创建maven项目commonservice-sso,其中pom.xml文件配置如下:

Xml代码  

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>com.ml.honghu</groupId>
  7. <artifactId>commonservice</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. </parent>
  10. <artifactId>commonservice-sso</artifactId>
  11. <packaging>jar</packaging>
  12. <dependencies>
  13. <dependency>
  14. <groupId>org.springframework.cloud</groupId>
  15. <artifactId>spring-cloud-starter-eureka</artifactId>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.springframework.cloud</groupId>
  19. <artifactId>spring-cloud-starter-config</artifactId>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-actuator</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework.boot</groupId>
  27. <artifactId>spring-boot-starter-data-rest</artifactId>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework.boot</groupId>
  31. <artifactId>spring-boot-starter-web</artifactId>
  32. </dependency>
  33. <dependency>
  34. <groupId>org.springframework.boot</groupId>
  35. <artifactId>spring-boot-starter-security</artifactId>
  36. </dependency>
  37. <dependency>
  38. <groupId>org.springframework.security.oauth</groupId>
  39. <artifactId>spring-security-oauth2</artifactId>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.springframework.boot</groupId>
  43. <artifactId>spring-boot-starter-test</artifactId>
  44. </dependency>
  45. <dependency>
  46. <groupId>org.springframework.hateoas</groupId>
  47. <artifactId>spring-hateoas</artifactId>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.springframework.boot</groupId>
  51. <artifactId>spring-boot-starter-data-rest</artifactId>
  52. </dependency>
  53. <dependency>
  54. <groupId>com.ml.honghu.common.framework</groupId>
  55. <artifactId>common-framework-dao</artifactId>
  56. <version>1.0.0-SNAPSHOT</version>
  57. </dependency>
  58. <dependency>
  59. <groupId>org.springframework.boot</groupId>
  60. <artifactId>spring-boot-starter-web</artifactId>
  61. </dependency>
  62. <dependency>
  63. <groupId>org.springframework.boot</groupId>
  64. <artifactId>spring-boot-starter-freemarker</artifactId>
  65. </dependency>
  66. <dependency>
  67. <groupId>com.ml.honghu</groupId>
  68. <artifactId>component-base</artifactId>
  69. </dependency>
  70. </dependency>
  71. </dependencies>
  72. <!-- 打包插件,其中repackage、true是专门打spring boot专用包 -->
  73. <build>
  74. <plugins>
  75. <plugin>
  76. <groupId>org.springframework.boot</groupId>
  77. <artifactId>spring-boot-maven-plugin</artifactId>
  78. <executions>
  79. <execution>
  80. <id>1</id>
  81. <goals>
  82. <goal>repackage</goal>
  83. </goals>
  84. </execution>
  85. <execution>
  86. <id>2</id>
  87. <goals>
  88. <goal>build-info</goal>
  89. </goals>
  90. </execution>
  91. </executions>
  92. </plugin>
  93. </plugins>
  94. </build>
  95. </project>

2. 配置bootstrap.yml文件

Xml代码  

  1. spring:
  2. application:
  3. name: commonservice-sso
  4. profiles:
  5. active: dev,discoveryClient
  6. cloud:
  7. config:
  8. discovery:
  9. enabled: true
  10. service-id: commonservice-config-server
  11. eureka:
  12. client:
  13. service-url:
  14. defaultZone: http://honghu:[email protected]:8761/eureka
  15. instance:
  16. prefer-ip-address: true

3. 配置项目启动文件

Java代码  

  1. package com.ml.honghu;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
  5. @SpringBootApplication
  6. @EnableEurekaClient
  7. public class SSOApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(SSOApplication.class, args);
  10. }
  11. }

4. 创建sso相关表:

oauth_access_token、oauth_approvals、

oauth_client_details、oauth_client_token、

oauth_code、oauth_refresh_token

脚本如下:

Java代码  

  1. /*
  2. Navicat MySQL Data Transfer
  3. Source Server         : localhost
  4. Source Server Version : 50621
  5. Source Host           : localhost:3306
  6. Source Database       : honghu
  7. Target Server Type    : MYSQL
  8. Target Server Version : 50621
  9. File Encoding         : 65001
  10. Date: 2017-10-26 20:12:56
  11. */
  12. SET FOREIGN_KEY_CHECKS=0;
  13. -- ----------------------------
  14. -- Table structure for `oauth_access_token`
  15. -- ----------------------------
  16. DROP TABLE IF EXISTS `oauth_access_token`;
  17. CREATE TABLE `oauth_access_token` (
  18. `token_id` varchar(256) DEFAULT NULL,
  19. `token` blob,
  20. `authentication_id` varchar(128) NOT NULL,
  21. `user_name` varchar(256) DEFAULT NULL,
  22. `client_id` varchar(256) DEFAULT NULL,
  23. `authentication` blob,
  24. `refresh_token` varchar(256) DEFAULT NULL,
  25. PRIMARY KEY (`authentication_id`)
  26. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  27. -- ----------------------------
  28. -- Table structure for `oauth_approvals`
  29. -- ----------------------------
  30. DROP TABLE IF EXISTS `oauth_approvals`;
  31. CREATE TABLE `oauth_approvals` (
  32. `userId` varchar(256) DEFAULT NULL,
  33. `clientId` varchar(256) DEFAULT NULL,
  34. `scope` varchar(256) DEFAULT NULL,
  35. `status` varchar(10) DEFAULT NULL,
  36. `expiresAt` datetime DEFAULT NULL,
  37. `lastModifiedAt` datetime DEFAULT NULL
  38. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  39. -- ----------------------------
  40. -- Records of oauth_approvals
  41. -- ----------------------------
  42. -- ----------------------------
  43. -- Table structure for `oauth_client_details`
  44. -- ----------------------------
  45. DROP TABLE IF EXISTS `oauth_client_details`;
  46. CREATE TABLE `oauth_client_details` (
  47. `client_id` varchar(128) NOT NULL,
  48. `resource_ids` varchar(256) DEFAULT NULL,
  49. `client_secret` varchar(256) DEFAULT NULL,
  50. `scope` varchar(256) DEFAULT NULL,
  51. `authorized_grant_types` varchar(256) DEFAULT NULL,
  52. `web_server_redirect_uri` varchar(256) DEFAULT NULL,
  53. `authorities` varchar(256) DEFAULT NULL,
  54. `access_token_validity` int(11) DEFAULT NULL,
  55. `refresh_token_validity` int(11) DEFAULT NULL,
  56. `additional_information` varchar(4096) DEFAULT NULL,
  57. `autoapprove` varchar(256) DEFAULT NULL,
  58. PRIMARY KEY (`client_id`)
  59. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  60. -- ----------------------------
  61. -- Table structure for `oauth_client_token`
  62. -- ----------------------------
  63. DROP TABLE IF EXISTS `oauth_client_token`;
  64. CREATE TABLE `oauth_client_token` (
  65. `token_id` varchar(256) DEFAULT NULL,
  66. `token` blob,
  67. `authentication_id` varchar(128) NOT NULL,
  68. `user_name` varchar(256) DEFAULT NULL,
  69. `client_id` varchar(256) DEFAULT NULL,
  70. PRIMARY KEY (`authentication_id`)
  71. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  72. -- ----------------------------
  73. -- Records of oauth_client_token
  74. -- ----------------------------
  75. -- ----------------------------
  76. -- Table structure for `oauth_code`
  77. -- ----------------------------
  78. DROP TABLE IF EXISTS `oauth_code`;
  79. CREATE TABLE `oauth_code` (
  80. `code` varchar(256) DEFAULT NULL,
  81. `authentication` blob
  82. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  83. -- ----------------------------
  84. -- Records of oauth_code
  85. -- ----------------------------
  86. -- ----------------------------
  87. -- Table structure for `oauth_refresh_token`
  88. -- ----------------------------
  89. DROP TABLE IF EXISTS `oauth_refresh_token`;
  90. CREATE TABLE `oauth_refresh_token` (
  91. `token_id` varchar(256) DEFAULT NULL,
  92. `token` blob,
  93. `authentication` blob
  94. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

备注: oauth的相关表是用来存储用户的token信息和认证信息的。

本节搭建先搭建那么多,后面的业务代码太多,我们会在后面的章节中放出来。

从现在开始,我这边会将近期研发的spring cloud微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发spring cloud框架的朋友,大家来一起探讨spring cloud架构的搭建过程及如何运用于企业项目。源码来源

时间: 2024-10-01 04:01:24

整合spring cloud云架构 - commonservice-sso服务搭建(一)的相关文章

(十六) 整合spring cloud云架构 -使用spring cloud Bus刷新配置

我们使用spring cloud分布式微服务云架构做了b2b2c的电子商务系统,除了架构本身自带的系统服务外,我们将b2b2c的业务服务进行了细粒度拆分,做成了不同的业务微服务. 当我们的业务系统越来越庞大复杂的时候,各种配置也会随之增多.配置文件只要一修改,会对commonservice-config配置中心先停止服务,然后再重新启动,最后使配置生效. 如果服务少,我们可以手动方式来启动,但是对业务和系统的稳定性肯定有一定的影响. 如果是成百上千的服务都靠手动操作,我估计运维人员或技术人员会疯

整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的登录认证): 上面的图很清楚的描述了当前登录login的流程,现在我们针对于login做成相关的微服务,解析如下:请求方式:POST服务URL: http://localhost:8080/user/login参数类型:application/jsonHeaders: Content-Type: a

整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程

上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的登录认证): 上面的图很清楚的描述了当前登录login的流程,现在我们针对于login做成相关的微服务,解析如下: 请求方式:POST服务URL: http://localhost:8080/user/login参数类型:application/json Headers: Content-Type:

(十) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)

之前写了很多关于spring cloud的文章,今天我们对OAuth2.0的整合方式做一下笔记,首先我从网上找了一些关于OAuth2.0的一些基础知识点,帮助大家回顾一下知识点: 一.oauth中的角色 client:调用资源服务器API的应用 Oauth 2.0 Provider:包括Authorization Server和Resource Server (1)Authorization Server:认证服务器,进行认证和授权 (2)Resource Server:资源服务器,保护受保护的

(十三) 整合spring cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) public Resp

整合spring cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)

上一篇我根据框架中OAuth2.0的使用总结,画了一个根据用户名+密码实现OAuth2.0的登录认证的流程图,今天我们看一下logout的流程: /** * 用户注销 * @param accessToken * @return */ @RequestMapping(value = "/user/logout", method = RequestMethod.POST) public ResponseVO userLogout(@RequestHeader(value = "

整合spring cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) public Resp

(十一) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的登录认证):  上面的图很清楚的描述了当前登录login的流程,现在我们针对于login做成相关的微服务,解析如下: 请求方式:POST服务URL: http://localhost:8080/user/login参数类型:application/json Headers: Content-Type

整合spring cloud云架构 - SSO单点登录之OAuth2.0 登出流程

上一篇我根据框架中OAuth2.0的使用总结,画了一个根据用户名+密码实现OAuth2.0的登录认证的流程图,今天我们看一下logout的流程: /** * 用户注销 * @param accessToken * @return */ @RequestMapping(value = "/user/logout", method = RequestMethod.POST) public ResponseVO userLogout(@RequestHeader(value = "