LdapSync信息同步
概述
盘古封装了Ldap同步人员与组织信息的组件pangea-ldap
,通过组件中的方法可直接获取Ldap人员与组织信息。
使用方法
1.在工程pom.xml
中添加依赖
- 注意:因ldap方相关方法调整,要求依赖版本必须
>=2.2
html
<!-- 盘古对象存储模块 -->
<dependency>
<groupId>com.hisense.pangea</groupId>
<artifactId>pangea-ldap</artifactId>
</dependency>
2.配置文件
在yml配置文件添加以下作为默认配置
- 注意:
- 应用系统提供系统名称、IP、LDAP组织及用户所需字段给
统一认证平台管理员
- 管理员分配appSecretId、appSecretKey
测试环境
pangea:
ldap: #ldap相关配置
token-url: https://${LDAP_TOKEN_URL:ssodev.hisense.com}/sso-ws/tokenRestfulApi/getLdapQueryToken
eid-class: ldap
user:
#Ldap用户id
id: ${LDAP_USER_APPSECRET_ID:xxxxxxxxxxxxxxxxxxx}
#Ldap用户key
key: ${LDAP_USER_APPSECRET_KEY:xxxxxxxxxxxxxxxxxxxxx}
#Ldap用户webservices地址
webservice: ${LDAP_WEB_SERVICE:http://idmdev.hisense.com}/esc-ws/services/ldapQueryInfoParams?wsdl
dept:
#Ldap组织id
id: ${LDAP_DEPT_APPSECRET_ID:xxxxxxxxxxxxxxxxx}
#Ldap组织key
key: ${LDAP_DEPT_APPSECRET_KEY:xxxxxxxxxxxxxxxxxxxxx}
#Ldap组织webservices地址
webservice: ${LDAP_DEPT_WEBSERVICE:http://idmdev.hisense.com}/esc-ws/services/ldapQueryInfoParams?wsdl
生产环境
pangea:
ldap: #ldap相关配置
token-url: https://${LDAP_TOKEN_URL:sso.hisense.com}/sso-ws/tokenRestfulApi/getLdapQueryToken
eid-class: ldap
user:
#Ldap用户id
id: ${LDAP_USER_APPSECRET_ID:xxxxxxxxxxxxxxxxxxx}
#Ldap用户key
key: ${LDAP_USER_APPSECRET_KEY:xxxxxxxxxxxxxxxxxxxxx}
#Ldap用户webservices地址
webservice: ${LDAP_WEB_SERVICE:http://ldapapi.hisense.com}/esc-ws/services/ldapQueryInfoParams?wsdl
dept:
#Ldap组织id
id: ${LDAP_DEPT_APPSECRET_ID:xxxxxxxxxxxxxxxxx}
#Ldap组织key
key: ${LDAP_DEPT_APPSECRET_KEY:xxxxxxxxxxxxxxxxxxxxx}
#Ldap组织webservices地址
webservice: ${LDAP_DEPT_WEBSERVICE:http://ldapapi.hisense.com}/esc-ws/services/ldapQueryInfoParams?wsdl
3.代码使用
做好以上两步配置后,可直接在代码中使用相关方法。
常用方法举例
java
private final PangeaLdapProperties ldapProperties;
/**
* 根据查询条件查询用户信息
* @param params 查询条件,例:uid=zhangsan,mail=zhangsan@hisense.com。可为空。
* @return
*/
@GetMapping("getLdapInfoByParams")
public List<LdapUserInfoDTO> getLdapInfoByParams(String params) {
List<LdapUserInfoDTO> ldapUserInfoDTOList = LdapService.getLdapInfoByParams(ldapProperties.getTokenUrl(), ldapProperties.getUser().getWebservice(), ldapProperties.getUser().getId(), ldapProperties.getUser().getKey(), "");
return ldapUserInfoDTOList;
}
/**
* 查询LDAP组织
* @param o 查询条件,例:流程IT与数据管理部。可为空。不允许为空。
* @return ldap组织
*/
@GetMapping("getLdapDept")
public List<LdapDeptInfoDTO> getLdapDept(String o) {
List<LdapDeptInfoDTO> ldapDeptInfoDTOS = LdapService.getLdapDept(ldapProperties.getTokenUrl(), ldapProperties.getDept().getWebservice(), ldapProperties.getDept().getId(), ldapProperties.getDept().getKey(), null);
return ldapDeptInfoDTOS;
}
/**
* 根据ldap账号访问ldap换取账号信息
* @param ldapName 需查询的ldap账号,例:zhangsan。不允许为空。
* @param isFuzzy 是否模糊查询 true/是, false/否
* @return ldap账号信息
*/
@GetMapping("getLdapInfoByUid")
public List<LdapUserInfoDTO> getLdapInfoByUid(String ldapName, boolean isFuzzy) {
List<LdapUserInfoDTO> ldapUserInfoDTOList = LdapService.getLdapInfoByUid(ldapProperties.getTokenUrl(), ldapProperties.getUser().getWebservice(), ldapProperties.getUser().getId(), ldapProperties.getUser().getKey(), ldapName, false);
return ldapUserInfoDTOList;
}
/**
* 根据部门查询该部门下的所有用户
*
* @param orgName 组织名称,例:流程IT与数据管理部。
* @return 查询结果
*/
@GetMapping("getLdapInfoByOu")
public List<LdapUserInfoDTO> getLdapInfoByOu(String tokenUrl, String webService, String appid, String appSecret, String orgName) {
List<LdapUserInfoDTO> ldapUserInfoDTOList = LdapService.getLdapInfoByUid(ldapProperties.getTokenUrl(), ldapProperties.getUser().getWebservice(), ldapProperties.getUser().getId(), ldapProperties.getUser().getKey(), orgName);
return ldapUserInfos;
}
示例
1.获得全量Ldap用户信息
2.获得全量Ldap组织信息
注意事项 :已使用pangea-ldap
组件更新ldap组织信息失败问题解决
- 因ldap方相关方法调整,
ldapQueryInfo
被废弃,导致已使用pangea-ldap
组件获取Ldap组织信息
的方法调用失败,使得项目组同步ldap最新组织信息失败。
解决方案:
确定依赖的
pangea-ldap
版本>=2.2
确认ldap配置信息中
组织webservices地址
更改为,如下:生产:http://ldapapi.hisense.com/esc-ws/services/ldapQueryInfoParams?wsdl
测试:http://idmdev.hisense.com/esc-ws/services/ldapQueryInfoParams?wsdl