helsingborg-stad/active-directory-api-wp-integration

一个简单的插件,用于通过API验证现有的WordPress用户。


README

与简单活动目录API服务的集成 (https://github.com/helsingborg-stad/active-directory-api)。只需定义AD_INTEGRATION_URL为api的基本目录的URL。以下功能将默认启用

  • 仅允许本地WordPress用户登录(他们的用户名必须与活动目录中的用户名匹配)
  • 使用活动目录中存储的密码匹配WordPress用户。
  • 登录时更新用户的基本信息,如电子邮件、名和姓。

数据库修改

此插件将更改用户表的索引,以要求唯一的用户名。这并非WordPress的默认行为,可能会破坏与用户管理相关的其他插件。

触发手动批量导入

您可以触发手动批量导入。这将直接调用当前调用中的批量导入功能。之后,每分钟将安排更新个人资料,直到所有WordPress用户都已更新。

导入新用户/删除旧用户: https://site.dev/wp-admin/?adbulkimport 更新已注册的个人资料: https://site.dev/wp-admin/?adbulkprofile 向所有站点传播用户角色: https://site.dev/wp-admin/?adbulkpropagate

触发手动清理操作

清理操作以保持使用不良对象缓存引擎的某些WordPress表的清洁。

删除重复用户: https://site.dev/wp-admin/?adcleanusers 删除孤儿用户元数据: https://site.dev/wp-admin/?adcleanmeta 删除空的用户权限: https://site.dev/wp-admin/?adcleancap

选项(定义常量)

  • AD_UPDATE_NAME: 更新名和姓。
  • AD_UPDATE_EMAIL: 更新电子邮件,如果它不属于另一个用户帐户。
  • AD_UPDATE_META: 根据结果更新元数据(将使用ad-keys作为元键,以下为前缀)。**
  • AD_META_PREFIX: 数据库中存储的元键的前缀。**
  • AD_SAVE_PASSWORD: 是否在WordPress中保存ad密码(true)。*
  • AD_RANDOM_PASSWORD: 禁止随机密码生成器。*
  • AD_USER_DOMAIN: 定义属于ad用户的域(以阻止密码重置)。*
  • AD_HP_VALIDATION: 定义为false以禁用蜜罐登录保护。
  • AD_NONCE_VALIDATION: 定义为false以禁用nonce登录保护。

批量导入选项(定义常量)

这些选项每晚导入活动目录中所有可用的用户。

  • AD_BULK_IMPORT: 打开或关闭批量导入(true/false)
  • AD_BULK_IMPORT_USER: 可以读取ad中所有项的用户帐户
  • AD_BULK_IMPORT_PASSWORD: 上述帐户的密码
  • AD_BULK_IMPORT_ROLE: 分配给新用户的默认角色(默认为"订阅者")
  • AD_BULK_IMPORT_REASSIGN_USERNAME: 将删除用户的内容重新分配给此用户名。如果未设置或用户不存在,将回退到第一个用户。
  • AD_BULK_IMPORT_PROPAGATE: 向整个博客网络传播用户(默认为true)。

选项自动创建用户

这些选项在登录时,如果活动目录中存在,将在网站上创建一个用户。

  • AD_AUTOCREATE_USER: 开启或关闭自动注册(true/false)
  • AD_AUTOCREATE_ROLE: 分配给新用户的默认角色(默认为"订阅者")
  • 请注意设置这些选项。它们并不全部兼容。例如:您不能保存密码,也不能生成随机密码。**为了启用 ad_meta_prefix 常量,应该设置 Ad update meta。

过滤器

过滤存储在数据库中的元键。

add_filter('adApiWpIntegration/profile/metaKey', function($meta_key){
    return $meta_key; 
}); 

过滤默认的重定向页面,订阅者可能不会受到影响(默认为主页)

add_filter('adApiWpIntegration/login/defaultRedirect', function(){
    return home_url();
}); 

示例配置

 define('AD_INTEGRATION_URL', 'https://internalproductionserver.com/ad-api/');
 define('AD_UPDATE_NAME', true);
 define('AD_UPDATE_EMAIL', true);
 define('AD_SAVE_PASSWORD', false);
 define('AD_RANDOM_PASSWORD', true);
 define('AD_USER_DOMAIN', 'company.com');

 define('AD_BULK_IMPORT', true);
 define('AD_BULK_IMPORT_USER', 'bulkimportaduser');
 define('AD_BULK_IMPORT_PASSWORD', '*********');
 define('AD_BULK_IMPORT_ROLE', 'subscriber');
 define('AD_BULK_IMPORT_REASSIGN_USERNAME', 'administrator');