(15) Integrating spring cloud cloud Architecture - commonservice SSO service building (1)

Keywords: Spring Maven Apache xml

We have introduced the knowledge points of Spring Cloud and oauth2 in the previous several articles. Today, we will use Spring Cloud and oauth2 to build commonservice SSO service. In this section, we just build the basic platform of commonservice SSO. If you don't talk about it, record the steps directly:

1. Create the maven project commonservice sso, where the pom.xml file is configured as follows:

<?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.      
6.    <parent>  
7.        <groupId>com.ml.honghu</groupId>  
8.        <artifactId>commonservice</artifactId>  
9.        <version>0.0.1-SNAPSHOT</version>  
10.    </parent>  
11.  
12.    <artifactId>commonservice-sso</artifactId>  
13.    <packaging>jar</packaging>  
14.  
15.    <dependencies>  
16.        <dependency>  
17.            <groupId>org.springframework.cloud</groupId>  
18.            <artifactId>spring-cloud-starter-eureka</artifactId>  
19.        </dependency>  
20.        <dependency>  
21.            <groupId>org.springframework.cloud</groupId>  
22.            <artifactId>spring-cloud-starter-config</artifactId>  
23.        </dependency>  
24.        <dependency>  
25.            <groupId>org.springframework.boot</groupId>  
26.            <artifactId>spring-boot-starter-actuator</artifactId>  
27.        </dependency>  
28.        <dependency>  
29.            <groupId>org.springframework.boot</groupId>  
30.            <artifactId>spring-boot-starter-data-rest</artifactId>  
31.        </dependency>  
32.        <dependency>  
33.            <groupId>org.springframework.boot</groupId>  
34.            <artifactId>spring-boot-starter-web</artifactId>  
35.        </dependency>  
36.        <dependency>  
37.            <groupId>org.springframework.boot</groupId>  
38.            <artifactId>spring-boot-starter-security</artifactId>  
39.        </dependency>  
40.  
41.        <dependency>  
42.            <groupId>org.springframework.security.oauth</groupId>  
43.            <artifactId>spring-security-oauth2</artifactId>  
44.        </dependency>  
45.  
46.        <dependency>  
47.            <groupId>org.springframework.boot</groupId>  
48.            <artifactId>spring-boot-starter-test</artifactId>  
49.        </dependency>  
50.        <dependency>  
51.            <groupId>org.springframework.hateoas</groupId>  
52.            <artifactId>spring-hateoas</artifactId>  
53.        </dependency>  
54.        <dependency>  
55.            <groupId>org.springframework.boot</groupId>  
56.            <artifactId>spring-boot-starter-data-rest</artifactId>  
57.        </dependency>  
58.        <dependency>  
59.            <groupId>com.ml.honghu.common.framework</groupId>  
60.            <artifactId>common-framework-dao</artifactId>  
61.            <version>1.0.0-SNAPSHOT</version>  
62.        </dependency>  
63.        <dependency>  
64.            <groupId>org.springframework.boot</groupId>  
65.            <artifactId>spring-boot-starter-web</artifactId>  
66.        </dependency>  
67.        <dependency>  
68.            <groupId>org.springframework.boot</groupId>  
69.            <artifactId>spring-boot-starter-freemarker</artifactId>  
70.        </dependency>  
71.        <dependency>  
72.            <groupId>com.ml.honghu</groupId>  
73.            <artifactId>component-base</artifactId>  
74.        </dependency>  
75.        </dependency>  
76.    </dependencies>  
77.  
78.    <!-- Package plug-ins, where repackage,true It's special. spring boot Special package -->  
79.    <build>  
80.        <plugins>  
81.            <plugin>  
82.                <groupId>org.springframework.boot</groupId>  
83.                <artifactId>spring-boot-maven-plugin</artifactId>  
84.                <executions>  
85.                    <execution>  
86.                        <id>1</id>  
87.                        <goals>  
88.                            <goal>repackage</goal>  
89.                        </goals>  
90.                    </execution>  
91.                    <execution>  
92.                        <id>2</id>  
93.                        <goals>  
94.                            <goal>build-info</goal>  
95.                        </goals>  
96.                    </execution>  
97.                </executions>  
98.            </plugin>  
99.        </plugins>  
100.    </build>  
101.</project>  

2. Configure bootstrap.yml file

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:123456@localhost:8761/eureka  
15.  instance:  
16.    prefer-ip-address: true  

3. Configuration project startup file

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

4. Create sso related tables:

oauth_access_token,oauth_approvals,

oauth_client_details,oauth_client_token,

oauth_code,oauth_refresh_token

The script is as follows:

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

Note: oauth related tables are used to store the token information and authentication information of users.

There are so many business codes in this section. We will put them out later.

From now on, I will record the construction process and essence of the recently developed spring cloud micro service Cloud Architecture to help more friends who are interested in developing the spring cloud framework. Let's discuss the construction process of the spring cloud architecture and how to apply it to enterprise projects.

Posted by Beauchy on Fri, 27 Dec 2019 12:28:33 -0800