keyauth-tz

command module
v1.0.33 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 27, 2023 License: MulanPSL-2.0 Imports: 1 Imported by: 0

README

keyauth

用户中心

Mongodb

1、如何连接mongoDB,以及mongodb的配置 2、基于mongodb的CRUD + bson struct tag: 用于mongodb保存时,完成object -》 + "id": 内置的BSON TAG,类似于MySQL主键, "": 代表的倒序索引,不用额外多创建一个index索引,沿用 + 通过DB对象的Collection对象来进行CRUD操作

对接注册中心

注册中心使用mcenter服务: https://github.com/infraboard/mcenter

主题: 服务发现

  • 服务注册
    • 1、添加注册中心的配置
    • 2、初始化全局的注册中心客户端实例 rpc.c()对象
    • 3、GRPC服务启动时,调用注册中心的客户端把当前GRPC监听的地址注册过去
    • 4、当GRPC服务停止时,注销注册中心的实例
  • 服务解析
    • 1、通过GRPC的 NameResolver 来进行服务的发现
    • 2、通过加载注册中心的GRPC客户端: rpc.C() -- ?, 因为Mcenter
    • 提供的的Resolver需要依赖注册中心的客户端来进行服务实例的搜索
    • 3、在服务启动的时候 初始化的时候 就完成以上的步骤
    • 4、GRPC客户端 配置注册中心的访问凭证,以及需要访问的服务的名称,Resolver就能完成服务地址的解析

2023-10-23T23:51:53.928+0800 INFO [INIT] cmd/start.go:153 log level: debug 2023-10-23T23:51:54.033+0800 INFO [init] cmd/init.go:50 init app keyauth success, client_id: pvOi2ijhKVwkmXqinpGh7Amj, client_secret: YmiSbLoAWtliEfgI0ZgzNwnR94n5oacZ 2023-10-23T23:51:54.034+0800 INFO [init] cmd/init.go:50 init app maudit success, client_id: dzqcdji50MeAQNl7AHUAofQh, client_secret: eVMqyn3HZ1Xq6xSZGrb6BfdLE1QGeElQ 2023-10-23T23:51:54.035+0800 INFO [init] cmd/init.go:50 init app demo success, client_id: ZCDfeZYFadGMpkDYnXNrRKRF, client_secret: tsCLzX9bjI5izMyDsYjDi8xSlOIJ5jGh

准备完成 Keyauth的客户端,CMDB 就可以通过客户端完成Keyauth的交互

CMDB 如何使用Keyauth的客户端进行Token的校验,需要提供一个HTTP的认证中间件:

因为Keyauth是用户中心,HTTP的权限中间件需要和keyauth交互,依赖keyauth的SDK,因此我们把中间件去由keyauth自己提供

提供

架构图

项目说明

├── protocol                       # 脚手架功能: rpc / http 功能加载
│   ├── grpc.go              
│   └── http.go    
├── client                         # 脚手架功能: grpc 客户端实现 
│   ├── client.go              
│   └── config.go    
├── cmd                            # 脚手架功能: 处理程序启停参数,加载系统配置文件
│   ├── root.go             
│   └── start.go                
├── conf                           # 脚手架功能: 配置文件加载
│   ├── config.go                  # 配置文件定义
│   ├── load.go                    # 不同的配置加载方式
│   └── log.go                     # 日志配置文件
├── dist                           # 脚手架功能: 构建产物
├── etc                            # 配置文件
│   ├── xxx.env
│   └── xxx.toml
├── apps                            # 具体业务场景的领域包
│   ├── all
│   │   |-- grpc.go                # 注册所有GRPC服务模块, 暴露给框架GRPC服务器加载, 注意 导入有先后顺序。  
│   │   |-- http.go                # 注册所有HTTP服务模块, 暴露给框架HTTP服务器加载。                    
│   │   └── internal.go            #  注册所有内部服务模块, 无须对外暴露的服务, 用于内部依赖。 
│   ├── book                       # 具体业务场景领域服务 book
│   │   ├── http                   # http 
│   │   │    ├── book.go           # book 服务的http方法实现,请求参数处理、权限处理、数据响应等 
│   │   │    └── http.go           # 领域模块内的 http 路由处理,向系统层注册http服务
│   │   ├── impl                   # rpc
│   │   │    ├── book.go          # book 服务的rpc方法实现,请求参数处理、权限处理、数据响应等 
│   │   │    └── impl.go           # 领域模块内的 rpc 服务注册 ,向系统层注册rpc服务
│   │   ├──  pb                    # protobuf 定义
│   │   │     └── book.proto       # book proto 定义文件
│   │   ├── app.go                 # book app 只定义扩展
│   │   ├── book.pb.go             # protobuf 生成的文件
│   │   └── book_grpc.pb.go        # pb/book.proto 生成方法定义
├── version                        # 程序版本信息
│   └── version.go                    
├── README.md                    
├── main.go                        # Go程序唯一入口
├── Makefile                       # make 命令定义
└── go.mod                         # go mod 依赖定义

快速开发

make脚手架

➜  keyauth git:(master) ✗ make help
dep                            Get the dependencies
lint                           Lint Golang files
vet                            Run go vet
test                           Run unittests
test-coverage                  Run tests with coverage
build                          Local build
linux                          Linux build
run                            Run Server
clean                          Remove previous build
help                           Display this help screen
  1. 使用安装依赖的Protobuf库(文件)
# 把依赖的probuf文件复制到/usr/local/include

# 创建protobuf文件目录
$ make -pv /usr/local/include/github.com/infraboard/mcube/pb

# 找到最新的mcube protobuf文件
$ ls `go env GOPATH`/pkg/mod/github.com/infraboard/

# 复制到/usr/local/include
$ cp -rf pb  /usr/local/include/github.com/infraboard/mcube/pb
  1. 添加配置文件(默认读取位置: etc/keyauth.toml)
$ 编辑样例配置文件 etc/keyauth.toml.book
$ mv etc/keyauth.toml.book etc/keyauth.toml
  1. 启动服务
# 编译protobuf文件, 生成代码
$ make gen
# 如果是MySQL, 执行SQL语句(docs/schema/tables.sql)
$ make init
# 下载项目的依赖
$ make dep
# 运行程序
$ make run

相关文档

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL