跳转至

申请接入

通过SAI 用户手册中的联系渠道向运营团队提交以下信息。客户端由运营审核后统一登记,不提供匿名客户端注册。

提交应用信息

信息 要求与示例
负责人及运维联系人 能确认应用归属、处理故障和凭据轮换的联系人
应用名称与用途 用户能认出的名称,说明为何需要 SAI 登录及哪些资料
应用首页 例如 https://app.example.org/
使用环境 生产与测试分别登记,分别保管凭据
客户端类型 有服务端的网页应用,或无法安全保密的客户端
登录回调地址 例如 https://app.example.org/oidc/callback,逐条提交完整 HTTPS URL
退出返回地址 例如 https://app.example.org/signed-out
服务端退出通知地址 例如 https://app.example.org/oidc/backchannel-logout,供 SAI 服务器调用
所需权限(scope) 一般从 openid profile 开始;需要邮箱时申请 email,说明用途
客户端认证 首选 private_key_jwt,提交公钥或可读取的 HTTPS JWKS 地址及轮换安排
用户标识隔离 提交应用归属和回调域名;由登记流程确认 sector,不自行复制其他应用配置
会话要求 说明在线使用、续期及退出需求;离线或机器访问另行评审

URL 区分协议、主机、端口、路径、尾斜线和查询参数。禁止通配回调、片段标识符、开放重定向页面,以及把任意用户传入地址作为回调。

跨多个回调域名时,运营会审核 sector identifier 配置;若需要 sector 文档,其 HTTPS 内容应为全部获批登录回调 URL 的 JSON 数组。公开用户标识隔离不以 URI 的路径名区分,不要把同一主机下的不同文件误当作不同 sector。

登记后获得什么

登记结果应明确:client_id、客户端类型、认证方式、准确的回调/退出地址、允许的 scopes、签名算法和会话政策。

private_key_jwt 的私钥由应用保管,SAI 登记其公钥。若批准使用 client_secret_basic,通过约定的受保护渠道交接客户端密钥。不要将私钥、密钥、授权码或令牌发到普通聊天、工单正文或代码仓库。

示例中的 example-web 只是占位客户端 ID,不能用于实际登录。本文不提供一个所有应用共用的客户端。

用户同意与应用权限

运营批准 scope 是应用可申请的上限,用户的授权决定本次实际可用范围。应用只请求当前功能需要的 scope,并以响应中的实际授权为准。

用户拒绝授权时应回到应用可用的入口,不循环发起登录。新增 scope 需重新走授权流程,刷新令牌不能替代新的用户同意。撤销授权不等于删除应用已有的业务数据;数据保存和删除按应用自己的规则处理。

客户端注册和用户注册是两件事:应用不要采集 SAI 密码、验证码或身份验证器密钥。用户通过 SAI 的同一个登录入口完成认证。

变更与退出接入

回调域名、scope、公钥、负责人或认证方式变化时,沿同一支持渠道申请更新。密钥轮换先登记新公钥并验证,再按约定退役旧钥;不要自行更换 issuer、sector 或账号映射。

应用停止接入时,由运营撤销客户端及关联授权,应用同步停止使用相关令牌并处理本地会话。仅删除应用本地 Cookie 不能代替服务端撤销。