摘要

  • Kenneth J. Klingenstein 帮助科研教育机构把逐对拼接的访问关系,转化为由本地认证、共同属性语义、签名元数据与本地授权共同组成的联合体系。
  • 联合身份并未自动制造信任;它把证据和责任分给身份提供方、服务提供方与联合运营方,让一次跨域决定有机会被拆开核验。

用户看见的是一扇门,运营者面对的却是一条责任链。研究人员打开另一所机构的数字资源,浏览器把他带回本校登录页。本校确认身份后,浏览器带着声明返回,资源随即开放。这个过程顺畅时,三个不同主体的作用几乎同时从界面上消失。

本校决定怎样认证,并对认证事件作出声明;它还可以释放若干属性。远端服务验证收到的内容,再按照自己的规则判断是否准入。中间还必须有一套办法说明服务器地址、参与角色、验签密钥和属性含义,并说明哪些机构有资格加入。没有任何一方单独控制完整结果。

Klingenstein 的贡献正位于这条链的接缝。Internet Hall of Fame 既记载了他早年推动美国西部联网的经历,也强调他后来对互联网身份与信任层的工作。1999 年,他在科罗拉多大学博尔德分校担任 chief technologist 时,受命领导 Internet2 Middleware Initiative。Internet2 将 Shibboleth、InCommon、eduPerson 等成果与这项工作联系起来。

这段历史不能写成个人发明神话。Klingenstein 在回顾 InCommon 二十年时,明确把早期团队的带头人称为 R. L. “Bob” Morgan。校园架构师、开发者、图书馆、科研合作组织以及 OASIS 标准参与者都提供了关键工作。Klingenstein 的作用,是让共同问题得到长期的组织动员和制度承载,而不是独自写出所有协议和软件。

团队用“本地认证,全球行动”概括目标。大学本来就有账户、目录、入离校流程和安全习惯。若建立一套全球账户库,身份保管权会被集中,不同机构也会被迫采用同一套管理方式。联合身份选择保留差异:身份的首要核验仍由所属机构完成,只让有限、可解释的声明跨越边界。

Shibboleth 在 2000 年从 Internet2 中间件项目中形成,并在同年与 OASIS 的 SAML 工作接轨;1.0 版于 2003 年发布。2004 年,Morgan、Scott Cantor、Steven Carmody、Walter Hoehn 与 Klingenstein 联名说明了两个分开的组件:用户所属机构运行 Identity Provider,资源一侧运行 Service Provider。

IdP 接住用户熟悉的登录,随后签发声明。SP 核验声明,并把属性交给应用。最终是否允许访问,由应用自己的规则决定。由此可见,“已经认证”不等于“应当获准”。声明可以真实、签名可以有效,远端规则仍可能过时、过宽,或误解了属性。

属性机制让机构不必把永久用户名当作唯一凭据。期刊平台也许只需要知道访问者属于订阅单位;科研计算平台也许只关心某项 entitlement。姓名、邮箱或校内编号若与决定无关,传递它们只会扩大暴露面。

跨校合作随即遇到一个比字段格式更深的问题:同一个词是否表示同一件事。eduPerson 为教育科研目录提供共同属性及定义。规范特别指出,affiliation 只有在定义和实践取得广泛共识时,才具有跨机构的实用价值;它还分别讨论标识符的作用域、持久性、隐私性、唯一性和再分配。

这些不是术语细节。一所学校的“成员”可能只含在职人员,另一所还包括校友或承包人员。可再分配的标识符可能让新用户接上旧用户的记录。持久标识有助于维持必要档案,也可能形成出乎用户预料的跨期关联。属性语义和密钥一样,需要负责人、版本与变更记录。

Shibboleth 还允许按接收服务设置属性释放策略,并能使用不透明或临时标识符,减少直接暴露熟知账号的必要。这提供了数据最小化手段,却不等于隐私保证。默认配置、管理员决策、用户是否真正知情、服务端日志以及后续数据拼接,都会改变可识别程度。

SAML 互通同样只是起点。2004 年的文章列出一系列仍需达成的共同约定:安全机制、属性定义、服务器定位、账户管理质量、个人信息处理方式以及参与资格。若每所大学都与每项服务逐对谈判,配置和合同的数量会迅速膨胀,而且很难持续更新。

InCommon 把一部分逐对协商变成可重复使用的共同制度。Klingenstein 回忆,早期团队很快发现,接收方需要一个组织机制,才能相信另一机构提供的认证和属性信息。这个机制要核验参与组织及其授权负责人,处理元数据,公布共同预期,运行服务,解决争议,并在必要时终止参与。

元数据把制度的一部分变成机器可读对象。OASIS 规范允许实体描述自身角色、服务端点、支持的 binding,以及用于验签和加密的密钥材料。InCommon 的运行政策则说明,联合方收集参与者提交的资料、评估变更、对元数据进行数字签名并发布,参与者自行定期获取。

因此,自签证书在这种体系中也可能可用:信任来源不是证书孤立存在,而是它经过受控登记并进入由联合方签名分发的元数据。反过来,一把密钥出现在元数据中,也不能证明参与机构的每项内部实践都可靠。InCommon 的 Baseline Expectations 分别列出 IdP、SP 与联合运营方的义务,正是为了防止把一种信号扩张成全面保证。

所谓“两个登录域之间的登记册”并不是中央用户库。它记录的是系统、端点、密钥和授权代表等信任材料,让本地决定能够对接。本校仍为认证和释放内容负责;远端服务仍为核验和授权负责;联合运营方则为共同登记与分发面负责。

这套安排的历史意义,是减少临时手工对接,同时不抹去机构自治。元数据减少逐一交换地址和密钥;eduPerson 减少逐一翻译属性;共同规则减少重复核验参与资格;开源软件让机构能够检查并自行运行实现。判断并未消失,只是获得了可重复的结构。

“单点登录”因而只描述用户体验,不能充当决策凭证。访问发生争议时,需要追问:哪个 IdP 在何时、以何种认证上下文确认了主体;声明的签发者、受众和有效期是什么;释放了哪些属性、采用哪个定义;当时 SP 信任哪一版元数据和密钥;哪一版本地规则把这些材料变成允许或拒绝。

页面成功打开,并不会自动保存这些答案。Klingenstein 更深的遗产,是帮助人们把看不见的机构边界改造成可命名、可治理的信任接口。两个域无需合并,但它们共同作出的决定必须能够还原成各自承担的部分。

来源