集成Moodle和ASP.NET Identity 2.1

时间:2016-06-26 21:06:10

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

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

我在 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)。
  • 两者均可通过公共互联网访问;没有要求在专用网络上访问它们。
  • 我知道没有计划将 M O 移到其他域名。但是,如果要移动其中一个或两个,我想他们会移动到 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 Identity cookie代替它自己的。这似乎是最富有成效的课程,因为它是一个可以管理的cookie。

要结束:我想要 M O 共享身份验证。如果他们有一个登录页面,那就更好了,但登录到一个应该自动登录到另一个;注销也应该共享。这有可能吗,有谁知道我应该怎么做呢?

1 个答案:

答案 0 :(得分: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