authentication - Apache Nifi 的 LDAP 身份验证不起作用

标签 authentication active-directory ldap apache-nifi

我已经研究这个问题很长一段时间了,我希望你们就我面临的问题给出答案和建议。我正在尝试在我的虚拟机上获取 Nifi 独立实例,该实例位于我公司的网络中,并使用 login-identity-providers.xml 中的 ldap-provider 进行身份验证。我输入了除信任库和 keystore 之外的所有必需值,因为该公司有 LDAP 而不是 LDAPS 。所以,我想我不需要这些证书。我也在 authorizers.xml 中设置了初始管理员身份。当然,还要设置 https 端口和主机(0.0.0.0)。但是,当我尝试使用 URL 从浏览器运行并调用服务器时,无法访问网站ERR_CONNECTION_REFUSED 弹出。基本上连不上服务器。我已检查 DN、LDAP URL 和其他属性是否正确,并且在通过 ldapsearch 查询时正常工作。

那么,是因为我没有在配置中指定信任库和 keystore 吗?如果是这样,我是否需要为每个希望访问 Nifi 的客户端手动创建这些证书。我认为 LDAP 证书足以让一个人向 Nifi 进行身份验证。请告诉我如何获取信任库、服务器和客户端证书的 CA,以便员工通过 LDAP 使用 Nifi。

我的 ldap-provider 看起来像这样(已清理):

<provider>
    <identifier>ldap-provider</identifier>
    <class>org.apache.nifi.ldap.LdapProvider</class>
    <property name="Authentication Strategy">SIMPLE</property>

    <property name="Manager DN">cn=user-name,ou=Accounts,dc=domain,dc=company-name,dc=com</property>
    <property name="Manager Password">My-account-password</property>

    <property name="TLS - Keystore"></property>
    <property name="TLS - Keystore Password"></property>
    <property name="TLS - Keystore Type"></property>
    <property name="TLS - Truststore"></property>
    <property name="TLS - Truststore Password"></property>
    <property name="TLS - Truststore Type"></property>
    <property name="TLS - Client Auth"></property>
    <property name="TLS - Protocol">TLS</property>
    <property name="TLS - Shutdown Gracefully"></property>

    <property name="Referral Strategy">IGNORE</property>
    <property name="Connect Timeout">10 secs</property>
    <property name="Read Timeout">10 secs</property>

    <property name="Url">the-ldap-url-of-company</property>
    <property name="User Search Base">cn=Users,ou=Accounts,dc=corp,dc=company-name,dc=com</property>
    <property name="User Search Filter">sAMAccountName={0}</property>

    <property name="Authentication Expiration">12 hours</property>
</provider>

Nifi 版本 - 1.0.0 在 Ubuntu Trusty VM 中运行。

最佳答案

使用 LDAP 身份验证时,您应该到达 NiFi 的登录页面,您可以在其中提供用户名和密码以根据 LDAP 进行身份验证。由于您甚至没有到达该页面,因此在到达 LDAP 部分之前就出现了其他问题。

一些需要检查的事情...

在 NiFi 属性中,应使用以下属性设置事件身份提供程序:

nifi.security.user.login.identity.provider=ldap-provider

当您使用任何类型的身份验证时,NiFi 必须配置为使用 https,这需要提供以下配置:

nifi.web.https.host=
nifi.web.https.port=

nifi.security.keystore=
nifi.security.keystoreType=
nifi.security.keystorePasswd=
nifi.security.keyPasswd=
nifi.security.truststore=
nifi.security.truststoreType=
nifi.security.trustStorePassword=

您在 nifi.web.https.host 中设置的主机名也应与用于 nifi.security.keystore 的证书的主机名一致。我有一种感觉,将 https 主机设置为 0.0.0.0 并不是您想要的,但我不完全确定它的作用。

一旦您获得正确的 https 配置,那么您应该在访问 https://yourhost:post/nifi 时到达登录页面。之后您的 LDAP 配置将发挥作用。

关于authentication - Apache Nifi 的 LDAP 身份验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39401192/

相关文章:

java - 如何使用 MD5 转换密码并根据有效凭据检查用户的凭据?

java - 如何清除 UserPrincipal 缓存

powershell - 获取 ADUser-Identity

python - 使用python Django测试ldap连接

powershell - Active Directory-按脚本填写唯一ID

active-directory - 为什么我从我的 LDAP 属性中得到 'System.__ComObject'?

authentication - 在Jersey Jax-rs Web服务上启用OAuth1支持

java - 素面 : submit after succes action

security - 使用身份验证保护 Google Cloud Functions http 触发器

powershell - 使用 PowerShell 列出 Active Directory 中特定用户的所有组及其描述