Skip to content

术语表

第一次接触 Muer 时,几个核心词容易被混用。这里按“从人到权限再到资源”的顺序给出一句话定义,并标注每项最终由谁决定。

术语 一句话解释 谁负责
Identity(身份) 宿主用户体系中一个可登录的主体。Muer 不持有你的账号、密码,只通过 IdentityAuthenticator 在登录时把它投影为 Principal。 宿主持有
Principal(主体 / IamPrincipal) 一次已认证请求所代表的主体投影,携带 userId、identityId、identityDomain、activeProfileId、templateVersionId、clientType、authorizationVersion 等字段。 IdentityAuthenticator 生成,Muer 校验
identityDomain(身份域) 主体所属域(如 LOCAL、SSO),用于把一个框架/租户的授权语义与其他域隔离。请求 domain 与它不匹配会得到 IDENTITY_DOMAIN_MISMATCH。 宿主声明
clientType(客户端类型) 登录与请求携带的客户端类型(如 WEB)。必须与 muer.client-types 允许列表精确匹配,并进一步受 Profile 的 clientTypes 约束。 登录请求 + 配置
术语 一句话解释 谁负责
Permission(权限 / permissionCode) 系统里一个稳定的“业务能力”标识,如 document:read。开发者通过 PermissionDefinitionProvider 声明,Muer 幂等注册。 开发者声明
Role(角色) cloud.muer.core.model.Role,可选的权限分组元数据。它只把一组原子 Permission 聚合成有名字的集合,不是最终授权依据。 可选元数据

组织:Template / Version / Profile / Scope

Section titled “组织:Template / Version / Profile / Scope”
术语 一句话解释 谁负责
Permission Template(权限模板) 一组可复用权限的容器(如“文档读者”)。 管理员
Template Version(模板版本) 模板在某时刻的权限快照,状态为 DRAFT / PUBLISHED / RETIRED。只有 PUBLISHED 版本才会实际授予 Profile。 管理员
AuthorizationProfile(档案 / Profile) 一个用户身份的一个授权上下文:templateVersionId + clientTypes + scopes + 有效/撤销状态。Profile 引用的是“模板版本”而非“模板”。 管理员
ResourceScope(资源范围 / Scope) (scopeType, scopeRefId, accessMode),如 ("PROJECT","101",READ),限定某 permission 在哪些资源上生效。“能做什么”是 Permission,“在哪里做”是 Scope。 管理员 / 宿主
ResourceDescriptor(资源描述符) 宿主把一个具体业务对象(如 Document 1001)映射成的授权输入,包含资源类型、ID 与父路径(parentPath)。 宿主 Resolver
术语 一句话解释 谁负责
Authorization Version(授权版本) IamPrincipal.authorizationVersion,参与令牌失效判断的版本号;递增它可让旧令牌对应的授权随之失效。 Muer 运行时
Session(会话) 持久化授权上下文。MySQL 保存权威 Session 记录;Redis 只保存 opaque Token 到 Session 的索引。 Muer
AuthorizationDecision AuthorizationEngine 的决策结果:allowed + decisionCode + steps。拒绝时 decisionCode 给出根因(如 PERMISSION_DENIED、SCOPE_DENIED)。 Muer
宿主用户表
└─ IdentityAuthenticator 投影 → IamPrincipal (userId/identityDomain/clientType/...)
PermissionDefinitionProvider 声明原子 Permission
管理员把 Permission 组进 Template → Version(PUBLISHED)
Profile = 用户身份 × 模板版本 × Scope × clientTypes
每次请求 → AuthorizationEngine 按 Permission + Scope 决策 → AuthorizationDecision
词 它不是什么
Identity 不是 Muer 建的账号,而是宿主的用户
Role 不是最终授权依据(运行时仍按原子 Permission)
Profile 不是 Role 的别名,而是“模板版本 + 资源范围”的授权上下文
Scope 不是权限本身,而是权限“在哪里”生效
Redis 不是授权权威,只是 opaque Token 索引(MySQL 才是持久权威)
  • 想知道每个类型在认证链路里的顺序:看快速开始。
  • 想知道拒绝的每种原因:看错误码。
  • 想排查一个 403:看排障。