iam

module
v2.0.0 Latest Latest
Warning

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

Go to latest
Published: May 1, 2026 License: Apache-2.0

README

IAM

IAM 是方寸山项目的身份与访问管理服务,当前运行单元是 iam-apiserver。它提供认证、Token/JWKS、授权判定、角色与策略管理、用户档案、ProfileLink 档案关系、IDP 集成和 SDK 接入能力。

Go Version License

当前事实源

类型 位置 说明
运行入口 cmd/apiserver/apiserver.go iam-apiserver 进程入口
生命周期 internal/apiserver/process 配置、资源、容器、HTTP/gRPC、后台任务与关闭流程
组合根 internal/apiserver/container AuthN、AuthZ、User、IDP、Suggest、CacheGovernance 模块装配
REST 适配 internal/apiserver/transport/rest 路由注册、HTTP handler、中间件与 debug 面
gRPC 适配 internal/apiserver/transport/grpc proto 服务注册与 transport mapper
应用/领域/基础设施 internal/apiserver/applicationinternal/apiserver/domaininternal/apiserver/infra 用例、领域模型、MySQL/Redis/Casbin/JWT/Outbox 等实现
REST 契约 api/rest OpenAPI 3.1 契约
gRPC 契约 api/grpc Proto v2 契约与生成代码
SDK pkg/sdk Go SDK、服务认证、JWT 验签、AuthZ 与 Identity 客户端

冲突时优先级是:源码与运行时行为、机器契约与配置、当前维护文档、历史文档与归档材料。

核心能力

  • AuthN:v2 显式登录、Refresh Token、Access Token 撤销、会话校验、Service Token、JWKS 发布与管理端保护。
  • AuthZ:REST 与 gRPC 判定、授权快照、角色/资源/策略/assignment wire term,内部实现以 rolebinding 为准。
  • Identity:用户资料、儿童档案、ProfileLink 档案关系查询与写入。
  • IDP:微信应用配置与登录所需 IDP 能力。
  • Suggest:GET /api/v2/suggest/profile 儿童档案联想搜索。
  • CacheGovernance:只读缓存目录、family 状态和 debug 治理面。
  • Transactional Outbox:授权版本变更等领域事件通过 outbox relay 持久发布。

快速开始

make deps
make build
make test

开发配置默认入口:

make run APISERVER_CONFIG=configs/apiserver.dev.yaml
curl http://localhost:8080/health
curl http://localhost:8080/.well-known/jwks.json

常用验证:

make docs-hygiene
make api-validate
go test ./...

make api-validate 会运行 Spectral Docker 镜像和本仓库的 OpenAPI/路由契约检查;本机需要 Docker daemon 可用。

API 入口

REST 契约以 OpenAPI 文件为准:

gRPC 契约以 proto 文件为准:

说明性 API 文档见 api/README.mdapi/rest/README.mdapi/grpc/README.md

文档导航

开发约定

  • 代码变更触及路由、proto、OpenAPI、配置、迁移或架构边界时,同步更新文档。
  • 活跃文档不得依赖 docs/_archive 中的历史事实。
  • 提交前至少运行 make docs-hygiene;涉及 API 契约时运行 make api-validate
  • 文档写作规范见 docs/CONTRIBUTING-DOCS.md

Directories

