集成 Moodle 和 ASP.NET Identity 2.1
Integrating Moodle and ASP.NET Identity 2.1
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)
- 两者都可以通过 public 互联网访问;无需在专用网络上访问它们。
- 我知道没有计划将 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 身份 cookie 代替它自己的。这似乎是最有成果的课程,因为它是一个要管理的 cookie。
总结: 我想让 M 和 O 共享身份验证.如果他们只有一个登录页面,那就更好了,但是登录一个页面应该会自动登录另一个页面;注销也应该共享。这可能吗,有人知道我应该怎么做吗?
也许看看 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 插件:
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)
- 两者都可以通过 public 互联网访问;无需在专用网络上访问它们。
- 我知道没有计划将 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 身份 cookie 代替它自己的。这似乎是最有成果的课程,因为它是一个要管理的 cookie。
总结: 我想让 M 和 O 共享身份验证.如果他们只有一个登录页面,那就更好了,但是登录一个页面应该会自动登录另一个页面;注销也应该共享。这可能吗,有人知道我应该怎么做吗?
也许看看 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 插件: