gpt4 book ai didi

spring-boot - 在 Spring Boot 中为 LDAP 身份验证设置超时值

转载 作者:行者123 更新时间:2023-12-04 15:19:11 24 4
gpt4 key购买 nike

我通过以下方式使用 Spring LDAP 身份验证:

auth
.ldapAuthentication()
.userSearchFilter("userPrincipalName={0}")
.contextSource()
.managerDn(ldapAuthenticationConfig.getManagerDn())
.managerPassword(ldapAuthenticationConfig.getManagerPassword())
.url(ldapAuthenticationConfig.getUrl());

但是,当 LDAP 服务器不可用时,登录页面会花费太多时间。我想在相当长的时间内了解我是否可以登录。

这是我使用的依赖项:
    <dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-ldap</artifactId>
</dependency>

如何在 Spring Boot 中为 LDAP 身份验证设置超时值?

最佳答案

我也遇到了这个问题,找了几个答案指出com.sun.jndi.ldap.connect.timeout环境变量,但找不到如何使用 Java Config 添加到 Spring Security。

要完成它,首先提取上下文源的创建:

@Autowired
private DefaultSpringSecurityContextSource context;

@Autowired
public void configureGlobal(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {
authenticationManagerBuilder
.ldapAuthentication()
.userSearchFilter(LDAP_USER_SEARCH_FILTER)
.contextSource(context);
}

然后,在创建上下文源时(我在同一个配置类中完成,没有构建器),您可以指定环境属性,并且可以在那里添加超时属性:
@Bean
public DefaultSpringSecurityContextSource createContext() {
DefaultSpringSecurityContextSource contextSource = new DefaultSpringSecurityContextSource(LDAP_SERVER);
contextSource.setUserDn(LDAP_MANAGER_DN);
contextSource.setPassword(LDAP_MANAGER_PASSWORD);

Map<String, Object> environment = new HashMap<>();
environment.put("com.sun.jndi.ldap.connect.timeout", LDAP_TIMEOUT);
contextSource.setBaseEnvironmentProperties(environment);
return contextSource;
}

请注意,大写的 LDAP_ 变量都是我的配置类中的常量。

关于spring-boot - 在 Spring Boot 中为 LDAP 身份验证设置超时值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42517398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com