Я также делаю то же самое в моем приложении:
- Аутентификация против LDAP
- Аутентификация по базе данных.
Прежде всего, сервер LDAP уже настроен.
Таким образом, в файле application.properties у нас есть вся информация, необходимая для подключения к серверу LDAP, и логическое поле для проверки, хотим ли мы проходить аутентификацию на сервере LDAP или нет.
project.ldap.server.protocol=
project.ldap.server.host.name=
project.ldap.server.ip=
project.ldap.server.port=
project.ldap.service.url=
project.ldap.authentication=(false/true)
Сервис, который будет выполнять аутентификацию на сервере LDAP
@Service
public class LDAPAuthenticationConnectorService {
@Value("${project.ldap.server.protocol}")
private String LDAP_SERVER_PROTOCOL;
@Value("${project.ldap.server.ip}")
private String LDAP_SERVER_IP;
@Value("${project.ldap.server.port}")
private int LDAP_SERVER_PORT;
@Value("${project.ldap.service.url}")
private String LDAP_SERVICE_URL;
/**
*
* @param loginDto
* @throws ADAuthenticationException
*/
public String authenticate(LoginDto loginDto) throws ADAuthenticationException{//logic }
Теперь в FacadeImplementation вы можете сделать следующее:
public class LoginFacadeImpl implements LoginFacadeInt {
@Value("${project.ldap.authentication}")
private Boolean isProjectLDAPAuthenticationEnabled;
@Override
public UserDto authenticateUser(String userName, String password) {
try {
authenticateViaLDAP(userName, password);
} catch (Exception e1) {
//do authetication against database
UserEntity userEntityForAuthentication =
UserManagementDaoInt.authenticateUser(userName,
AuthenticationUtils.convertPasswordToSha256(password));
}
Надеюсь, это поможет :)
Дайте мне знать:)