客户端形态与权限模型

PandaAuth 的客户端注册包含三个维度:客户端类型(决定是否携带密钥)、 权限声明(决定可用的端点与授权类型)与回调白名单(重定向与登出回调,严格匹配)。

三种客户端形态

形态典型场景授权类型PKCE密钥
机密 Web 客户端传统服务端渲染 Web 应用授权码 + 刷新令牌推荐有(服务端保管)
公共客户端SPA、移动端、桌面端授权码 + 刷新令牌强制无
服务间(M2M)后台服务、守护任务客户端凭证不适用有

要点:

  • 公共客户端不持有密钥,安全性完全依赖授权码 + PKCE;生产全局要求 PKCE, 公共客户端注册中 PKCE 为必选要求。
  • 机密客户端的密钥只应出现在服务端;密钥支持由管理员轮换,轮换后旧密钥立即失效。
  • M2M 客户端没有用户上下文,令牌代表客户端本身,scope 由注册的权限声明约束。

权限声明(Permissions)

客户端注册声明它能做什么,未声明的端点与授权类型一律拒绝。声明按组划分:

  • 端点:authorize / token / end-session / revocation / introspection;
  • 授权类型:authorization_code / client_credentials / refresh_token;
  • 响应类型:当前仅开放 code;
  • Scope:openid、profile、email、roles、offline_access 与自定义业务 scope(形如 api)。

回调白名单

redirect_uri 与 post_logout_redirect_uri 按注册白名单严格匹配(绝对地址), 不匹配的请求直接失败。修改白名单由管理通道办理并记录审计。

下一步