使用 SAML 协议的第三方身份验证

5 年 2015 月 XNUMX 日 | 作者:

结语

在过去的几个月里,edX 合作伙伴和 Open edX 社区成员设计并实施了新的登录功能,允许学习者使用他们的校园凭证访问 edX 课程。 与 edX 目前支持使用 Google 或 Facebook 登录的方式类似,参与机构的学习者可以使用学校的身份提供者在 edX 中进行身份验证。 此外,机构可以选择与 edX 共享数据以提供更加个性化的体验,例如自动填充学习者的 edX 档案的名字和姓氏,或唯一的学生标识符,以便以后为名册或成绩同步建立支持。

功能

当学习者访问 edX Edge 环境时,他们将看到使用其机构或校园凭据登录的选项。 当从他们的在线校园系统开始或通过课程团队可以通过电子邮件发送的特殊邀请链接访问该网站时,学习者还可以访问这种替代登录方法。

edX Edge 登录屏幕截图

当学习者直接浏览 edge.edx.org 时,他们首先选择“使用我的机构/校园凭证”。

显示机构提供商示例列表的边缘登录页面

然后,他们将链接到其机构的登录页面。

确认用户是否希望使用其机构帐户登录的登录页面

当学习者被邀请注册课程时,他们会被直接引导至此登录页面。 如果学习者点击来自校园系统的链接,他们可能会立即登录,系统会提示他们使用该校园的凭据登录,或显示常规登录页面。 行为取决于链接的构建方式、学习者之前是否登录过、学习者是否登录到校园系统以及集成的配置方式。

然而,在所有情况下,只要提供适当的证书(取决于其特定机构的要求),学习者就会自动重定向到所请求的 edX 资源。 学习者首次登录时,会要求他们填写一些额外的帐户详细信息(例如,姓名和电子邮件地址)。 此信息用于将学习者的基于帐户的身份与他或她的 edX 身份相关联。 学员无需再次执行此操作,除非她取消关联帐户。

技术

此功能使用 SAML 2.0 (安全断言标记语言,2.0 版),它提供了一种在各方之间交换身份验证和授权数据的标准化方法。 在 SAML 交换中,身份提供者安全地向服务提供者声明最终用户的身份和访问权限,因此允许用户访问指定的资源。 在这种情况下,身份提供者是任何当前实施的机构登录服务,服务提供者是 edX。 身份验证完成后,学习者可以访问 edge.edx.org 上的任何可用资源,前提是他或她注册了与该资源相关的课程。

因为是用 SAML 构建的,所以新的登录服务完全兼容 希博莱斯,SAML 协议的开源实现,被高等教育机构广泛使用。 在对我们的工作组成员进行的一项调查中,我们很快发现每个人都至少有一部分学习者基于 Shibboleth,而一些机构的所有用户都在一个基于 Shibboleth 的身份存储中。 在我们的初始版本中,我们正在配置 edX Edge 以支持 Shibboleth 登录; 在后续版本中,我们计划根据需求扩展对其他符合 SAML2 的身份提供者的支持。

此功能建立在我们的 现有的第三方认证实现,由 Google 的 John Cox 于 2014 年提供。 它还利用了 配置模型功能,由 edX 的 Cale Pennington 实现,它为 Django 提供了“通过数据库配置”的解决方案。

我们还严重依赖其他两个开源项目的工作: Python 社交认证 以及 Python-saml. 两个项目团队的反应都非常好,这三个开源项目之间的合作值得一提。 主要开发人员 Braden MacDonald 贡献了一些更改, 支持 SAML 到 Python 社交身份验证,以及添加 我们需要 Python-saml 的功能. 上游审查人员努力及时审查和合并贡献,确保在 XNUMX 月下旬按时发布该功能。 现在,整个 Python 社区都可以从这项工作中受益,而不是分叉代码并仅为 edX 进行这些更改。

这些项目使我们能够利用大量现有工作并专注于 Open edX 平台所需的独特集成功能,从而大大缩短了整体开发时间。

流程

第三方身份验证项目源于 edX 校园应用工作组确定的需求,该工作组召开会议以解决校园集成挑战。 该小组的成立原则是所有成员都将为该过程做出以下贡献之一:

  1. 以参与讨论和审查文件的形式进行思想资本,特别是提出不同的用例来解决广泛的需求。
  2. 以对 Open edX 代码库的贡献形式的应用程序开发。
  3. 以测试其成员开发的解决方案的形式进行验证。

为了支持工作组和任何由此产生的项目(目前包括此认证项目以及支持 edX 作为 LTI 工具提供商的项目),edX 提供持续的产品开发支持、创建参与结构、指导架构决策并最终评估包含在 Open edX 平台中的解决方案。

下一步是什么?

今天,此功能已部署在 edge.edx.org 上,并由不列颠哥伦比亚大学的一个合作伙伴使用。 我们正在与其他合作伙伴合作,为他们的学习者测试和部署该解决方案。 未来,我们希望通过以下有趣的方式扩展这些功能:

  • 为具有严格隐私限制的合作学校创建一种机制,以传递其不透明的学生 ID 并取回 edX 用户 ID,用于分析和集成目的。
  • 与 InCommon 等 Shibboleth 联盟集成,以便几乎任何美国大学的学生都可以使用 SSO。
  • 使用合作伙伴品牌定制登录体验。

如果 Open edX 社区中的任何人对开发这些功能感兴趣,请 联系 edX 开源团队.

谢谢!

特别感谢我们的 SSO 项目团队:

Xavier Antoviaque,OpenCraft
Braden MacDonald,OpenCraft(首席开发人员)
德里克怀特,UBC
潘罗,UBC
威廉·小野,UBC
布赖恩·塔尔博特,edX
弗朗西斯·博茨福德,edX

请不要犹豫 联系我 有关该项目的更多信息,或查看 GitHub 上的源代码(https://github.com/edx/edx-platform/tree/master/common/djangoapps/third_party_auth).

 

装载

时间更多? 查看下面的文章。

共同解决问题:社区驱动的平台开发
在 Open edX 大会上学习技能并拓展未来规模
Open edX 大会开发者研讨会
重塑我们的数字未来:我为什么加入开放复兴组织
参加 2026 年 Open edX 会议!

2026 年 Open edX 会议将展示世界上最好的开源在线学习管理系统之一 Open edX 平台的创新用例,并发现教学设计、课程群以及操作和扩展 Open edX 平台的方法方面的最新进展,包括突破性技术,例如生成式人工智能。