FR_LDAP_DIRECTORY_ORACLE_VIRTUAL_DIRECTORY, //!< Directory server is Oracle Virtual Directory.
FR_LDAP_DIRECTORY_SUN_ONE_DIRECTORY, //!< Directory server is Sun One Directory.
FR_LDAP_DIRECTORY_SIEMENS_AG, //!< Directory server is Siemens AG.
- FR_LDAP_DIRECTORY_UNBOUND_ID //!< Directory server is Unbound ID
+ FR_LDAP_DIRECTORY_UNBOUND_ID, //!< Directory server is Unbound ID
+ FR_LDAP_DIRECTORY_SAMBA //!< Directory server is Samba.
} fr_ldap_directory_type_t;
typedef enum {
{ L("Oracle Internet Directory"), FR_LDAP_DIRECTORY_ORACLE_INTERNET_DIRECTORY },
{ L("Oracle Unified Directory"), FR_LDAP_DIRECTORY_ORACLE_UNIFIED_DIRECTORY },
{ L("Oracle Virtual Directory"), FR_LDAP_DIRECTORY_ORACLE_VIRTUAL_DIRECTORY },
+ { L("Samba"), FR_LDAP_DIRECTORY_SAMBA },
{ L("Siemens AG"), FR_LDAP_DIRECTORY_SIEMENS_AG },
{ L("Sun One Directory"), FR_LDAP_DIRECTORY_SUN_ONE_DIRECTORY },
{ L("Unbound ID"), FR_LDAP_DIRECTORY_UNBOUND_ID },
if (directory->vendor_str) {
if (strcasestr(directory->vendor_str, "International Business Machines")) {
directory->type = FR_LDAP_DIRECTORY_IBM;
+ } else if (strcasestr(directory->vendor_str, "Samba Team")) {
+ directory->type = FR_LDAP_DIRECTORY_SAMBA;
}
goto found;
switch (directory->type) {
case FR_LDAP_DIRECTORY_ACTIVE_DIRECTORY:
case FR_LDAP_DIRECTORY_EDIRECTORY:
+ case FR_LDAP_DIRECTORY_SAMBA:
directory->cleartext_password = false;
break;
warnings:
switch (ttrunk->directory->type) {
case FR_LDAP_DIRECTORY_ACTIVE_DIRECTORY:
+ case FR_LDAP_DIRECTORY_SAMBA:
RWDEBUG2("!!! Found map between LDAP attribute and a FreeRADIUS password attribute");
- RWDEBUG2("!!! Active Directory does not allow passwords to be read via LDAP");
+ RWDEBUG2("!!! %s does not allow passwords to be read via LDAP",
+ (ttrunk->directory->type == FR_LDAP_DIRECTORY_SAMBA ? "Samba" : "Active Directory"));
RWDEBUG2("!!! Remove the password map and either:");
RWDEBUG2("!!! - Configure authentication via ntlm_auth (mschapv2 only)");
RWDEBUG2("!!! - Configure authentication via wbclient (mschapv2 only)");