我花了一整天的时间试图找出这个奇怪的问题。我让我的NiFi实例站在Linux服务器上。我在login-identity-providers.xml中配置了ldap-provider,如下所示
<provider>
<identifier>ldap-provider</identifier>
<class>org.apache.nifi.ldap.LdapProvider</class>
<property name="Authentication Strategy">SIMPLE</property>
<property name="Manager DN"></property>
<property name="Manager Password"></property>
<property name="TLS - Keystore">/Data/ssl/server_keystore.jks</property>
<property name="TLS - Keystore Password">changeit</property>
<property name="TLS - Keystore Type">JKS</property>
<property name="TLS - Truststore">/Data/ssl/server_truststore.jks</property>
<property name="TLS - Truststore Password">changeit</property>
<property name="TLS - Truststore Type">JKS</property>
<property name="TLS - Client Auth"></property>
<property name="TLS - Protocol">TLSv1.2</property>
<property name="TLS - Shutdown Gracefully"></property>
<property name="Referral Strategy">FOLLOW</property>
<property name="Connect Timeout">10 secs</property>
<property name="Read Timeout">10 secs</property>
<property name="Url">ldaps://myserver.hostname:636</property>
<property name="User Search Base">ou=people,dc=xxx,dc=net</property>
<property name="User Search Filter">cn={0}</property>
<property name="Authentication Expiration">12 hours</property>
当我开始使用nifi时,我首先提示登录页面。但是,我一直在
2016-07-28 00:17:43,527 ERROR [NiFi Web Server-64] org.apache.nifi.ldap.LdapProvider myserver.hostname:636; nested exceptin is javax.naming.CommunicationException: myserver.hostname:636; [Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]
然后我尝试在bootstrap.conf中使用jvm参数作为
java.arg.15=-Djavax.net.ssl.trustStore=/Data/ssl/server_truststore.jks
它工作得很好。
我也尝试使用相同的truststore vm参数的SSLPoke.class,它也运行良好。
java -Djavax.net.ssl.trustStore=/Data/ssl/server_truststore.jks SSLPoke myserver.hostname 636
"Successfully connected"
现在我的问题是为什么我在NiFi login-identity-providers.xml中的配置不起作用?
答案 0 :(得分:3)
不幸的是,NiFi目前不支持LDAPS。有一个JIRA [1]来构建这个功能。 SIMPLE(纯文本)或START_TLS是唯一有效的选项。此外,仅在身份验证策略为START_TLS时才考虑SSL上下文配置选项。
答案 1 :(得分:1)
@davy_wei,
虽然Matt的评论是正确的,如果由于某种原因限制使用LDAP到您的LDAP / AD服务器(例如防火墙规则),一个选项是使用stunnel或socat在受保护的LDAP和NiFi的LDAP客户端。
示例stunnel配置看起来像:
...
[ldap2ldaps]
accept = 127.0.0.1:whatever_port_you_want
client = yes
connect = your.real.ldaps.fqdn.or.ip:636
...
请记住这是基本配置。您可能希望微调您的stunnel以符合您的安全要求(例如,限制为特定密码,TLS版本等)