手记

Java B2B2C o2o多用户商城-commonservice-sso服务搭建(一)


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

创建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>  

配置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  

配置项目启动文件

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架构的搭建过程及如何运用于企业项目。

©著作权归作者所有:来自51CTO博客作者sunnyday8903的原创作品,如需转载,请注明出处,否则将追究法律责任


0人推荐
随时随地看视频
慕课网APP