Skip to content

36node/auth

Repository files navigation

36node auth service

CI unstable

Stargate auth 认证和用户服务

参考文档 Auth 服务设计 将 auth 模块独立成一个服务,并对它进行重构,使其符合总体设计目标。

领域实体

  • User: 用户,代表系统内所有用户,包括 B 端管理员和 C 端用户 。
  • Namespace:命名空间,代表组织架构层级,这个层级也可以作为用户和其它资源的属性。
  • Session: 会话,用户和系统之间建立的会话抽象,会话中包 token、权限、ACL、refreshKey 等属性。
  • Role: 角色,权限的集合。
  • ThirdParty: 第三方授权记录。

注意: Token 会存在于 Session 中,但是为了安全起见又不会存储在数据库中。 Session 一定是属于用户的,它可以被赋给设备或者服务使用。

session 可以在 auth 中管理,也可以自行管理。

Installation

pnpm install

Running the app

# development
$ pnpm dev


# debug mode
$ pnpm debug

# build dist
$ pnpm build

# production mode
$ pnpm start

Test

# unit tests
$ pnpm test

# e2e tests
$ pnpm test:e2e

# test coverage
$ pnpm test:cov

env

开发所需的默认配置已内置到 src/config/config.ts 中,大部分情况下无需额外配置即可启动(需要本地 MongoDB 和 Redis)。

如需覆盖默认值,复制 .env.example.env.local 并修改:

cp .env.example .env.local

.env.local 中定义的环境变量会覆盖 config.ts 中的默认值。生产环境请通过容器编排(docker-compose、k8s 等)注入环境变量。

配置 Github 的 oauth 登录

# GITHUB
GITHUB_CLIENT_ID=Iv23lizBaVPIiABBCHaz
GITHUB_CLIENT_SECRET=041f46399c1396ec27d16851c1aa2aa479a3f5a5
GITHUB_AUTHORIZE_URL=https://github.com/login/oauth/authorize
GITHUB_ACCESS_TOKEN_URL=https://github.com/login/oauth/access_token
GITHUB_USER_INFO_URL=https://api.github.com/user
GITHUB_TID_FIELD=login

如何发布一个临时的 sdk 包

生成 openapi.json

## 启动一下工程就会自动生成 openapi.json 文件
NODE_ENV=development p dev

生成 sdk

p gen:sdk

发布 sdk

## 进入 sdk 文件夹
cd sdk

## 安装依赖
pnpm install

## 编译
pnpm build

## 发布 一个 prerelease
npm version prerelease
npm publish

关于时间戳

本系统在没有特殊说明的情况下,都是指 毫秒时间戳

User ID Migration Runbook

将历史用户 _id 从 ObjectId 迁移为其字符串形式(ObjectId.toString()),并保持新用户支持显式 id 或自动 nanoid

执行前提:

export USER_ID_MIGRATION_MAINTENANCE_MODE=true

建议执行顺序:

# 1) 预检查(有悬挂引用会直接失败)
pnpm migrate:user-ids:precheck

# 2) 干跑
pnpm migrate:user-ids:dry-run

# 3) 正式迁移(建议首轮保留备份)
pnpm migrate:user-ids:keep-backup

# 4) 迁移后验证
pnpm migrate:user-ids:verify

回滚:

# backup 名称来自迁移输出的 backupCollectionName
pnpm migrate:user-ids:rollback -- --backup=<backupCollectionName> --confirm

如果希望回滚时保留当前失败数据副本:

pnpm migrate:user-ids:rollback -- --backup=<backupCollectionName> --confirm --keep-current-users

References

About

Auth service used by 36node team

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages