Вы можете попробовать OkLdap.
OkLdap — это простой клиент, специально разработанный для интеграции внутренних учётных записей на основе LDAP.
Введение зависимости:
<dependency>
<groupId>org.noear</groupId>
<artifactId>okldap</artifactId>
<version>1.1.4</version>
</dependency>
Конфигурация:
#Необходимые параметры
ldap:
url: "ldap://127.0.0.1:389"
baseDn: "DC=company,DC=com"
bindDn: "cn=admin,dc=company,dc=com"
paasword: "123456"
userFilter: "cn=%s"
groupFilter: "cn=%s"
#Параметры демонстрационного примера
demo:
limit:
groupCn: "manager"
Код: (дополнительный код приложения, см. модульные тесты в исходном коде)
//Вход приложения
public class App {
public static void main(String[] args) {
Solon.start(App.class, args);
}
}
//Конфигуратор компонента
@Configuration
public class Config {
@Bean
public LdapClient ldapClient(@Inject("${ldap}") LdapClient ldapClient) {
return ldapClient;
}
}
//Контроллер примера
@Mapping("demo")
@Controller
public class DemoController {
@Inject
LdapClient ldapClient;
@Inject("${demo.limit.groupCn}")
String limitGroupCn;
/**
* Вход::
* */
@Post
@Mapping("login")
public Result login(String userName, String userPassword) {
try (LdapSession session = ldapClient.open()) {
LdapPerson person = session.findPersonOne(userName);
if (person == null) {
return Result.failure("Пользователь не существует");
}
if (person.verifyPassword(userPassword) == false) {
return Result.failure("Пароль пользователя неверен");
}
if (Utils.isNotEmpty(limitGroupCn)) {
if (person.inGroup(session.findGroupOne(limitGroupCn)) == false) {
return Result.failure("Недостаточно прав");
}
}
//Можно синхронизировать с локальной базой данных пользователей...
return Result.succeed();
}
}
/**
* Создание пользователя::
* */
@Post
@Mapping("create")
public Result create(String userName, String userPassword, String stageName, String realName) {
try (LdapSession session = ldapClient.open()) {
LdapPerson person = new LdapPerson();
person.setCn(userName);
person.setUserPassword(userPassword);
person.setDisplayName(stageName);
person.setGivenName(realName);
session.createPerson("employee", person);
}
return Result.succeed();
}
/**
* Обновление пользователя::
* */
@Post
@Mapping("update")
public Result update(String userName, String stageName, String realName) {
try (LdapSession session = ldapClient.open()) {
LdapPerson person = session.findPersonOne(userName);
person.setDisplayName(stageName);
person.setGivenName(realName);
session.updatePerson(person);
}
return Result.succeed();
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )