安装部署手册

业务中台之认证授权服务

  • 修订历史

版本 | 作者 | 日期 | 备注

  • | - | - | - v1 | 刘洪青 | 2021-05-15 | 初稿

安装准备

MySQL 初始配置及相关基础命令

数据文件目录:/var/lib/mysql

  • 安装完成后,调整 mysql 服务的配置参数

    查看当前配置:show variables;

    最大连接数 max_connections 操作日志的保留时长 binlog_expire_logs_seconds

    参考命令:

    set global max_connections = 1000;
    set persist max_connections = 1000;
    
    // 7天  86400 * 7
    // 1天  86400
    set global binlog_expire_logs_seconds = 86400 * 7;
    set persist binlog_expire_logs_seconds = 86400 * 7;
    

    时区设置

    确保MySQL 的时区设置为 GMT+8

  • 创建数据库帐号

    参考命令:

    create user 'user'@'%' identified with mysql_native_password  by 'your_password';
    
  • 创建 database

    参考命令:

    create database `user` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
  • 授予权限

    将 database 的权限授予对应的帐号

    参考命令:

    grant all privileges on `user`.* to 'user'@'%' with grant option;
    
  • 授予 SUPER 权限 由于 部分帐号 需要创建 触发器,故,需要 SUPER 权限 涉及帐号有 user、user_authz、cas_server

    参考命令:

    grant SUPER on *.* to 'user'@'%';
    grant SUPER on *.* to 'user_authz'@'%';
    grant SUPER on *.* to 'cas_server'@'%';
    
    grant SUPER on *.* to 'tmp_data'@'%';
    
  • 备份与还原

    参考命令: 备份:

    mysqldump -u root -p cas_server > cas_server.sql
    mysqldump -u root -p token_server > token_server.sql
    mysqldump -u root -p user > user.sql
    mysqldump -u root -p user_authz > user_authz.sql
    mysqldump -u root -p agent_service > agent_service.sql
    

    还原:

    mysql -u root -p cas_server < cas_server.sql
    mysql -u root -p token_server < token_server.sql
    mysql -u root -p user < user.sql
    mysql -u root -p user_authz < user_authz.sql
    mysql -u root -p agent_service < agent_service.sql
    

