XXL-JOB-LDAP
xxl-job
xxl-job: 是一个分布式任务调度平台,核心设计目标是开发迅速、学习简单、轻量级、易扩展。
项目地址:https://gitcode.com/gh_mirrors/xx/xxl-job
免费下载资源
·
<dependency>
<groupId>org.springframework.ldap</groupId>
<artifactId>spring-ldap-core</artifactId>
</dependency>
package com.xxl.job.admin.core.conf;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.ldap.core.support.LdapContextSource;
import java.util.HashMap;
import java.util.Map;
/**
* LDAP
*/
@Configuration
public class LdapConfiguration {
@Value("${ldap.url}")
private String ldapUrl;
@Value("${ldap.admin}")
private String ldapAdmin;
@Value("${ldap.passwd}")
private String ldapPasswd;
@Bean
public LdapContextSource contextSource() {
LdapContextSource contextSource = new LdapContextSource();
Map<String, Object> config = new HashMap();
contextSource.setUrl(ldapUrl);
contextSource.setUserDn(ldapAdmin);
contextSource.setPassword(ldapPasswd);
config.put("java.naming.ldap.attributes.binary", "objectGUID");
contextSource.setPooled(true);
contextSource.setBaseEnvironmentProperties(config);
return contextSource;
}
@Bean
public LdapTemplate ldapTemplate() {
if (null == ldapTemplate)
ldapTemplate = new LdapTemplate(contextSource());
return ldapTemplate;
}
private LdapTemplate ldapTemplate;
}
@Autowired
private LdapTemplate ldapTemplate;
public boolean checkLdapUserPasswd(String username, String password) {
AndFilter filter = new AndFilter();
filter.and(new EqualsFilter("objectclass", "person"))
.and(new EqualsFilter("uid", username));
boolean authSuccess = ldapTemplate.authenticate("", filter.toString(), password);
return authSuccess;
}
public boolean checkLdapUser(String username) {
String filter = "(&(objectclass=person)(uid=" + username + "))";
List list = ldapTemplate.search("", filter, new AttributesMapper() {
@Override
public Object mapFromAttributes(Attributes attributes) throws NamingException {
return attributes.get("uid");
}
});
return !CollectionUtils.isEmpty(list);
}
XxlJobUser xxlJobUser = xxlJobUserDao.loadByUserName(username);
boolean ldapCheckRes = checkLdapUser(username);
//if ldap
if (ldapCheckRes) {
if (!checkLdapUserPasswd(username, password)) {
return new ReturnT<String>(500, I18nUtil.getString("login_param_unvalid"));
}
if (xxlJobUser == null) {
xxlJobUser=new XxlJobUser();
xxlJobUser.setPassword("\uD83D\uDE00");//can`t for login
xxlJobUser.setUsername(username);
xxlJobUserDao.save(xxlJobUser);
}
}else{
// valid passowrd
if (xxlJobUser == null) {
return new ReturnT<String>(500, I18nUtil.getString("login_param_unvalid"));
}
String passwordMd5 = DigestUtils.md5DigestAsHex(password.getBytes());
if (!passwordMd5.equals(xxlJobUser.getPassword())) {
return new ReturnT<String>(500, I18nUtil.getString("login_param_unvalid"));
}
}
GitHub 加速计划 / xx / xxl-job
27.15 K
10.79 K
下载
xxl-job: 是一个分布式任务调度平台,核心设计目标是开发迅速、学习简单、轻量级、易扩展。
最近提交(Master分支:1 个月前 )
e5d26ba2 - 2 个月前
977ad87b - 2 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)