说明:本链路为纯标准 OIDC 联邦协议流程,全程不涉及 Keycloak User Storage SPI、不涉及外部用户存储对接,仅展示「跨组织 OIDC 联邦信任、授权、鉴权、业务访问」完整链路。全文每步骤同步补充小张手动浏览器操作 + 浏览器页面展示内容 + 地址栏实时网址。
分层维度:前台(用户交互)/中台(OIDC网关、鉴权、会话)/后台(业务资源、数据存储)
服务器维度:复旦 OP(身份提供商)、清华 RP(资源依赖方)
一、OIDC 联邦标准端点定义(公网真实规范地址)
- 复旦 OP 身份节点(负责认证、发JWT令牌)
- OIDC 元数据自动发现:GET https://idp.fudan.edu.cn/.well-known/openid-configuration
- OIDC 授权端点(登录跳转入口):https://idp.fudan.edu.cn/oauth2/authorize
- Token 兑换端点:POST https://idp.fudan.edu.cn/oauth2/token
- UserInfo 用户信息端点:GET https://idp.fudan.edu.cn/oauth2/userinfo
- JWKS 公钥验签地址:https://idp.fudan.edu.cn/.well-known/jwks.json
- 复旦登录前台页面:https://idp.fudan.edu.cn/login
- 清华 RP 资源节点(提供文献业务)
- 文献业务前台门户:https://lib.tsinghua.edu.cn/database
- OIDC 联邦回调中台:https://lib.tsinghua.edu.cn/federation/oidc/callback
- 联邦身份鉴权中台:https://lib.tsinghua.edu.cn/api/middleware/fed-auth
- 文献检索中台接口:https://lib.tsinghua.edu.cn/api/middleware/search
- 文献下载中台接口:https://lib.tsinghua.edu.cn/api/middleware/download
- 清华后台文献数据库服务(内网):http://lib-backend-internal/api/backend/literature-db
- 清华后台文件流服务(内网):http://lib-backend-internal/api/backend/file-stream
二、阶段1:OIDC 联邦登录全流程(含小张浏览器完整操作、页面展示、网址变化)
人物:复旦大学在校研究生小张
核心逻辑:复旦OP负责身份认证+颁发JWT身份令牌,清华RP负责信任校验+本地会话生成+权限控制
步骤1:小张浏览器访问清华文献前台,发起联邦登录
用户浏览器操作:小张打开电脑浏览器,手动输入清华外文数据库网址并回车访问,进入网站首页后,点击页面中的「校园OIDC联邦登录」按钮,在弹出的院校列表中选择「复旦大学」。
浏览器展示内容:浏览器加载出清华图书馆外文数据库前台首页,页面展示文献检索框、资源分类、登录入口,选中复旦联邦登录后页面处于跳转加载状态。
当前浏览器地址栏网址:https://lib.tsinghua.edu.cn/database
请求地址:GET https://lib.tsinghua.edu.cn/database
分层:清华-前台
技术行为:前台请求清华中台生成标准OIDC授权参数,准备跨域跳转身份认证节点。
步骤2:浏览器自动302跳转复旦OP授权端点
用户浏览器操作:小张无手动操作,浏览器自动接收清华中台302重定向指令,跳转至复旦OIDC授权页面。
浏览器展示内容:页面快速跳转加载复旦统一身份认证授权中转页面,后台同步拼接合法OIDC授权参数。
当前浏览器地址栏网址:
https://idp.fudan.edu.cn/oauth2/authorize?response_type=code\&client_id=tsinghua-lib-rp\&redirect_uri=https://lib.tsinghua.edu.cn/federation/oidc/callback\&scope=openid profile email edu&state=random_secure_123456
跳转地址(302 GET):同上
分层:清华中台 → 复旦前台/中台
技术行为:清华RP以联邦信任身份,向复旦OP发起合法授权申请。
步骤3:小张在复旦OP登录页输入账号密码,提交登录
用户浏览器操作:浏览器跳转至复旦登录界面后,小张手动在输入框填写自己的复旦学号、校园登录密码,确认无误后点击「登录」按钮提交表单。
浏览器展示内容:页面展示复旦大学统一身份认证登录前台界面,包含账号输入框、密码输入框、登录按钮,提交后页面处于加载校验状态。
当前浏览器地址栏网址:https://idp.fudan.edu.cn/login
页面访问地址:GET https://idp.fudan.edu.cn/login
提交请求地址:POST https://idp.fudan.edu.cn/login/submit
分层:复旦前台 → 复旦中台
技术行为:复旦中台接收登录表单,完成本校用户身份校验(标准OIDC认证逻辑,无任何SPI扩展)。
步骤4:复旦OP认证通过,浏览器自动回调清华RP地址
用户浏览器操作:小张无手动操作,认证通过后浏览器自动触发重定向跳转。
浏览器展示内容:复旦登录页面加载完成后自动跳转,页面短暂空白中转,准备返回清华业务域名。
分层:复旦中台
技术行为:复旦OP校验用户合法在读身份,生成一次性 authorization_code,302重定向回调清华RP回调地址。
步骤5:浏览器携带授权Code,访问清华OIDC中台回调接口
用户浏览器操作:小张无手动操作,浏览器自动携带授权码请求清华回调地址。
浏览器展示内容:跳转至清华联邦认证中转页面,显示「正在登录联邦账号,请稍候」加载状态。
当前浏览器地址栏网址:https://lib.tsinghua.edu.cn/federation/oidc/callback?code=xxx\&state=xxx
请求地址:GET https://lib.tsinghua.edu.cn/federation/oidc/callback?code=xxx\&state=xxx
分层:清华中台
技术行为:清华RP中台接收OIDC授权码,进入令牌兑换阶段。
步骤6、7:中台后台双向交互兑票、验签解析身份(无浏览器前端操作)
用户浏览器操作:小张无任何操作,页面持续加载,所有交互为服务器后台内网直连。
浏览器展示内容:保持清华联邦登录中转加载页面,无地址栏变化。
技术行为:清华中台后台POST请求复旦Token端点兑换id_token、access_token,拉取复旦公钥验签,调用userinfo接口解析出「复旦在读研究生」联邦身份权限。
分层:清华中台 ↔ 复旦中台
步骤8:登录完成,浏览器跳转清华业务前台首页
用户浏览器操作:小张无手动操作,系统自动完成登录跳转。
浏览器展示内容:成功加载清华外文数据库业务首页,页面显示「已校园联邦登录」,展示文献检索、分类、下载等全部功能入口。
当前浏览器地址栏网址:https://lib.tsinghua.edu.cn/database
技术行为:清华中台创建本地联邦会话fed_session=xxx,完成身份授信,此后所有文献操作不再请求复旦服务器,完全由清华集群自闭环。
分层:清华中台 → 清华前台
三、阶段2:文献检索/下载业务链路(纯清华服务器闭环,全程含小张浏览器操作)
- 文献检索全链路
步骤1:小张浏览器发起文献检索请求
用户浏览器操作:小张在清华文献前台的检索输入框中输入外文文献关键词,点击「检索」按钮提交查询。
浏览器展示内容:页面展示检索加载动画,前台AJAX异步请求后台数据,页面不整体刷新。
请求地址:POST https://lib.tsinghua.edu.cn/api/middleware/search
请求头:Cookie: fed_session=xxx(携带OIDC联邦授信会话)
分层:清华前台 → 清华中台
步骤2:清华中台权限校验
用户浏览器操作:小张无操作,等待页面加载结果。
浏览器展示内容:持续保持检索加载状态。
分层:清华中台
校验逻辑:本地会话有效 + OIDC联邦身份为高校研究生 → 放行检索权限
步骤3:中台转发请求至清华后台数据库
用户浏览器操作:小张无操作。
内网后台地址:http://lib-backend-internal/api/backend/literature-db
分层:清华中台 → 清华后台
技术行为:后台检索外文文献库,返回文献标题、摘要、文档ID等列表数据。
步骤4:数据回流,浏览器渲染检索结果
用户浏览器操作:小张等待结果展示,可浏览、筛选检索出的文献列表。
浏览器展示内容:页面加载完成,展示匹配关键词的外文文献列表、发布时间、摘要、下载入口。
数据链路:清华后台 → 清华中台(数据脱敏) → 清华前台(展示结果) - 文献下载全链路
步骤1:小张浏览器发起文献下载请求
用户浏览器操作:小张在检索结果列表中,选中目标文献,点击页面对应的「全文下载」按钮。
浏览器展示内容:页面弹出下载加载提示,浏览器准备接收文件流。
请求地址:GET https://lib.tsinghua.edu.cn/api/middleware/download?docId=xxx
分层:清华前台 → 清华中台
步骤2:清华中台二次鉴权
用户浏览器操作:小张无操作,等待下载校验通过。
浏览器展示内容:保持下载加载等待状态。
分层:清华中台
技术行为:校验联邦用户下载权限,防止越权访问付费涉密资源。
步骤3:中台请求后台文件流资源
用户浏览器操作:小张无操作。
内网后台地址:http://lib-backend-internal/api/backend/file-stream?docId=xxx
分层:清华中台 → 清华后台
步骤4:浏览器接收文件流,完成本地下载
用户浏览器操作:小张等待下载完成,可在浏览器下载列表中查看、打开文献PDF文件。
浏览器展示内容:页面加载结束,浏览器右下角弹出下载完成提示,本地生成对应外文文献文档。
技术行为:后台返回二进制PDF文件流,中台透传至浏览器,完成业务闭环。
四、纯净版核心总结(无SPI、无LDAP、纯OIDC联邦)
- 全程无 User Storage SPI:本场景为标准 OIDC 联邦跨域认证,不依赖 Keycloak 自定义用户存储扩展;
- 复旦OP只干一件事:负责本校用户认证、颁发标准OIDC JWT令牌,仅登录阶段参与;
- 清华RP只干两件事:信任校验复旦JWT身份、基于联邦身份开放本校文献资源权限;
- 链路隔离清晰:登录阶段跨双服务器、用户手动操作登录,业务阶段纯清华内网闭环、用户仅前台业务操作;
- 架构分层干净:前台用户浏览器交互、中台OIDC鉴权网关、后台业务数据存储。