tl; dr :我想进行Moodle安装和基于ASP.NET身份的站点共享身份验证。如果他们有一个登录页面,那就好得多了,但是登录到一个页面应该自动登录另一个;还应共享注销。
我在 www.example.com/moodle 和另一个网站( o )上,有一个Moodle安装( m )> www.example.com 。
- o 使用.NET 4.5.2编写,并且具有需要身份验证的区域,并使用自定义用户模型使用ASP.NET Identity 2.1进行管理。该模型不是特别复杂。它本质上是开箱即用的模型,但具有整数ID而不是GUIDS。
- M 是2.6版,意图在不久的将来升级到最新版本(当前3.1)。
- 两者都可以通过公共互联网访问;不需要在私人网络上访问它们。
- 我知道没有计划将 m 或 O 移至其他域。但是,如果一个或两个是要移动,我想他们会搬到 example.com.com 。 的子域中
我想创建一个单符号系统,允许 m 的登录名也可以将用户记录到 o 中。就目前而言,我正在为Moodle使用外部数据库身份验证插件,并使用 m 参考 o 的数据库。在这种情况下,它确实要求用户登录两次。我想设置它,以便登录到 m 或 o 也会将用户登录到另一个站点。ul>
我尝试,调查或考虑的事情:
- Moodle的外部数据库插件。这就是目前的工作方式。它有效,但需要多个登录。
- 自动化多个登录。我已经尝试将发布的凭据从服务器中提出HTTP请求时,将HTTP请求从网站登录时的各自的登录表单,将Cookie从响应中提取,然后将该Cookie发送回客户端。这也有效,但充其量是笨拙的,并且依赖于cookie没有离开同步。
- 使用PHP的dotnet库并做...我能找到的所有文档都说dotnet与.NET 2.0、3.0或3.5以外的任何内容都无法使用。我正在使用4.5.2,所以这似乎是不做的。即使我可以将其与最新版本的.net一起使用。 ,我也不知道该怎么办。
- 某种程度上让Moodle接受ASP.NET身份cookie代替自己的身份。鉴于它是一个可以管理的饼干,这似乎是最富有成果的课程。
总结:我想制作 m 和 o 共享身份验证。如果他们有一个登录页面,那就好得多了,但是登录到一个页面应该自动登录另一个;还应共享注销。这是可能的吗,有人知道我应该怎么做吗?
也许看一下saml。
我相信.NET 4.5支持SAML?
https://msdn.microsoft.com/en-us/library/ms733083(v=vs.110).aspx
在服务器上,安装simplesamlphp。
https://simplesamlphp.org/docs/stable/simplesamlphp-p-p
它既可以用作服务提供商,也可以用作身份提供商。
然后在Moodle中安装此SAML插件:
https://moodle.org/plugins/auth_saml