OIDC 联邦 SSO(复旦 OP / 清华 RP)完整全链路(纯标准OIDC、无User Storage SPI、含用户浏览器操作)

说明:本链路为纯标准 OIDC 联邦协议流程,全程不涉及 Keycloak User Storage SPI、不涉及外部用户存储对接,仅展示「跨组织 OIDC 联邦信任、授权、鉴权、业务访问」完整链路。全文每步骤同步补充小张手动浏览器操作 + 浏览器页面展示内容 + 地址栏实时网址。

分层维度:前台(用户交互)/中台(OIDC网关、鉴权、会话)/后台(业务资源、数据存储)

服务器维度:复旦 OP(身份提供商)、清华 RP(资源依赖方)

一、OIDC 联邦标准端点定义(公网真实规范地址)

  1. 复旦 OP 身份节点(负责认证、发JWT令牌)
  1. 清华 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. 文献检索全链路
    步骤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:数据回流,浏览器渲染检索结果
    用户浏览器操作:小张等待结果展示,可浏览、筛选检索出的文献列表。
    浏览器展示内容:页面加载完成,展示匹配关键词的外文文献列表、发布时间、摘要、下载入口。
    数据链路:清华后台 → 清华中台(数据脱敏) → 清华前台(展示结果)
  2. 文献下载全链路
    步骤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鉴权网关、后台业务数据存储。
相关推荐
oradh1 小时前
Oracle 11g单库升级至19c单库(dbua图形方式)
数据库·oracle·11g升级19c·dbua升级方式
王九思2 小时前
对称加密与非对称加密详解
java·网络·数据库
周杰伦的稻香2 小时前
(1071, ‘Specified key was too long; max key length is 767 bytes‘)
数据库·mysql
Leo.yuan2 小时前
数据目录和数据字典有什么区别?一文讲清
大数据·数据库·人工智能
全堆鸿蒙2 小时前
鸿蒙应用开发实战【37】— 数据统计:countByStatus 聚合查询
数据库·华为·harmonyos·鸿蒙系统
惜分飞2 小时前
记录block 0损坏,数据文件大量坏块,使用不当数据库版本恢复等各种操作之后的故障处理---惜分飞
数据库·block0损坏·ora-17503
执笔论英雄2 小时前
【大模型推理】redis kv cache
数据库·redis·缓存
tiancaijiben2 小时前
阿里云SAE应用引擎弹性扩缩容完全指南:从手动调控到智能自动化
java·网络·数据库
倔强的石头_2 小时前
8000 条 SQL 里,180 条外连接语义跑偏——Oracle 迁 KES 那些藏得最深的坑
数据库