org.dromara.maxkey.ldap

This commit is contained in:
MaxKey 2023-11-25 11:25:55 +08:00
parent b982f5f7f2
commit e62b2ab82a
24 changed files with 92 additions and 85 deletions

View File

@ -21,7 +21,7 @@
package org.dromara.maxkey.authn.realm.ldap;
import org.dromara.maxkey.authn.realm.IAuthenticationServer;
import org.dromara.maxkey.persistence.ldap.ActiveDirectoryUtils;
import org.dromara.maxkey.ldap.ActiveDirectoryUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -23,8 +23,8 @@ import java.util.concurrent.TimeUnit;
import org.dromara.maxkey.authn.realm.IAuthenticationServer;
import org.dromara.maxkey.crypto.password.PasswordReciprocal;
import org.dromara.maxkey.entity.LdapContext;
import org.dromara.maxkey.persistence.ldap.ActiveDirectoryUtils;
import org.dromara.maxkey.persistence.ldap.LdapUtils;
import org.dromara.maxkey.ldap.ActiveDirectoryUtils;
import org.dromara.maxkey.ldap.LdapUtils;
import org.dromara.maxkey.persistence.service.LdapContextService;
import com.github.benmanes.caffeine.cache.Cache;

View File

@ -26,7 +26,7 @@ import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import org.dromara.maxkey.authn.realm.IAuthenticationServer;
import org.dromara.maxkey.persistence.ldap.LdapUtils;
import org.dromara.maxkey.ldap.LdapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -15,7 +15,7 @@
*/
package org.dromara.maxkey.persistence.ldap;
package org.dromara.maxkey.ldap;
import java.util.Properties;

View File

@ -15,7 +15,7 @@
*/
package org.dromara.maxkey.persistence.ldap;
package org.dromara.maxkey.ldap;
import java.util.HashMap;
import java.util.Properties;

View File

