Apache Nifi: невозможно найти начального администратора для политик заполнения - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь настроить аутентификацию ldap на Apache Nifi 1.7.1. TLS настроен, соединение ldap работает, когда я не пытаюсь настроить начального администратора (очевидно, я могу управлять nifi).

Сервер не запускается со следующей ошибкой:

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>

Я попытался заменить "adehay" на DN LDAP безуспешно.

Отображение в nifi.properties (не работает с этим или без него):

nifi.security.identity.mapping.pattern.dn=^uid=(.*?),cn=users,cn=accounts,dc=soft,dc=fau$
nifi.security.identity.mapping.value.dn=$1

Должно быть, я что-то пропустил, но я могу посмотреть, что.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 29 августа 2018

Здесь есть две отдельные части: аутентификация и авторизация.

Файл login-identity-provider.xml предназначен для аутентификации пользователей по протоколу LDAP.

authorizers.xml предназначен для настройки авторизатора для авторизации аутентифицированных пользователей, которые могут или не могут быть получены из LDAP.

В настоящее время проблема заключается в том, что вы говорите провайдеру политики доступа, что ваш начальный администратор - «adehay», но провайдер политики доступа ничего не знает о вашем провайдере идентификатора входа, он знает только о провайдеры группы пользователей, определенные в authorizers.xml.

Вы можете определить поставщика файловых групп пользователей в файле authorizers.xml, где вы вручную определяете своего пользователя 'adehay', см. Пример "Initial User Identity 1" здесь:

https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html#initial-admin-identity

Второй способ, который имеет больше смысла для вашего случая, состоит в том, чтобы определить поставщика групп пользователей LDAP в вашем authorizers.xml, см. Пример в том же разделе, связанном выше, который гласит: «Вот пример загрузки пользователей и группы из LDAP. "

...