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.