继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Spring Cloud云架构 - commonservice-sso服务搭建(一)

qq_IT达人_0
关注TA
已关注
手记 107
粉丝 54
获赞 267

前面几篇我们已经介绍了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文件

spring:    
  application:    
    name: commonservice-sso    
  profiles:     
    active: dev,discoveryClient    
  cloud:    
    config:    
      discovery:     
        enabled: true    
        service-id: commonservice-config-server    
eureka:     
  client:    
    service-url:    
      defaultZone: http://honghu:123456@localhost:8761/eureka    
  instance:    
    prefer-ip-address: true

 3. 配置项目启动文件

package com.ml.honghu;    
    
import org.springframework.boot.SpringApplication;    
import org.springframework.boot.autoconfigure.SpringBootApplication;    
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;    
    
@SpringBootApplication    
@EnableEurekaClient    
public 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

/*  
Navicat MySQL Data Transfer  
  
Source Server         : localhost  
Source Server Version : 50621  
Source Host           : localhost:3306  
Source Database       : honghu  
  
Target Server Type    : MYSQL  
Target Server Version : 50621  
File Encoding         : 65001  
  
Date: 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架构的搭建过程及如何运用于企业项目。源码来源


打开App,阅读手记
4人推荐
发表评论
随时随地看视频慕课网APP

热门评论

希望可以帮助到你们哦~~

查看全部评论