Path Synopsis
api
cmd
apiserver command
internal
apiserver/application/authn/jwks
Package jwks provides Authn application use cases for JWKS publication and JWKS key administration.
Package jwks provides Authn application use cases for JWKS publication and JWKS key administration.
apiserver/application/authz/role
Package role 角色应用服务
Package role 角色应用服务
apiserver/application/authz/rolebinding
Package rolebinding 角色绑定命令应用服务。
Package rolebinding 角色绑定命令应用服务。
apiserver/docs
Package docs Code generated by swaggo/swag.
Package docs Code generated by swaggo/swag.
apiserver/domain/authz
Package authz contains authorization business concepts that are independent from the runtime policy engine used to evaluate them.
Package authz contains authorization business concepts that are independent from the runtime policy engine used to evaluate them.
apiserver/domain/authz/policy
Package policy 策略领域包
Package policy 策略领域包
apiserver/domain/authz/resource
Package resource 资源领域包
Package resource 资源领域包
apiserver/domain/authz/role
Package role 角色领域包
Package role 角色领域包
apiserver/infra/crypto
Package crypto provides generic authentication cryptography adapters.
Package crypto provides generic authentication cryptography adapters.
apiserver/infra/token/jwt
Package jwt implements IAM access/service token encoding with JWS compact JWT.
Package jwt implements IAM access/service token encoding with JWS compact JWT.
apiserver/infra/token/keyset
Package keyset implements signing-key lifecycle and JWKS publishing infrastructure.
Package keyset implements signing-key lifecycle and JWKS publishing infrastructure.
apiserver/transport/rest/authz/dto
Package dto 赋权相关的 DTO 定义
Package dto 赋权相关的 DTO 定义
apiserver/transport/rest/authz/handler
Package handler REST API 处理器基础
Package handler REST API 处理器基础
apiserver/transport/rest/idp
Package restful IDP 模块 REST API 路由注册
Package restful IDP 模块 REST API 路由注册
apiserver/transport/rest/idp/handler
Package handler IDP 模块 REST API 处理器基础
Package handler IDP 模块 REST API 处理器基础
apiserver/transport/rest/idp/request
Package request 定义 IDP 模块 REST API 请求结构
Package request 定义 IDP 模块 REST API 请求结构
apiserver/transport/rest/idp/response
Package response 定义 IDP 模块 REST API 响应结构
Package response 定义 IDP 模块 REST API 响应结构
pkg/code
Package code defines shared error codes used across the iam services.
Package code defines shared error codes used across the iam services.
pkg/grpc
Package grpc 提供通用的 gRPC 服务器基础设施
Package grpc 提供通用的 gRPC 服务器基础设施
pkg/middleware
定义多个 gin 中间件
定义多个 gin 中间件
pkg/server
Package server 定义了所有平台通用的通用 apiserver
Package server 定义了所有平台通用的通用 apiserver
pkg
app
auth
Package auth encrypt and compare password string.
Package auth encrypt and compare password string.
core
Package core 实现了一些核心功能,用于apimachinery
Package core 实现了一些核心功能,用于apimachinery
sdk
Package sdk 提供 IAM 官方 Go SDK 的统一入口。
Package sdk 提供 IAM 官方 Go SDK 的统一入口。
sdk/_examples
Package _examples 包含 SDK 使用示例
Package _examples 包含 SDK 使用示例
sdk/_examples/authz command
授权判定(PDP)示例
授权判定(PDP)示例
sdk/_examples/basic command
基础用法示例
基础用法示例
sdk/_examples/mtls command
mTLS 生产环境配置示例
mTLS 生产环境配置示例
sdk/_examples/service_auth command
服务间认证示例
服务间认证示例
sdk/_examples/verifier command
Token 验证示例
Token 验证示例
sdk/auth/client
Package client 提供认证相关 gRPC 客户端能力。
Package client 提供认证相关 gRPC 客户端能力。
sdk/auth/loginv2
Package loginv2 provides the REST AuthN v2 explicit login client.
Package loginv2 provides the REST AuthN v2 explicit login client.
sdk/authz
Package authz 提供授权判定(PDP)能力。
Package authz 提供授权判定(PDP)能力。
sdk/config
Package config 提供 IAM SDK 的公开配置结构与加载入口。
Package config 提供 IAM SDK 的公开配置结构与加载入口。
sdk/identity
Package identity 提供身份管理和档案关系查询能力。
Package identity 提供身份管理和档案关系查询能力。
sdk/idp
Package idp 提供身份提供者(IDP)能力。
Package idp 提供身份提供者(IDP)能力。
sdk/internal/observability
Package observability 提供可观测性支持
Package observability 提供可观测性支持
sdk/internal/transport
Package transport 提供 gRPC 传输层功能
Package transport 提供 gRPC 传输层功能
tenant
Package tenant 定义 IAM 多租户在请求/Casbin/授权表中的统一租户标识约定。
Package tenant 定义 IAM 多租户在请求/Casbin/授权表中的统一租户标识约定。
web

Jump to

Keyboard shortcuts

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