(十五) 整合spring cloud云架构 - commonservice-sso服务搭建(一)
前面几篇我们已经介绍了Spring Cloud和oauth2的知识点,今天我们要利用Spring Cloud和oauth2进行commonservice-sso服务搭建,本节我们只是搭建commonservice-sso的基础平台,闲话少说,直接将步骤记录下来:1. 创建maven项目commonservice-sso,其中pom.xml文件配置如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.ml.honghu</groupId><artifactId>commonservice</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>commonservice-sso</artifactId><packaging>jar</packaging><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-rest</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>org.springframework.security.oauth</groupId><artifactId>spring-security-oauth2</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>org.springframework.hateoas</groupId><artifactId>spring-hateoas</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-rest</artifactId></dependency><dependency><groupId>com.ml.honghu.common.framework</groupId><artifactId>common-framework-dao</artifactId><version>1.0.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency><dependency><groupId>com.ml.honghu</groupId><artifactId>component-base</artifactId></dependency></dependency></dependencies><!-- 打包插件,其中repackage、true是专门打spring boot专用包 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><id>1</id><goals><goal>repackage</goal></goals></execution><execution><id>2</id><goals><goal>build-info</goal></goals></execution></executions></plugin></plugins></build></project>2. 配置bootstrap.yml文件Xml代码
spring:application:name: commonservice-ssoprofiles:active: dev,discoveryClientcloud:config:discovery:enabled: trueservice-id: commonservice-config-servereureka:client:service-url:defaultZone: http://honghu:123456@localhost:8761/eurekainstance:prefer-ip-address: true3. 配置项目启动文件Java代码
package com.ml.honghu;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication@EnableEurekaClientpublic class SSOApplication {public static void main(String[] args) {SpringApplication.run(SSOApplication.class, args);}}4. 创建sso相关表:oauth_access_token、oauth_approvals、oauth_client_details、oauth_client_token、oauth_code、oauth_refresh_token脚本如下:Java代码
/*Navicat MySQL Data TransferSource Server : localhostSource Server Version : 50621Source Host : localhost:3306Source Database : honghuTarget Server Type : MYSQLTarget Server Version : 50621File Encoding : 65001Date: 2017-10-26 20:12:56*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `oauth_access_token`-- ----------------------------DROP TABLE IF EXISTS `oauth_access_token`;CREATE TABLE `oauth_access_token` (`token_id` varchar(256) DEFAULT NULL,`token` blob,`authentication_id` varchar(128) NOT NULL,`user_name` varchar(256) DEFAULT NULL,`client_id` varchar(256) DEFAULT NULL,`authentication` blob,`refresh_token` varchar(256) DEFAULT NULL,PRIMARY KEY (`authentication_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for `oauth_approvals`-- ----------------------------DROP TABLE IF EXISTS `oauth_approvals`;CREATE TABLE `oauth_approvals` (`userId` varchar(256) DEFAULT NULL,`clientId` varchar(256) DEFAULT NULL,`scope` varchar(256) DEFAULT NULL,`status` varchar(10) DEFAULT NULL,`expiresAt` datetime DEFAULT NULL,`lastModifiedAt` datetime DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Records of oauth_approvals-- ------------------------------ ------------------------------ Table structure for `oauth_client_details`-- ----------------------------DROP TABLE IF EXISTS `oauth_client_details`;CREATE TABLE `oauth_client_details` (`client_id` varchar(128) NOT NULL,`resource_ids` varchar(256) DEFAULT NULL,`client_secret` varchar(256) DEFAULT NULL,`scope` varchar(256) DEFAULT NULL,`authorized_grant_types` varchar(256) DEFAULT NULL,`web_server_redirect_uri` varchar(256) DEFAULT NULL,`authorities` varchar(256) DEFAULT NULL,`access_token_validity` int(11) DEFAULT NULL,`refresh_token_validity` int(11) DEFAULT NULL,`additional_information` varchar(4096) DEFAULT NULL,`autoapprove` varchar(256) DEFAULT NULL,PRIMARY KEY (`client_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Table structure for `oauth_client_token`-- ----------------------------DROP TABLE IF EXISTS `oauth_client_token`;CREATE TABLE `oauth_client_token` (`token_id` varchar(256) DEFAULT NULL,`token` blob,`authentication_id` varchar(128) NOT NULL,`user_name` varchar(256) DEFAULT NULL,`client_id` varchar(256) DEFAULT NULL,PRIMARY KEY (`authentication_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Records of oauth_client_token-- ------------------------------ ------------------------------ Table structure for `oauth_code`-- ----------------------------DROP TABLE IF EXISTS `oauth_code`;CREATE TABLE `oauth_code` (`code` varchar(256) DEFAULT NULL,`authentication` blob) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Records of oauth_code-- ------------------------------ ------------------------------ Table structure for `oauth_refresh_token`-- ----------------------------DROP TABLE IF EXISTS `oauth_refresh_token`;CREATE TABLE `oauth_refresh_token` (`token_id` varchar(256) DEFAULT NULL,`token` blob,`authentication` blob) ENGINE=InnoDB DEFAULT CHARSET=utf8;备注: oauth的相关表是用来存储用户的token信息和认证信息的。本节搭建先搭建那么多,后面的业务代码太多,我们会在后面的章节中放出来。(企业架构源码可以加求球:叁五三陆二肆柒二伍玖)从现在开始,我这边会将近期研发的spring cloud微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发spring cloud框架的朋友,大家来一起探讨spring cloud架构的搭建过程及如何运用于企业项目。