单一登录在Moodle与外部登录表单

Reg*_*lis 4 php authentication moodle single-sign-on

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

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

我查看了各种身份验证插件,但它们似乎都没有完全按照我的要求去做.

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

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

这是我第一次与Moodle合作,所以我有几个问题:

  1. 如何自动创建新用户?仅仅为mdl_users添加一个新条目就足够了吗?
  2. 如何签署用户?
  3. 我可以将此类功能作为身份验证插件,还是需要在login/index.php文件中进行黑客攻击?
  4. 如何禁用Moodle自己的用户管理不再需要的部分(即密码重置,从SOAP服务收集的用户信息字段等)?

我真的希望你能帮助我:)

Ton*_*ony 5

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

希望这可以帮助.