Harbor 准备及相关说明

  • 创建 devops 帐号

    用于 rancher 部署时拉取镜像

    用户管理 下 创建用户 如 devops

  • 镜像同步

    https://harbor.supwisdom.com 中同步镜像

    仓库管理 下 新建目标

    supwisdom    https://harbor.supwisdom.com    rancher.devops / PWMgP85qiLFC
    

    同步管理 下 新建规则

    thirdparty-agent-service      thirdparty-agent-service/*
    
    authx-service                 authx-service/*
    
    user-data-service             goa/*
    user-authorization-service    user-authorization-service/*
    personal-security-center      personal-security-center/*
    
    jobs-server                   jobs-server/*
    
    cas-server                    cas-server/*
    token-server                  token-server/*
    

    同步规则,创建完成后,进行镜像同步

    选择某个同步规则,点击 同步,等待任务完成

  • 授予 devops 帐号 对各个项目的 访客 权限

    项目 下,点击 项目名称,进入到 成员,添加用户,查找用户 devops,选择角色 访客,确定,添加即可

Rancher 准备及相关说明

  • 商店设置

    进入 全局 - 集群(具体名称视项目安装而定) - 工具 - 商店设置,添加应用商店

    名称:supwisdom 商店URL地址:https://e.coding.net/supwisdom/charts/charts.git 分支:master 范围:选择cluster

  • 创建项目

    进入 全局 - 集群(具体名称视项目安装而定) - 项目/命名空间,添加项目

    输入 项目名称,保存

    本产品所须创建的项目名称为:authx-platform

  • 启动应用

    进入 全局 - 集群(具体名称视项目安装而定) - 项目(某个项目)

    进入 应用商店

    点击 启动,在应用列表中 找到 相关应用

    点击 该应用,选择模板版本(一般选择最新的版本),根据情况设置 配置选项,启动 即可

    本产品所须的相关应用清单:

    minio               Minio文件服务
    
    agent-service       Agent Service 代理服务
    
    authx-service       用户授权相关服务
    
    jobs-server         同步服务
    
    cas-server          认证(CAS 认证 + Token Server)
    
  • 确定命名空间

    本产品安装过程中所须的命名空间如下:

    authx-minio         Minio文件服务
    
    agent-service       Agent Service 代理服务
    
    authx-service       用户授权相关服务
    
    jobs-server         同步服务
    
    cas-server          认证(CAS 认证 + Token Server)
    

域名准备

  • 确定域名

    首先明确是否使用泛域名,如:*.paas.xxx.edu.cn,或 直接使用学校域名 xxx.edu.cn

    本产品安装需要的域名如下:

    authx-minio.paas.xxx.edu.cn                 文件服务
    
    security-center.paas.xxx.edu.cn             安全中心
    
    cas.paas.xxx.edu.cn                         CAS 认证(视具体情况,可调整)
    token.paas.xxx.edu.cn                       Token 认证(APP适用)
    

    如果使用 学校域名,则去除 .paas 即可,同时申请开通相关域名

开始安装

数据库安装(略)

  • 确定服务地址、端口

    明确MySQL 数据库的 IP、端口

数据库创建

  • 数据库帐号

    以下是 各服务对应的数据库帐号

    服务 | 数据库帐号

    • | - 第三方代理服务 thridparty-agent-service | agent_service
    • | - 用户服务 user-data-service | user 授权服务 user-authorization-service | user_authz
    • | - 认证服务 cas-server | cas_server 认证服务(APP适用) token-server | token_server
    • | - v4认证迁移数据 | tmp_data

    命令: 请修改命令中的 your_password 为实际的数据库用户的密码

    create user 'agent_service'@'%' identified with mysql_native_password  by 'your_password';
    
    create user 'user'@'%' identified with mysql_native_password  by 'your_password';
    create user 'user_authz'@'%' identified with mysql_native_password  by 'your_password';
    create user 'cas_server'@'%' identified with mysql_native_password  by 'your_password';
    create user 'token_server'@'%' identified with mysql_native_password  by 'your_password';
    
    create user 'tmp_data'@'%' identified with mysql_native_password  by 'your_password';
    
  • 数据库

    以下是 各服务对应的数据库

    服务 | 数据库

    • | - 第三方代理服务 thridparty-agent-service | agent_service
    • | - 用户服务 user-data-service | user 授权服务 user-authorization-service | user_authz
    • | - 认证服务 cas-server | cas_server 认证服务(APP适用) token-server | token_server
    • | - v4认证迁移数据 | tmp_data

    命令:

    create database `agent_service` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
    create database `user` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    create database `user_authz` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    create database `cas_server` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    create database `token_server` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
    create database `tmp_data` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
  • 数据库权限授予

    将 database 的权限授予对应的帐号

    命令:

    grant all privileges on `agent_service`.* to 'agent_service'@'%' with grant option;
    
    grant all privileges on `user`.* to 'user'@'%' with grant option;
    grant all privileges on `user_authz`.* to 'user_authz'@'%' with grant option;
    grant all privileges on `cas_server`.* to 'cas_server'@'%' with grant option;
    grant all privileges on `token_server`.* to 'token_server'@'%' with grant option;
    
    grant all privileges on `tmp_data`.* to 'tmp_data'@'%' with grant option;
    
  • SUPER 权限授予

    由于 部分帐号 需要创建 触发器,故,需要 SUPER 权限 涉及帐号有 user、user_authz、cas_server

    命令:

    grant SUPER on *.* to 'user'@'%';
    grant SUPER on *.* to 'user_authz'@'%';
    grant SUPER on *.* to 'cas_server'@'%';
    
    grant SUPER on *.* to 'tmp_data'@'%';
    
  • 用户数据的交换帐号

    待部署完成后操作

    如果,存在数据交换 须将组织机构数据、帐号数据 同步到用户服务的数据库的 则,需要创建一个 交换用的数据库帐号(user_trans),并为该帐号授予 表 user.TMP_ORGANIZATION_ORIGIN、user.TMP_ACCOUNT_ORIGIN 的读写操作的权限

    命令:

    create user 'user_trans'@'%' identified with mysql_native_password  by 'your_password';
    
    grant select on `user`.`TMP_ORGANIZATION_ORIGIN` to 'user_trans'@'%';
    grant insert on `user`.`TMP_ORGANIZATION_ORIGIN` to 'user_trans'@'%';
    grant update on `user`.`TMP_ORGANIZATION_ORIGIN` to 'user_trans'@'%';
    grant delete on `user`.`TMP_ORGANIZATION_ORIGIN` to 'user_trans'@'%';
    
    grant select on `user`.`TMP_ACCOUNT_ORIGIN` to 'user_trans'@'%';
    grant insert on `user`.`TMP_ACCOUNT_ORIGIN` to 'user_trans'@'%';
    grant update on `user`.`TMP_ACCOUNT_ORIGIN` to 'user_trans'@'%';
    grant delete on `user`.`TMP_ACCOUNT_ORIGIN` to 'user_trans'@'%';
    
    grant select on `user`.`TMP_ORGANIZATION_TRANS` to 'user_trans'@'%';
    grant insert on `user`.`TMP_ORGANIZATION_TRANS` to 'user_trans'@'%';
    grant update on `user`.`TMP_ORGANIZATION_TRANS` to 'user_trans'@'%';
    grant delete on `user`.`TMP_ORGANIZATION_TRANS` to 'user_trans'@'%';
    
    grant select on `user`.`TMP_ACCOUNT_TRANS` to 'user_trans'@'%';
    grant insert on `user`.`TMP_ACCOUNT_TRANS` to 'user_trans'@'%';
    grant update on `user`.`TMP_ACCOUNT_TRANS` to 'user_trans'@'%';
    grant delete on `user`.`TMP_ACCOUNT_TRANS` to 'user_trans'@'%';
    

rancher 部署(应用商店)

minio

命名空间: authx-minio

  • MINIO配置 模式: standalone

    Access Key: 1y8N@8R@a_2u Secret Key: 8pxlIe9#lN7Q

    域名: authx-minio.paas.xxx.edu.cn ,请修改为实际的学校域名

    Default storageClass: <请选择存储类>

agent-service

命名空间: agent-service

  • 外部MYSQL-连接配置 外部MySQL host: <请填写数据库服务的IP地址> 外部MySQL port: <请填写数据库服务的端口>

  • AGENT SERVICE - MYSQL数据库配置 用户名: agent_service ,固定值、或按实际情况修改 密码: <请填写创建的数据库用户的密码> 数据库名: agent_service ,固定值、或按实际情况修改

  • 文件服务设置 Minio Url: http://minio.authx-minio.svc.cluster.local:9000 ,若 minio 的命名空间有调整,请修改 Minio Access Key: 1y8N@8R@a_2u Minio Secret Key: 8pxlIe9#lN7Q

  • 邮箱服务配置 邮件发送模式: smtp SMTP Host: SMTP Port: SMTP Secure Mode: SMTP 用户名: SMTP 密码: SMTP 发件人名称:

  • 短信服务配置 短信发送模式: aliyun 对接阿里云的短信服务 阿里云短信接口地域: cn-hangzhou 阿里云短信接口Access Key: 阿里云短信接口Access Secret:

authx-service

命名空间: authx-service

  • REDIS配置 - 安全配置 Redis密码: 8KuwoslOiuw7H

    Default Storage Class: <请选择存储类>

  • RABBITMQ配置 - 安全配置 用户名: guest 密码: guest

  • MYSQL数据库配置 - 服务地址 MySQL服务 host: <请填写数据库服务的IP地址> MySQL服务 port: <请填写数据库服务的端口>

  • MYSQL数据库配置 - 用户服务

    用户名: user ,固定值、或按实际情况修改 密码: <请填写创建的数据库用户的密码> 数据库名: user ,固定值、或按实际情况修改

  • MYSQL数据库配置 - 授权服务

    用户名: user_authz ,固定值、或按实际情况修改 密码: <请填写创建的数据库用户的密码> 数据库名: user_authz ,固定值、或按实际情况修改

  • 域名全局设置

    根域名: paas.<school>.edu.cn ,请修改为实际的学校域名

  • 域名配置 - 安全中心

    子域名: security-center ,若须修改,根据实际情况修改即可

  • POA 设置

    POA网关地址: http://poa.paas.<school>.edu.cn ,请设置为 poa 网关的外网地址 POA SA地址: 请设置为 poa-sa 管理接口的 k8s 内部地址(根据实际部署的 POA 进行调整)

  • 依赖服务 - 文件服务设置

    Minio外网地址: http://authx-minio.paas.<school>.edu.cn ,请设置为 minio 的外网地址

  • 依赖服务 - 认证设置

    CAS认证地址: http://cas.paas.<school>.edu.cn/cas ,请设置为 cas 认证的外网地址

  • 依赖 API - AGENT SERVICE

    Agent Service API内部地址: http://agent-service.agent-service.svc.cluster.local:8080 ,固定值,若 agent-service 的命名空间有调整,请修改

    Agent Service 文件上传路径: /api/v1/tpas/file/minio ,一般不用修改 Agent Service 邮件发送路径: /api/v1/tpas/mail/smtp ,一般不用修改 Agent Service 短信发送路径: /api/v1/tpas/sms/aliyun , 若不使用阿里云短信服务,须修改

  • 依赖 API - CAS SERVER

    CAS内部地址: http://cas-server-webapp.cas-server.svc.cluster.local:8080/cas ,固定值,若 cas-server 的命名空间有调整,请修改 CAS SA API内部地址: http://cas-server-sa.cas-server.svc.cluster.local:8080 ,固定值,若 cas-server 的命名空间有调整,请修改

jobs-server

命名空间: jobs-server

  • 外部RABBITMQ - 连接配置

    外部RabbitMQ host: authx-service-rabbitmq.authx-service.svc.cluster.local ,连接 authx-service 的rabbitmq, 若 authx-service 的命名空间有调整,请修改 外部RabbitMQ port: 5672

  • RABBITMQ配置 - 安全配置

    用户名: guest 密码: guest

  • 用户数据 - 数据源配置

    JDBC URL: jdbc:mysql://authx-service-mysql-server.authx-service.svc.cluster.local:3306/user?serverTimezone=Asia/Shanghai ,连接 authx-service 的mysql,若 authx-service 的命名空间有调整,请修改 JDBC用户名: user JDBC密码: <请填写创建的数据库用户的密码>

  • 用户数据 - API设置

    GOA API地址: http://authx-service-user-data-service-goa.authx-service.svc.cluster.local:8080 ,固定值,若 authx-service 的命名空间有调整,请修改

cas-server

命名空间: cas-server

  • REDIS配置 - 安全配置 Redis密码: 8KuwoslOiuw7H

    Default Storage Class: <请选择存储类>

  • RABBITMQ配置 - 安全配置 用户名: guest 密码: guest

  • MYSQL数据库配置 - 服务地址 MySQL服务 host: <请填写数据库服务的IP地址> MySQL服务 port: <请填写数据库服务的端口>

  • MYSQL数据库配置 - CAS 认证

    用户名: cas_server ,固定值、或按实际情况修改 密码: <请填写创建的数据库用户的密码> 数据库名: cas_server ,固定值、或按实际情况修改

  • MYSQL数据库配置 - Token Server

    用户名: token_server ,固定值、或按实际情况修改 密码: <请填写创建的数据库用户的密码> 数据库名: token_server ,固定值、或按实际情况修改

  • 域名全局设置

    根域名: paas.<school>.edu.cn ,请修改为实际的学校域名

  • 域名配置 - CAS 认证

    子域名: cas ,若须修改,根据实际情况修改即可

  • 域名配置 - Token Server

    子域名: token ,若须修改,根据实际情况修改即可

  • POA 设置

    POA网关地址: http://poa.paas.<school>.edu.cn ,请设置为 poa 网关的外网地址 POA SA地址: 请设置为 poa-sa 管理接口的 k8s 内部地址(根据实际部署的 POA 进行调整)

  • 依赖 API - AGENT SERVICE

    Agent Service 内部地址: http://agent-service.agent-service.svc.cluster.local:8080 ,固定值,若 agent-service 的命名空间有调整,请修改

    Agent Service 文件上传路径: /api/v1/tpas/file/minio ,一般不用修改 Agent Service 邮件发送路径: /api/v1/tpas/mail/smtp ,一般不用修改 Agent Service 短信发送路径: /api/v1/tpas/sms/aliyun , 若不使用阿里云短信服务,须修改

  • 依赖 API - 用户服务

    用户数据API内部地址: http://authx-service-user-data-service-goa.authx-service.svc.cluster.local:8080 ,固定值,若 authx-service 的命名空间有调整,请修改

  • 依赖 API - 授权服务

    用户授权API内部地址: http://authx-service-user-authz-service-sa.authx-service.svc.cluster.local:8080 ,固定值,若 authx-service 的命名空间有调整,请修改

  • 动态密码

    动态密码短信标题: 认证中心,固定值 动态密码短信模板: 请修改为合适的短信模板

  • JWT 公私钥

    参考 certs/jwt/readme.md 生成公私钥pem,修改相关配置(请使用与 token-server 一致的公私钥)

    JWT私钥: JWT公钥:

  • CAS认证 - 图片验证码

    启用图片验证码: 是 or 否

  • CAS认证 - 持久卷

    Default Storage Class: <请选择存储类>

  • CAS认证 - DATAX数据库配置

    数据源JdbcUrl: jdbc:mysql://authx-service-mysql-server.authx-service.svc.cluster.local:3306/user?serverTimezone=Asia/Shanghai ,连接 authx-service 的mysql,若 authx-service 的命名空间有调整,请修改 数据源用户名: user 数据源密码: <请填写创建的数据库用户的密码>

  • TOKEN SERVER - 消息服务

    是否开启消息服务: true or false,默认 false 消息服务应用ID: 由消息服务提供

  • TOKEN SERVER - POA CLIENT

    Client Id: 从 POA 进行申请 Client Secret: 从 POA 进行申请

  • TOKEN SERVER - 人脸服务配置 可与 新开普人脸平台 或 百度人脸服务 进行对接

    人脸登录类型: aiface: 新开普人脸, aipface: 百度人脸

    以下配置从 新开普人脸平台 申请 新开普人脸登录Url: 新开普人脸登录App Key: 新开普人脸登录App Secret: 新开普人脸登录Secret Key: 新开普人脸登录Term Code:

    以下配置从 百度开放平台 申请 百度人脸登录App Id: 百度人脸登录Api Key: 百度人脸登录Secret Key: