MLiev IAM 是一个基于 Go 语言开发的现代化企业级身份认证与访问管理(IAM)系统,集成了单点登录(SSO)功能。该系统采用分层架构设计,提供高性能、高可用、易扩展的身份认证和授权服务。
git clone <repository-url>
cd mliev-iam
cp config.yaml.example config.yaml
# 编辑 config.yaml 配置数据库和Redis连接
go mod download
go run main.go
docker build -t mliev-iam . docker run -p 8080:8080 mliev-iam
系统支持在运行时重新加载配置,无需重启进程:
方法一:使用系统信号
# 发送 SIGHUP 信号触发重载
kill -HUP <PID>
# 或使用脚本
./scripts/reload-config.sh signal
方法二:使用 API 接口
# 需要管理员权限
curl -X POST http://localhost:8080/api/admin/system/reload \
-H "Authorization: Bearer <access_token>"
# 或使用脚本
./scripts/reload-config.sh api
详细说明请参考:配置重载指南
启动服务后,访问以下端点:
GET /healthGET /health/simpleGET /GET /api/admin/system/infoPOST /api/admin/system/reload系统采用完整的RBAC权限控制模型,包含以下核心数据模型:
用户(User) ←→ 用户角色(UserRole) ←→ 角色(Role) ←→ 角色权限(RolePermission) ←→ 权限(Permission) ↓ ↓ ↓ 部门(Department) 层级结构 资源控制
UserRole): 支持审批流程、范围控制、时效管理RolePermission): 支持权限约束、条件匹配| 模型文件 | 说明 | 核心特性 |
|---|---|---|
user.go | 用户模型 | 状态管理、多属性、认证安全、部门关联 |
role.go | 角色模型 | 层级结构、数据权限范围、系统/自定义角色 |
permission.go | 权限模型 | 多类型权限、资源控制、层级继承、前端集成 |
department.go | 部门模型 | 组织架构、层级管理、负责人、成本中心 |
user_role.go | 用户角色关联 | 审批流程、范围控制、时效管理、主要角色 |
role_permission.go | 角色权限关联 | 权限约束、条件匹配、RBAC实现 |
所有模型均支持:
项目遵循严格的代码规范和最佳实践,详细的开发规范请参考 项目开发规范文档。
mliev-iam/ ├── app/ # 应用核心代码 │ ├── controller/ # 控制器层 │ ├── service/ # 服务层 │ ├── dao/ # 数据访问层 │ ├── model/ # 数据模型 │ │ ├── user.go # 用户模型(支持状态管理、多属性) │ │ ├── role.go # 角色模型(支持层级结构、数据权限) │ │ ├── permission.go # 权限模型(菜单/按钮/API/数据权限) │ │ ├── department.go # 部门模型(组织架构、层级管理) │ │ ├── user_role.go # 用户角色关联(审批流程、范围控制) │ │ └── role_permission.go # 角色权限关联(约束条件、时效管理) │ ├── dto/ # 数据传输对象 │ └── middleware/ # 中间件 ├── config/ # 配置管理 │ └── autoload/ # 自动加载配置 ├── internal/ # 内部包 │ ├── interfaces/ # 接口定义 │ └── pkg/ # 基础包 ├── static/ # 静态资源 ├── templates/ # 模板文件 └── _docs/ # 项目文档 ├── PROJECT_SPECIFICATION.md # 开发规范 └── TEMPLATE_INIT.md # 模板初始化
我们欢迎社区贡献!请阅读贡献指南并遵循以下步骤:
本项目采用 MIT License。
如有问题或建议,请通过以下方式联系:
© 2025 MLiev IAM. All rights reserved.