跳到正文
MuoCeon 文档中心
第三方 OAuth 接入参考

端点总表

所有对外端点、认证方式、缓存约束与用途。

约定:{issuer} 形如 https://id.example.com/v1/oauth,{origin} 是它的源,{consentUi} 是同意页前端地址(从元数据的 authorization_endpoint 读取)。

第三方会用到的端点

方法地址认证缓存用途
GET{consentUi}/authorize无(依赖用户登录态)不缓存授权入口,浏览器跳转目标
POST{issuer}/token客户端认证no-store换令牌 / 刷新 / 客户端凭据
POST{issuer}/revoke客户端认证no-store撤销令牌
POST{issuer}/introspect仅机密客户端no-store查询令牌是否有效
GET{issuer}/jwks无5 分钟令牌签名公钥
GET{origin}/v1/auth/userinfo用户访问令牌(auth 受众)不缓存读取用户信息

introspect 不对公开客户端开放:它等于「拿任意一枚令牌问服务器它还有效吗」,开放给公开客户端,任何拿到泄露令牌的一方都能免费确认令牌是否可用。

服务内部端点(第三方不要调用)

方法地址说明
POST{issuer}/preauthorize同意页前置校验:校验客户端与回调地址,返回展示素材与 consent_ticket(有效期 30 分钟)
POST{issuer}/authorize同意页提交授权决策:同时消费票据与身份断言,返回 JSON 格式的重定向地址(不是 302)

这两个端点只接受 POST + JSON,是给 MuoCeon 自己的同意页用的。标准客户端按 RFC 6749 发起 GET 会拿到 405——这也是为什么元数据里的 authorization_endpoint 指向同意页而不是这里。

账号自管理端点(第一方)

方法地址认证与 scope备注
GET{issuer}/grantsoauth 受众 + oauth:grants:read分页列出已授权应用,可按 kind=first_party|third_party 分段
DELETE{issuer}/grants/:clientIdoauth 受众 + oauth:grants:revoke带 did 只撤该设备,不带则撤该客户端全部会话;要求近期认证(max_age=300)

发现端点

地址规范
{origin}/.well-known/oauth-authorization-server/v1/oauthRFC 8414
{origin}/.well-known/openid-configuration/v1/oauthRFC 8414 路径形式
{issuer}/.well-known/openid-configurationOIDC Discovery
{origin}/.well-known/oauth-protected-resource/v1/authRFC 9728
{origin}/.well-known/oauth-protected-resource/v1/oauthRFC 9728
{origin}/.well-known/oauth-protected-resource/v1/accountRFC 9728

通用约束

  • 所有端点独立限流;触发时返回 429,带 Retry-After 头。
  • 令牌相关端点(token / revoke / introspect)的错误遵循 RFC 6749 §5.2,见 错误码。
  • 撤销端点对不存在的令牌同样返回 200,避免被当成令牌探测接口。

本页目录