valiton/harbourmaster

集成Harbourmaster,为Drupal提供单一登录解决方案。

8.1.1-beta7 2020-01-16 08:42 UTC

This package is auto-updated.

Last update: 2024-08-25 16:36:26 UTC


README

它做什么?

此插件主要包含一个身份验证提供程序,它使用HMS SSO cookie(包含会话令牌)来通过HMS SSO API对用户进行身份验证。

它还提供了配置页面、登录页面和所有HMS用户管理功能的块。

身份验证是如何工作的?

基本上,身份验证提供程序将在当前请求中查找有效的SSO cookie。如果找到此令牌,它将与此HMS SSO API端点进行核对。在成功核对后,端点将返回此用户的会话数据(这些会话数据可能随后被缓存一定时间,默认为60秒)。

然后使用HMS会话数据通过关联的HMS用户密钥识别现有的Drupal用户。如果找不到,将创建一个新的Drupal用户(使用随机密码),并在过程中关联HMS用户密钥。现有用户可以更新为HMS会话数据中的属性。

此时,将设置Drupal的current_user为查找的用户,并为该用户创建一个Drupal会话。SSO令牌将保存在该会话中。(没有会话也可以进行身份验证,但Drupal表单的CSRF保护需要会话来保存CSRF令牌。)

用户现在已登录。在随后的请求中,身份验证提供程序将比较当前SSO令牌cookie与Drupal会话中保存的SSO令牌。如果SSO令牌不匹配、已过期或令牌cookie缺失,将终止Drupal会话,用户将注销。

如果请求中没有设置令牌cookie,并且当前会话(如果存在)没有关联令牌,则身份验证将传递给标准的Drupal "Cookie"身份验证提供程序。

用户管理器是如何工作的?

用户管理器提供所有与HMS SSO相关的功能的小部件,如

  • 登录
  • 注册
  • 密码重置

它通过渲染一个具有特定id的容器并将一些来自用户管理器服务器的JavaScript包含进来,被包含到Drupal中。

通过用户管理器登录时,它将在其配置的域(通常是".domain.tld")上设置包含SSO令牌的cookie。然后,此cookie将始终发送到"domain.tld"的任何子域,并允许身份验证提供程序工作。

从用户管理器注销将销毁该cookie,从而销毁Drupal会话。

先决条件

  • 在同一域或任何级别的子域上安装并正确配置HMS用户管理器,该域与Drupal安装相同
  • 安装并正确配置HMS SSO服务器(实际的"Harbourmaster")

安装

  • 启用模块
  • 在配置页面上至少配置HMS SSO API和HMS用户管理器服务器URL
  • 重建容器(见已知问题)
  • 转到/harbourmaster/login或配置"HMS状态"块,该块将提供登录和注销链接

可用路由

  • /harbourmaster/login:渲染大多数HMS用户管理器小部件
  • /harbourmaster/logout:重定向到注销用户管理器URL,然后将其重定向回Drupal主页

可用块

  • 状态:调试块,显示当前认证提供者和匹配的登录/注销链接
  • 每个用户管理小部件对应一个块

其他

  • 包含一个缓存策略,当请求中设置了一个有效的(通过模式匹配)令牌时,将拒绝缓存
  • 包含一个事件订阅者,可以触发在响应中删除SSOcookie(当与该令牌关联的SSO会话被视为无效时将发生此操作) - 此后的请求可以被缓存

已知错误和待办事项

  • 唯一用户名的冲突解决非常基本
  • Drupal用户函数(密码重置、资料编辑、用户取消)仍需要对HMS SSO认证用户进行阻止。
  • 用户图像更新目前非常简单