【问题标题】:Integrating Moodle and ASP.NET Identity 2.1集成 Moodle 和 ASP.NET Identity 2.1
【发布时间】:2016-06-27 16:47:02
【问题描述】:

TL;DR:我想做一个 Moodle 安装和一个基​​于 ASP.NET Identity 的站点共享身份验证。如果他们只有一个登录页面,那就更好了,但是登录一个页面应该会自动登录另一个页面;注销也应该共享。


我在 www.example.com/moodle 有一个 Moodle 安装 (M),在 有另一个网站 (O) >www.example.com

  • O 是使用 .NET 4.5.2 编写的,并且具有需要身份验证才能访问的区域,并使用带有自定义用户模型的 ASP.NET Identity 2.1 进行管理。这个模型不是特别复杂。它本质上是开箱即用的模型,但使用的是整数 ID 而不是 GUID。
  • M 是 2.6 版本,打算在不久的将来升级到最新版本(目前是 3.1)。
  • 两者都可以通过公共互联网访问;无需在专用网络上即可访问它们。
  • 我知道没有将 MO 移至其他域的计划。但是,如果一个或两个要移动,我想他们会移动到 example.com 的子域。

我想创建一个单点登录系统,允许登录 M 也让用户登录到 O。就目前而言,我正在使用 Moodle 的外部数据库身份验证插件,M 指的是 O 的数据库。虽然这可行,但它确实需要用户登录两次。我想进行设置,以便登录到 M O 的用户也会登录到其他站点。

  • 我能够从 PHP 和 .NET 代码创建匹配的哈希值。除非它与解决方案特别相关,否则请考虑创建超出范围的哈希。
  • M 的一些用户正在使用 Moodle 的内置身份验证。但是,除非它与解决方案特别相关,否则请考虑将用户迁移超出范围。
  • 如果可能的话,我更喜欢 O 来管理用户。 M,本质上是 Moodle,必须为用户拥有自己的记录,但我希望它们与外部数据库插件使用的记录相似:只是说用户存在并且可以在其他地方找到。

我尝试过、调查过或考虑过的事情:

  • Moodle 的外部数据库插件。这就是它目前的工作方式。它有点工作,但需要多次登录。
  • 自动进行多次登录。我已经尝试使用发布的凭据,在登录时从服务器向站点各自的登录表单发出 HTTP 请求,将 cookie 从响应中取出,然后将该 cookie 发送回客户端。这也有效,但它充其量是笨重的,并且依赖于 cookie 不会不同步。
  • 使用 PHP 的 DOTNET 库并做...一些事情。我能找到的所有文档都说 DOTNET 不能与 .NET 2.0、3.0 或 3.5 以外的任何东西一起使用。我使用的是 4.5.2,所以这似乎是不行的。即使我可以让它与更新版本的 .NET 一起使用,我也不知道该怎么办。
  • 不知何故让 Moodle 接受 ASP.NET 身份 cookie 来代替它自己的。这似乎是最有成效的课程,因为它需要管理一个 cookie。

总结:我想让 MO 共享身份验证。如果他们只有一个登录页面,那就更好了,但是登录一个页面应该会自动登录另一个页面;注销也应该共享。这可能吗,有人知道我应该怎么做吗?

【问题讨论】:

    标签: single-sign-on asp.net-identity moodle


    【解决方案1】:

    也许看看 SAML。

    我相信 .NET 4.5 支持 SAML?

    https://msdn.microsoft.com/en-us/library/ms733083%28v=vs.110%29.aspx

    在服务器上,安装 simplesamlphp。

    https://simplesamlphp.org/docs/stable/simplesamlphp-sp

    它既可以用作服务提供者,也可以用作身份提供者。

    然后在 Moodle 中安装这个 SAML 插件:

    https://moodle.org/plugins/auth_saml

    【讨论】:

      猜你喜欢
      • 2019-07-19
      • 1970-01-01
      • 2015-07-30
      • 2022-10-21
      • 1970-01-01
      • 2019-01-31
      • 1970-01-01
      • 2018-11-23
      • 2019-11-29
      相关资源
      最近更新 更多