一、实施流程概览
| 阶段 | 工作内容 | 预估时长 |
|---|---|---|
| 阶段一 | 基础环境准备与模块启用 | 0.5天 |
| 阶段二 | 认证中心配置 | 1天 |
| 阶段三 | 应用注册与接入配置 | 1-2天 |
| 阶段四 | 权限体系配置 | 1天 |
| 阶段五 | 测试验证与上线 | 1天 |
二、阶段一:基础环境准备
2.1 环境要求确认
| 项目 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 2核 | 4核及以上 |
| 内存 | 4GB | 8GB及以上 |
| 操作系统 | CentOS 7.x / Windows Server 2019 | - |
| 基础平台 | PageAdmin V4.0及以上 | 最新稳定版 |
2.2 模块启用确认
登录 PageAdmin 后台,按以下路径操作:
进入【系统设置】→【模块管理】
确认“QuickSSO 认证模块”状态为“已启用”
如未启用,点击“启用”并完成模块初始化
三、阶段二:认证中心配置
3.1 基础配置
进入【QuickSSO 管理】→【认证中心配置】,完成以下设置:
| 配置项 | 说明 | 示例值 |
|---|---|---|
| SSO域名 | 统一认证服务访问域名 | sso.company.com |
| 加密方式 | 推荐RSA | RSA |
| 密钥对 | 系统自动生成 | 保存公钥/私钥 |
3.2 令牌与端点配置
SSO认证中心将自动生成以下OAuth 2.0标准端点,供第三方应用对接使用:
| 端点类型 | 说明 |
|---|---|
| authorization_endpoint | 授权请求端点 |
| token_endpoint | 令牌获取端点 |
| userinfo_endpoint | 用户信息获取端点 |
| jwks_uri | JWK公钥获取端点 |
四、阶段三:应用注册与接入配置
4.1 注册新应用
进入【QuickSSO 管理】→【应用管理】
点击【添加应用】,填写应用信息:
| 参数 | 说明 | 示例 |
|---|---|---|
| 应用名称 | 第三方系统名称 | 企业OA系统 |
| 应用类型 | 选择对应类型 | Web应用 / ECreator应用 |
| 回调地址 | 登录成功后跳转地址 | https://oa.company.com/callback |
提交后系统自动生成:
Client ID(应用唯一标识)
Client Secret(应用密钥,需妥善保管)
4.2 接口调用流程
第三方应用接入后,SSO认证交互流程如下:
text
┌────────┐ 1.请求授权 ┌────────┐ 2.用户认证 ┌────────┐ │ 第三方 │ ─────────────────→ │ SSO平台 │ ────────────────→ │ 用户 │ │ 应用 │ ←───────────────── │ │ │ │ └────────┘ 3.返回授权码 └────────┘ └────────┘ │ │ │ 4.授权码换Token │ │ 5.返回Access Token │ │ 6.获取用户信息 │ ↓ ↓ ┌────────────────────────────────────────────┐ │ 7.登录成功,进入应用 │ └────────────────────────────────────────────┘
4.3 接口规格
授权请求(前端发起)
text
GET /oauth/authorize? response_type=code &client_id={client_id} &redirect_uri={callback_url} &scope={scope} &state={random_state}Token换取(后端调用)
text
POST /oauth/token Content-Type: application/x-www-form-urlencoded grant_type=authorization_code &code={authorization_code} &client_id={client_id} &client_secret={client_secret} &redirect_uri={callback_url}响应示例
json
{ "access_token": "eyJhbGc...", "token_type": "Bearer", "expires_in": 7200, "refresh_token": "def5020..." }获取用户信息
text
GET /oauth/userinfo Authorization: Bearer {access_token}响应示例:
json
{ "sub": "10001", "username": "zhang.san", "email": "zhang.san@company.com", "department": "技术部", "roles": ["sales"] }五、阶段四:权限体系配置
5.1 角色创建
进入【用户与权限】→【角色管理】→【新建角色】
| 角色名称 | 典型权限配置 |
|---|---|
| 普通用户 | 基础访问、个人信息管理 |
| 部门主管 | 部门数据查看、下属审批 |
| 系统管理员 | 全部功能访问、用户管理 |
| 审计员 | 日志查看、权限查询 |
5.2 用户关联
进入【用户管理】→ 选择用户 → 关联角色
说明:用户可关联多个角色,权限取其并集
5.3 跨应用统一权限
SSO平台支持一次配置、多应用生效:
| 权限类型 | 配置粒度 | 同步方式 |
|---|---|---|
| 功能权限 | 菜单/按钮级 | 实时下发 |
| 数据权限 | 部门/本人/全部 | 实时下发 |
| 角色关联 | 用户-角色绑定 | 实时下发 |
操作路径:角色管理 → 选择角色 → 关联应用权限 → 保存
六、阶段五:测试验证
6.1 单点登录测试
| 测试项 | 预期结果 | 验证方法 |
|---|---|---|
| 首次访问应用 | 自动跳转SSO登录页 | 访问应用URL,观察跳转 |
| 认证登录 | 登录成功进入应用 | 输入有效账号密码 |
| 跨应用跳转 | 无需重新登录 | 访问第二个关联应用 |
| 登出操作 | 全部应用同步退出 | 执行登出后访问任一应用 |
6.2 权限验证
| 测试场景 | 预期结果 |
|---|---|
| 普通用户访问管理功能 | 提示无权限 |
| 主管查看下属数据 | 可查看 |
| 主管查看非下属数据 | 不可查看 |
| 管理员执行删除操作 | 可执行 |
6.3 常见问题处理
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| SSO跳转失败 | 回调地址不一致 | 核对Client配置 |
| 权限不生效 | 角色应用关联缺失 | 检查角色-应用关联 |
| Token验证失败 | 密钥配置错误 | 核对公钥配置 |
| 用户信息获取失败 | Scope未包含openid | 添加开放ID范围 |
七、第三方系统接入清单
第三方系统对接时,需提前准备以下信息:
| 提供给SSO平台方 | 由SSO平台方提供 |
|---|---|
| 应用名称与描述 | Client ID |
| 回调地址(可多个) | Client Secret |
| 所需权限范围(Scope) | SSO服务地址 |
| 对接环境(测试/生产) | 端点文档 |
八、部署配置参考
8.1 应用端配置示例(通用)
json
{ "sso": { "authorization_endpoint": "https://sso.company.com/oauth/authorize", "token_endpoint": "https://sso.company.com/oauth/token", "userinfo_endpoint": "https://sso.company.com/oauth/userinfo", "client_id": "{分配的ClientID}", "client_secret": "{分配的Secret}", "redirect_uri": "https://app.company.com/callback", "scope": "openid profile", "response_type": "code" } }8.2 支持的协议特性
| 特性 | 支持情况 |
|---|---|
| OAuth 2.0 Authorization Code | ✓ |
| PKCE | ✓ |
| Refresh Token | ✓ |
| OIDC Discovery | ✓ |
九、附录:术语表
| 术语 | 说明 |
|---|---|
| Client ID | 第三方应用的唯一标识 |
| Client Secret | 第三方应用的密钥 |
| Access Token | 访问令牌,用于调用API |
| Refresh Token | 刷新令牌,用于获取新Token |
| Scope | 权限范围 |
| Redirect URI | 授权码回调地址 |