@ -15,11 +15,12 @@
*/
package org.dromara.maxkey.constants.ldap;
package org.dromara.maxkey.ldap.constants;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* ActiveDirectoryUser objectclass attribute
@ -29,39 +30,9 @@ import java.util.Arrays;
*/
public class ActiveDirectoryUser {
public static ArrayList<String> OBJECTCLASS = new ArrayList<>(Arrays.asList("top", "person", "organizationalPerson", "user"));
public static String objectClass = "user";
/** userAccountControl值得说明
* http://support.microsoft.com/zh-cn/kb/305144
* https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/useraccountcontrol-manipulate-account-properties
*/
public static class userAccountControl{
//Property flag Value in hexadecimal Value in decimal
public static final int SCRIPT =0x0001 ;// 1
public static final int ACCOUNTDISABLE =0x0002 ;// 2
public static final int HOMEDIR_REQUIRED =0x0008 ;// 8
public static final int LOCKOUT =0x0010 ;// 16
public static final int PASSWD_NOTREQD =0x0020 ;// 32
public static final int PASSWD_CANT_CHANGE =0x0040 ;// 64 You can't assign this permission by directly modifying the UserAccountControl attribute. For information about how to set the permission programmatically, see the Property flag descriptions section.
public static final int ENCRYPTED_TEXT_PWD_ALLOWED =0x0080 ;// 128
public static final int TEMP_DUPLICATE_ACCOUNT =0x0100 ;// 256
public static final int NORMAL_ACCOUNT =0x0200 ;// 512
public static final int INTERDOMAIN_TRUST_ACCOUNT =0x0800 ;// 2048
public static final int WORKSTATION_TRUST_ACCOUNT =0x1000 ;// 4096
public static final int SERVER_TRUST_ACCOUNT =0x2000 ;// 8192
public static final int DONT_EXPIRE_PASSWORD =0x10000 ;// 65536
public static final int MNS_LOGON_ACCOUNT =0x20000 ;// 131072
public static final int SMARTCARD_REQUIRED =0x40000 ;// 262144
public static final int TRUSTED_FOR_DELEGATION =0x80000 ;// 524288
public static final int NOT_DELEGATED =0x100000 ;// 1048576
public static final int USE_DES_KEY_ONLY =0x200000 ;// 2097152
public static final int DONT_REQ_PREAUTH =0x400000 ;// 4194304
public static final int PASSWORD_EXPIRED =0x800000 ;// 8388608
public static final int TRUSTED_TO_AUTH_FOR_DELEGATION =0x1000000 ;// 16777216
public static final int PARTIAL_SECRETS_ACCOUNT =0x04000000 ;// 67108864
}
public static final List<String> OBJECTCLASS = new ArrayList<>(Arrays.asList("top", "person", "organizationalPerson", "user"));
public static final String objectClass = "user";
/*
*常规
* First Name givenName

View File

@ -0,0 +1,33 @@
package org.dromara.maxkey.ldap.constants;
/** userAccountControl值得说明
* http://support.microsoft.com/zh-cn/kb/305144
* https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/useraccountcontrol-manipulate-account-properties
*/
public class ActiveDirectoryUserAccountControl {
//Property flag Value in hexadecimal Value in decimal
public static final int SCRIPT =0x0001 ;// 1
public static final int ACCOUNTDISABLE =0x0002 ;// 2
public static final int HOMEDIR_REQUIRED =0x0008 ;// 8
public static final int LOCKOUT =0x0010 ;// 16
public static final int PASSWD_NOTREQD =0x0020 ;// 32
public static final int PASSWD_CANT_CHANGE =0x0040 ;// 64 You can't assign this permission by directly modifying the UserAccountControl attribute. For information about how to set the permission programmatically, see the Property flag descriptions section.
public static final int ENCRYPTED_TEXT_PWD_ALLOWED =0x0080 ;// 128
public static final int TEMP_DUPLICATE_ACCOUNT =0x0100 ;// 256
public static final int NORMAL_ACCOUNT =0x0200 ;// 512
public static final int INTERDOMAIN_TRUST_ACCOUNT =0x0800 ;// 2048
public static final int WORKSTATION_TRUST_ACCOUNT =0x1000 ;// 4096
public static final int SERVER_TRUST_ACCOUNT =0x2000 ;// 8192
public static final int DONT_EXPIRE_PASSWORD =0x10000 ;// 65536
public static final int MNS_LOGON_ACCOUNT =0x20000 ;// 131072
public static final int SMARTCARD_REQUIRED =0x40000 ;// 262144
public static final int TRUSTED_FOR_DELEGATION =0x80000 ;// 524288
public static final int NOT_DELEGATED =0x100000 ;// 1048576
public static final int USE_DES_KEY_ONLY =0x200000 ;// 2097152
public static final int DONT_REQ_PREAUTH =0x400000 ;// 4194304
public static final int PASSWORD_EXPIRED =0x800000 ;// 8388608
public static final int TRUSTED_TO_AUTH_FOR_DELEGATION =0x1000000 ;// 16777216
public static final int PARTIAL_SECRETS_ACCOUNT =0x04000000 ;// 67108864
}

View File

@ -15,10 +15,11 @@
*/
package org.dromara.maxkey.constants.ldap;
package org.dromara.maxkey.ldap.constants;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* GroupOfNames objectclass attribute
@ -27,9 +28,9 @@ import java.util.Arrays;
*
*/
public class GroupOfNames {
public static ArrayList<String> OBJECTCLASS = new ArrayList<>(Arrays.asList("top", "groupOfNames"));
public static final List<String> OBJECTCLASS = new ArrayList<>(Arrays.asList("top", "groupOfNames"));
public static String objectClass = "groupOfNames";
public static final String objectClass = "groupOfNames";
public static final String DISTINGUISHEDNAME = "distinguishedname";
public static final String CN = "cn";
public static final String MEMBER = "member";

View File

@ -15,10 +15,11 @@
*/
package org.dromara.maxkey.constants.ldap;
package org.dromara.maxkey.ldap.constants;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* GroupOfUniqueNames objectclass attribute
@ -27,9 +28,9 @@ import java.util.Arrays;
*
*/
public class GroupOfUniqueNames {
public static ArrayList<String> OBJECTCLASS = new ArrayList<>(Arrays.asList("top", "groupOfUniqueNames"));
public static List<String> OBJECTCLASS = new ArrayList<>(Arrays.asList("top", "groupOfUniqueNames"));
public static String objectClass = "groupOfUniqueNames";
public static final String objectClass = "groupOfUniqueNames";
public static final String DISTINGUISHEDNAME = "distinguishedname";
public static final String CN = "cn";
public static final String UNIQUEMEMBER = "uniqueMember";

View File

@ -15,10 +15,11 @@
*/
package org.dromara.maxkey.constants.ldap;
package org.dromara.maxkey.ldap.constants;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* InetOrgPerson objectclass attribute
@ -27,9 +28,9 @@ import java.util.Arrays;
*
*/
public class InetOrgPerson {
public static ArrayList<String> OBJECTCLASS = new ArrayList<>(Arrays.asList("top", "person","organizationalPerson","inetOrgPerson"));
public static final List<String> OBJECTCLASS = new ArrayList<>(Arrays.asList("top", "person","organizationalPerson","inetOrgPerson"));
public static String objectClass = "inetOrgPerson";
public static final String objectClass = "inetOrgPerson";
public static final String DISTINGUISHEDNAME = "distinguishedname";
//person sup top
/**person sn MUST*/

View File

@ -15,10 +15,11 @@
*/
package org.dromara.maxkey.constants.ldap;
package org.dromara.maxkey.ldap.constants;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Organization objectclass attribute
@ -27,9 +28,9 @@ import java.util.Arrays;
*
*/
public class Organization {
public static ArrayList<String> OBJECTCLASS = new ArrayList<>(Arrays.asList("top", "organization"));
public static List<String> OBJECTCLASS = new ArrayList<>(Arrays.asList("top", "organization"));
public static String objectClass = "organization";
public static final String objectClass = "organization";
public static final String DISTINGUISHEDNAME = "distinguishedname";
/**Organization o*/

View File

@ -15,10 +15,11 @@
*/
package org.dromara.maxkey.constants.ldap;
package org.dromara.maxkey.ldap.constants;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* OrganizationalUnit objectclass attribute
@ -27,8 +28,8 @@ import java.util.Arrays;
*
*/
public class OrganizationalUnit {
public static ArrayList<String> OBJECTCLASS = new ArrayList<>(Arrays.asList("top", "OrganizationalUnit"));
public static String objectClass = "OrganizationalUnit";
public static final List<String> OBJECTCLASS = new ArrayList<>(Arrays.asList("top", "OrganizationalUnit"));
public static final String objectClass = "OrganizationalUnit";
public static final String DISTINGUISHEDNAME = "distinguishedname";
/**OrganizationalUnit ou*/
public static final String OU = "ou";

View File

@ -55,8 +55,6 @@ import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.crypto.password.Pbkdf2PasswordEncoder;
import org.springframework.security.crypto.scrypt.SCryptPasswordEncoder;
import com.nimbusds.jose.JOSEException;
@AutoConfiguration
public class ApplicationAutoConfiguration implements InitializingBean {
static final Logger _logger = LoggerFactory.getLogger(ApplicationAutoConfiguration.class);

View File

@ -20,7 +20,7 @@ package org.dromara.maxkey.persistence.ldap;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import org.dromara.maxkey.persistence.ldap.ActiveDirectoryUtils;
import org.dromara.maxkey.ldap.ActiveDirectoryUtils;
public class ActiveDirectoryUtilsTest {
public static void main(String[] args) throws Exception {

View File

@ -19,12 +19,12 @@ package org.dromara.maxkey.provision;
public class ProvisionAction {
public static String CREATE_ACTION = "CREATE_ACTION";
public static final String CREATE_ACTION = "CREATE_ACTION";
public static String DELETE_ACTION = "DELETE_ACTION";
public static final String DELETE_ACTION = "DELETE_ACTION";
public static String UPDATE_ACTION = "UPDATE_ACTION";
public static final String UPDATE_ACTION = "UPDATE_ACTION";
public static String PASSWORD_ACTION = "PASSWORD_ACTION";
public static final String PASSWORD_ACTION = "PASSWORD_ACTION";
}

View File

@ -19,22 +19,22 @@ package org.dromara.maxkey.provision;
public class ProvisionTopic {
public final static String USERINFO_TOPIC = "MXK_IDENTITY_USERINFO_TOPIC";
public static final String USERINFO_TOPIC = "MXK_IDENTITY_USERINFO_TOPIC";
public final static String PASSWORD_TOPIC = "MXK_IDENTITY_USERINFO_PASSWORD_TOPIC";
public static final String PASSWORD_TOPIC = "MXK_IDENTITY_USERINFO_PASSWORD_TOPIC";
public final static String ORG_TOPIC = "MXK_IDENTITY_ORG_TOPIC";
public static final String ORG_TOPIC = "MXK_IDENTITY_ORG_TOPIC";
public final static String ACCOUNT_TOPIC = "MXK_IDENTITY_ACCOUNT_TOPIC";
public static final String ACCOUNT_TOPIC = "MXK_IDENTITY_ACCOUNT_TOPIC";
public final static String ROLE_TOPIC = "MXK_ROLE_TOPIC";
public static final String ROLE_TOPIC = "MXK_ROLE_TOPIC";
public final static String ROLE_MEMBER_TOPIC = "MXK_ROLE_MEMBER_TOPIC";
public static final String ROLE_MEMBER_TOPIC = "MXK_ROLE_MEMBER_TOPIC";
public final static String ROLE_PRIVILEGES_TOPIC = "MXK_ROLE_PRIVILEGES_TOPIC";
public static final String ROLE_PRIVILEGES_TOPIC = "MXK_ROLE_PRIVILEGES_TOPIC";
public final static String RESOURCE_TOPIC = "MXK_RESOURCE_TOPIC";
public static final String RESOURCE_TOPIC = "MXK_RESOURCE_TOPIC";
public final static String CONNECTOR_HISTORY_TOPIC = "MXK_CONNECTOR_HISTORY_TOPIC";
public static final String CONNECTOR_HISTORY_TOPIC = "MXK_CONNECTOR_HISTORY_TOPIC";
}

View File

@ -25,11 +25,11 @@ import java.util.Map;
import java.util.Map.Entry;
import org.dromara.maxkey.constants.ConstsBoolean;
import org.dromara.maxkey.constants.ldap.ActiveDirectoryUser;
import org.dromara.maxkey.entity.ExtraAttr;
import org.dromara.maxkey.entity.ExtraAttrs;
import org.dromara.maxkey.entity.UserInfo;
import org.dromara.maxkey.entity.apps.AppsSAML20Details;
import org.dromara.maxkey.ldap.constants.ActiveDirectoryUser;
import org.opensaml.Configuration;
import org.opensaml.saml2.core.Attribute;
import org.opensaml.saml2.core.AttributeStatement;

View File

@ -27,12 +27,12 @@ import javax.naming.directory.SearchResult;
import org.apache.commons.lang3.StringUtils;
import org.dromara.maxkey.constants.ConstsStatus;
import org.dromara.maxkey.constants.ldap.OrganizationalUnit;
import org.dromara.maxkey.entity.HistorySynchronizer;
import org.dromara.maxkey.entity.Organizations;
import org.dromara.maxkey.entity.SynchroRelated;
import org.dromara.maxkey.persistence.ldap.ActiveDirectoryUtils;
import org.dromara.maxkey.persistence.ldap.LdapUtils;
import org.dromara.maxkey.ldap.ActiveDirectoryUtils;
import org.dromara.maxkey.ldap.LdapUtils;
import org.dromara.maxkey.ldap.constants.OrganizationalUnit;
import org.dromara.maxkey.synchronizer.AbstractSynchronizerService;
import org.dromara.maxkey.synchronizer.ISynchronizerService;
import org.slf4j.Logger;

View File

@ -18,7 +18,7 @@
package org.dromara.maxkey.synchronizer.activedirectory;
import org.dromara.maxkey.entity.Synchronizers;
import org.dromara.maxkey.persistence.ldap.ActiveDirectoryUtils;
import org.dromara.maxkey.ldap.ActiveDirectoryUtils;
import org.dromara.maxkey.synchronizer.ISynchronizerService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -26,14 +26,14 @@ import javax.naming.directory.SearchResult;
import org.apache.commons.lang3.StringUtils;
import org.dromara.maxkey.constants.ConstsStatus;
import org.dromara.maxkey.constants.ldap.ActiveDirectoryUser;
import org.dromara.maxkey.crypto.DigestUtils;
import org.dromara.maxkey.entity.HistorySynchronizer;
import org.dromara.maxkey.entity.Organizations;
import org.dromara.maxkey.entity.SynchroRelated;
import org.dromara.maxkey.entity.UserInfo;
import org.dromara.maxkey.persistence.ldap.ActiveDirectoryUtils;
import org.dromara.maxkey.persistence.ldap.LdapUtils;
import org.dromara.maxkey.ldap.ActiveDirectoryUtils;
import org.dromara.maxkey.ldap.LdapUtils;
import org.dromara.maxkey.ldap.constants.ActiveDirectoryUser;
import org.dromara.maxkey.synchronizer.AbstractSynchronizerService;
import org.dromara.maxkey.synchronizer.ISynchronizerService;
import org.slf4j.Logger;

View File

@ -28,11 +28,11 @@ import javax.naming.directory.SearchResult;
import org.apache.commons.lang3.StringUtils;
import org.dromara.maxkey.constants.ConstsStatus;
import org.dromara.maxkey.constants.ldap.OrganizationalUnit;
import org.dromara.maxkey.entity.HistorySynchronizer;
import org.dromara.maxkey.entity.Organizations;
import org.dromara.maxkey.entity.SynchroRelated;
import org.dromara.maxkey.persistence.ldap.LdapUtils;
import org.dromara.maxkey.ldap.LdapUtils;
import org.dromara.maxkey.ldap.constants.OrganizationalUnit;
import org.dromara.maxkey.synchronizer.AbstractSynchronizerService;
import org.dromara.maxkey.synchronizer.ISynchronizerService;
import org.slf4j.Logger;

View File

@ -18,7 +18,7 @@
package org.dromara.maxkey.synchronizer.ldap;
import org.dromara.maxkey.entity.Synchronizers;
import org.dromara.maxkey.persistence.ldap.LdapUtils;
import org.dromara.maxkey.ldap.LdapUtils;
import org.dromara.maxkey.synchronizer.ISynchronizerService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -25,13 +25,13 @@ import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import org.apache.commons.lang3.StringUtils;
import org.dromara.maxkey.constants.ldap.InetOrgPerson;
import org.dromara.maxkey.crypto.DigestUtils;
import org.dromara.maxkey.entity.HistorySynchronizer;
import org.dromara.maxkey.entity.Organizations;
import org.dromara.maxkey.entity.SynchroRelated;
import org.dromara.maxkey.entity.UserInfo;
import org.dromara.maxkey.persistence.ldap.LdapUtils;
import org.dromara.maxkey.ldap.LdapUtils;
import org.dromara.maxkey.ldap.constants.InetOrgPerson;
import org.dromara.maxkey.synchronizer.AbstractSynchronizerService;
import org.dromara.maxkey.synchronizer.ISynchronizerService;
import org.slf4j.Logger;

View File

@ -23,8 +23,8 @@ import org.dromara.maxkey.crypto.password.PasswordReciprocal;
import org.dromara.maxkey.entity.LdapContext;
import org.dromara.maxkey.entity.Message;
import org.dromara.maxkey.entity.UserInfo;
import org.dromara.maxkey.persistence.ldap.ActiveDirectoryUtils;
import org.dromara.maxkey.persistence.ldap.LdapUtils;
import org.dromara.maxkey.ldap.ActiveDirectoryUtils;
import org.dromara.maxkey.ldap.LdapUtils;
import org.dromara.maxkey.persistence.service.LdapContextService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;