首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用LDAP登录模块进行Teiid VDB数据虚拟化时身份验证失败

使用LDAP登录模块进行Teiid VDB数据虚拟化时身份验证失败
EN

Stack Overflow用户
提问于 2018-09-12 00:26:42
回答 1查看 84关注 0票数 0

我们当前在为已部署的VDB配置LDAP身份验证时遇到问题,我们希望在进行身份验证时输入active directory用户名和密码。

我们已经成功地为管理控制台配置了LDAP身份验证,但在服务器启动过程中遇到错误。

我已经成功地为hostname:9990上的管理控制台配置了身份验证。我已经这样做了,通过对Standalone.xml进行以下更改,我们可以提供活动目录用户/pass并登录到管理控制台。

下面是我们遇到的问题所定义的安全域。和一个正在运行的安全领域。

这是我们收到的错误

代码语言:javascript
复制
ERROR [org.jboss.as.connector.subsystems.datasources.AbstractDataSourceService$AS7DataSourceDeployer] (MSC service thread 1-1) Exception during createSubject() for java:/refresh: PBOX000016: Access denied: authentication failed: java.lang.SecurityException: PBOX000016: Access denied: authentication failed
    at org.jboss.security.plugins.JBossSecuritySubjectFactory.createSubject(JBossSecuritySubjectFactory.java:84)
    at org.jboss.jca.deployers.common.AbstractDsDeployer$1.run(AbstractDsDeployer.java:1086)
    at org.jboss.jca.deployers.common.AbstractDsDeployer$1.run(AbstractDsDeployer.java:1081)
    at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.8.0_121]
    at org.jboss.jca.deployers.common.AbstractDsDeployer.createSubject(AbstractDsDeployer.java:1080)
    at org.jboss.jca.deployers.common.AbstractDsDeployer.deployDataSource(AbstractDsDeployer.java:600)
    at org.jboss.jca.deployers.common.AbstractDsDeployer.createObjectsAndInjectValue(AbstractDsDeployer.java:282)
    at org.jboss.as.connector.subsystems.datasources.AbstractDataSourceService$AS7DataSourceDeployer.deploy(AbstractDataSourceService.java:318)
    at org.jboss.as.connector.subsystems.datasources.AbstractDataSourceService.start(AbstractDataSourceService.java:122)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1980)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1913)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_121]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_121]
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_121]

这是在为管理面板进行身份验证时工作的安全领域

代码语言:javascript
复制
<security-realm name="ldap-security-realm">
<authentication>
    <ldap connection="ldap-connection" base-dn="dc=main">
         <advanced-filter filter="(&amp;(sAMAccountName={0}))"/>
     </ldap>
 </authentication>
</security-realm>

<outbound-connections>
   <ldap name="ldap-connection" url="ldap://hostname:389" search dn="adminusername" search-credential="adminpassword"/>
</outbound-connections>

这是我们尝试为已部署的VDB启用身份验证的安全域

代码语言:javascript
复制
<datasource jndi-name="java:/refresh" pool-name="refresh" enabled="true">
    <connection-url>jdbc:teiid:refresh@mm://hostname:31000</connection-url>
    <driver>teiid</driver>
    <security>
      <security-domain>test_ldap_security_domain</security-domain>
    </security>
</datasource>

<security-domain name="test_ldap_security_domain">
    <authentication>
         <login-module code="LdapExtended" flag="sufficient">
             <module-option name="java.naming.provider.url" value="ldap://hostname:389" />
             <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory" />
             <module-option name="java.naming.security.authentication" value="simple" />
             <module-option name="bindDN" value="adminusername" />
             <module-option name="bindCredential" value="adminpassword" />
             <module-option name="distinguishedNameAttribute" value="sAMAccountName" />
             <module-option name="baseFilter" value="(sAMAccountName={0})" />  
             <module-option name="baseCtxDN" value="dc=main" />
             </login-module>
     </authentication>
</security-domain>

<transport name="odata">
    <authentication security-domain="test_ldap_security_domain"/>
</transport>
<transport name="jdbc" socket-binding="teiid-jdbc" protocol="teiid">
    <authentication security-domain="test_ldap_security_domain"/>
</transport>
<transport name="odbc" socket-binding="teiid-odbc" protocol="pg">
    <authentication security-domain="test_ldap_security_domain"/>
    <ssl mode="disabled"/>
</transport>
EN

回答 1

Stack Overflow用户

发布于 2018-09-13 05:46:28

默认情况下,启动期间的数据源配置会尝试创建最小数量的连接。由于数据源是基于用户凭据进行保护的,并且在启动期间没有活动用户,因此它会失败。

更改数据源配置,使其在启动期间不创建任何连接。

代码语言:javascript
复制
<pool>
    <prefill>false</prefill>
</pool>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52280370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档