我正在尝试在Apache Nifi 1.7.1上配置ldap身份验证。 TLS已配置,当我不尝试配置初始管理员(显然我可以管理nifi)时,ldap连接有效。
服务器无法启动,并出现以下错误:
Caused by: org.apache.nifi.authorization.exception.AuthorizerCreationException: Unable to locate initial admin adehay to seed policies
at org.apache.nifi.authorization.FileAccessPolicyProvider.populateInitialAdmin(FileAccessPolicyProvider.java:569)
at org.apache.nifi.authorization.FileAccessPolicyProvider.load(FileAccessPolicyProvider.java:512)
at org.apache.nifi.authorization.FileAccessPolicyProvider.onConfigured(FileAccessPolicyProvider.java:225)
... 104 common frames omitted
我已经删除了每个测试之间的users.xml和authorizations.xml,如https://community.hortonworks.com/articles/81184/understanding-the-initial-admin-identity-access-po.html中所述,但是我仍然很困惑。
当我不尝试配置初始管理员时,login-identity-provider.xml的配置如下所示(我可以在nifi登录页面上连接但出现权限不足错误):
<provider>
<identifier>ldap-provider</identifier>
<class>org.apache.nifi.ldap.LdapProvider</class>
<property name="Authentication Strategy">SIMPLE</property>
<property name="Manager DN">uid=fau_bind,cn=users,cn=accounts,dc=soft,dc=fau</property>
<property name="Manager Password">xxx</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"></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">ldap://xxx:389</property>
<property name="User Search Base">cn=users,cn=accounts,dc=soft,dc=fau</property>
<property name="User Search Filter">uid={0}</property>
<property name="Identity Strategy">USE_USERNAME</property>
<property name="Authentication Expiration">12 hours</property>
</provider>
我的authorizers.xml(安装后保持不变):
<accessPolicyProvider>
<identifier>file-access-policy-provider</identifier>
<class>org.apache.nifi.authorization.FileAccessPolicyProvider</class>
<property name="User Group Provider">file-user-group-provider</property>
<property name="Authorizations File">./conf/authorizations.xml</property>
<property name="Initial Admin Identity">adehay</property>
<property name="Legacy Authorized Users File"></property>
</accessPolicyProvider>
我尝试用LDAP DN替换“ adehay”,但没有好运。
nifi.properties中的映射(不管有没有),
nifi.security.identity.mapping.pattern.dn=^uid=(.*?),cn=users,cn=accounts,dc=soft,dc=fau$
nifi.security.identity.mapping.value.dn=$1
我一定错过了一些东西,但我看不到。
感谢您的帮助。
答案 0 :(得分:3)
这里有两个独立的部分,即身份验证和授权。
login-identity-providers.xml用于根据LDAP验证用户。
authorizers.xml用于配置授权者以授权可能来自或可能不来自LDAP的经过身份验证的用户。
当前问题是您正在告诉access-policy-provider您的初始管理员是'adehay',但是access-policy-provider对您的登录身份提供者一无所知,它只知道在authorizers.xml中定义的用户组提供者。
您可以在authorizers.xml中定义一个基于文件的用户组提供者,在此处您手动定义用户'adehay',请参见此处的“初始用户身份1”示例:
https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html#initial-admin-identity
对您的情况更有意义的第二种方法是在您的authorizers.xml中定义一个LDAP用户组提供者,请参见上面链接的同一部分中的示例,其中说:“这是加载用户和LDAP中的组。”