2
了解Drupal的会话管理和用户身份验证
我有一个要求,我必须用中央服务器(即SSO服务器)的身份验证替换默认的用户身份验证。 通过调试Drupal,我知道所有会话管理都在includes/session.inc文件中进行。我要进行验证,如图所示: 场景:登录 步骤的详细信息将是: 替换登录表单,以将用户名和密码提交到SSO服务器(不是在Drupal上,而是在.NET上)。 使用该站点的数据库在SSO服务器上对用户进行身份验证;并将响应发送回我的网站的某个自定义PHP页面(或模块形式的表单?)。 使用响应,在用户表中标识用户,然后为该用户创建会话,而无需检查密码(因为这将意味着双重身份验证)。默认情况下,Drupal设置cookie的名称为$insecure_session_namevariable,值为value $sid。我希望Drupal不要在此处设置cookie,而是将变量的值发送到SSO服务器。 SSO服务器将获取值,创建一个cookie,然后将其放置在主域中domain.com(以提醒两者,my website并且sso server它们都位于主域的子域中,而在Drupal中也是如此)。然后,Drupal站点可以使用该cookie登录。 我知道这是一个很难回答的问题,我只是在寻找应该如何开始的指针?正如他们所说的“您不应该破解核心”。因此,我的问题是: 我应该在哪里寻找深度了解Drupal身份验证和会话管理的方式? 有没有一种方法可以includes/session.inc使用钩子来调用函数(如函数注释中所说的“仅供内部使用/不得修改”)? 注意:我将使用相同的方法注册用户,以便将记录保留在SSO服务器的中央数据库中。在此期间,将在Drupal站点的数据库中为同一用户输入一些垃圾密码(因为登录时不会检查该密码)。