...
需求背景
在很多的应用项目中,客户会采用Windows域登录认证平台,要求 Smartbi 也能使用windows域账号密码进行验证,效果如下。
注意 |
---|
用户组的信息在登录的时候进行同步,根据用户的组信息再自动创建组,这个组是AD域组的信息(另外配置的AD域用户也会自动同步过来) |
...
特性 | AD域 | LDAP协议 | LDAPS协议 |
---|---|---|---|
性质 | 目录服务实现 | 访问目录服务的协议 | LDAP的安全版本 |
开发者 | 微软 | 开放标准(IETF) | 开放标准(IETF) |
加密 | 支持多种加密方式 | 默认不加密 | 强制SSL/TLS加密 |
端口 | 多端口(389,636,88,3268,3269,9389等) | 389 | 636 |
依赖关系 | 实现LDAP协议 | AD域使用LDAP作为通信协议 | 是LDAP的安全增强 |
二. 使用说明
...
使用说明
扩展包部署
...
注意 |
---|
更新扩展包之前,请做好知识库以及扩展包的备份。 |
...
配置说明
1、获取ad.properties文件:ad.properties
...
3、启动Smartbi 系统后进入http://localhost:18080/smartbi/vision/config.jsp 配置界面
3.1 配置为ad1、配置为ad.properties存放在服务器上的位置
3.2 修改2、修改"用户管理"配置段中的"加密类型"为CLASS,"登录验证类"请按需填写,具体如下图所示。
...
4、配置完成后,点击右下角的"保存"按钮,根据提示再重启Smartbi 后,即可使用AD域用户的用户名和密码登录Smartbi。
...
注意事项
...
使用ldaps证书配置
当在ad.properties中配置了security_protocol=ssl、在configssl,在config.jsp中配置了ldaps支持的登录验证类LDAPSAuthenication后,不设置相关证书虎在登录时报错:jsp中配置了ldaps支持的登录验证类LDAPSAuthenication后,不设置相关证书会在登录时报错:
不设置证书将会在登录时报错:
如果想正常使用ldaps,还需要进行证书配置,有两种配置方式,如下:
1.1.1. 方式一:获取指定域名的信任库并放置到jdk信任库所在目录下(不推荐)
PS.这种方式没有验证过,因为在获取证书时会存在超时,理论可行
以windows环境为例,这里使用一个.java文件来获取信任库文件,参考附件:
将InstallCert.java下载到任意目录中,javac编译:
然后运行命令java InstallCert + 域名
这个域名就是ad.properties中配置的baseName的普通写法,如baseName=DC=baidu,DC=com则此命令写作java InstallCert baidu.com
然后输入1,然后回车:
然后可以看到当前目录下多了一个文件jssecacerts,将这个文件放置到目录$JAVA_HOME/jre/lib/security下,一般是放置到Smartbi/jdk/jre/ilb/security目录中,然后重启服务器即可。
1.1.2. 方式二:在已经获取到证书文件(.cer或.crt后缀的文件)后,通过命令行将证书导入到Java信任库(推荐)
自行获取到目标服务器的证书文件
在已经获取到证书文件(.cer或.crt后缀的文件)后,通过命令行将证书导入到Java信任库
自行获取到目标服务器的证书文件
先备份Java的信任库cacerts,信任库位置:
...
Smartbi/jdk/jre/ilb/security/cacerts
然后在上述证书所在的目录下进入cmd,使用keytool命令导入证书到Java的信任库中:
...
keytool -import -alias 域名 -file 上述证书文件(包含后缀) -keystore $JAVA_HOME/jre/lib/security/cacerts
即:
keytool -import -alias baidu.com com -file XXX.cer -keystore Smartbi/jdk/jre/lib/security/cacerts
即可实现导入证书,注意名字只能使用域名,不可自定义,否则在登录时会报会报如下错误:
至此证书导入Java信任库完成,即可正常登录。
...
查看信任库中的证书时需要输入密码,默认密码为:changeit
同步AD用户到Smartbi
扩展包支持使用计划任务,使用全量的形式同步AD用户到Smartbi。
定义计划任务:
代码块 | ||||
---|---|---|---|---|
| ||||
var paramMap = {
//分页大小(一次查询用户信息条数),若小于等于0,则不分页,当为空时默认分页10
pageSize : 800,
//“用户名”应该使用的AD域属性字段
usernameKey : "sAMAccountName",
//“用户别名”应该使用的AD域属性字段
userAliasKey : "displayName",
//“用户描述”应该使用的AD域属性字段
userDesKey : "mobile",
//同步时的默认密码
defaultPassword : "123456"
}
//以下内容不需要配置
var paramStr = JSON.stringify(paramMap);
connector.remoteInvoke("LDAPSAuthenicationModule", "synchronizeUser", [paramStr]); |
在任务脚本中粘贴上述内容,脚本的参数参考注释。保存,然后测试运行。
同步过来时,对于禁用的用户,只是状态禁用,不会放置在上面提到的禁用组中。上面的禁用组只是针对于Smartbi中有但是AD中没有的用户的。对于没有部门的用户,将会默认保存在DEPARTMENT根组下。
注意 |
---|
同步前请务必备份好用户管理。 |
若是配置后发现不能正常使用,可以通过下面方法来获取错误信息,以便定位到问题原因。
...