我正在开发一个MQod网站,在这里我必须使用外部服务来验证用户身份。此SSO服务应该是唯一的身份验证形式。

外部服务的提供者要求我在服务器上使用他们的登录表单,因此我必须禁用moodle登录表单。

我已经看过各种身份验证插件,但是它们似乎都不能完全满足我的需要。

到目前为止,我认为这是我要做的:

  • 更改login/index.php文件,因此除了将用户重定向到外部登录表单之外,它什么也不做。
  • SSO服务返回到我的Moodle服务器上的新页面,用于确认提供的凭据。
  • 所有相关的用户数据都是从连接到SSO服务的SOAP Web服务收集的。
  • 如果mdl_users表中存在SSO服务提供的(唯一)用户名,则使用相关的用户数据更新该行。
  • 如果用户名不存在,则会自动生成一个新用户
    然后,用户登录到Moodle站点并转到其首页。

  • 这是我第一次与Moodle合作,所以我有几个问题:
  • 如何自动创建新用户?仅向mdl_users添加一个新条目就足够了吗?
  • 如何登录用户?
  • 我可以作为身份验证插件使用这种功能吗,还是需要在login/index.php文件中进行破解?
  • 如何禁用Moodle自己的用户管理中不再需要的部分(即,密码重置,从SOAP服务收集的用户信息字段等)?

  • 我真的希望您能帮助我:)

    最佳答案

  • 调用create_user_record()(master分支中lib/moodlelib.php的第4008行)。这不仅可以插入mdl_user,还可以执行一系列检查,并调用其他函数来处理依赖项,事件触发器等。如果被认证的用户不存在,则由authenticate_user_login()自动调用此函数(请参见下文)。
  • 这涉及到调用authenticate_user_login()(lib/moodlelib.php的第4378行),然后调用complete_user_login()(lib/moodlelib.php的第4577行)。
  • 这可以通过创建身份验证插件来实现,并且您应该能够在https://docs.moodle.org/dev/Authentication_plugins上找到所有需要了解的内容,包括示例代码和建议模板的链接。
  • 您可以通过auth插件锁定用户配置文件字段,并且实际上可以通过管理界面/admin/settings.php?section=manageauths设置自定义/外部密码重置页面。

  • 希望这可以帮助。

    关于php - 使用外部登录表单在Moodle中进行单点登录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26216411/

    10-16 17:47