Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]
Created 08-31-2017 07:52 PM
Hi guys,
When I secure a three nodes nifi cluster, I got below errors during start up.
I use TLS tool to create certificates, and use client-certificate for authentication.
The setting in my authorizers.xml is below:
<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">CN=nifiadmin, OU=NIFI.COM</property>
<property name="Legacy Authorized Users File"></property>
<property name="Node Identity 1">CN=nifi-0, OU=NIFI.COM</property>
<property name="Node Identity 2">CN=nifi-1, OU=NIFI.COM</property>
<property name="Node Identity 3">CN=nifi-2, OU=NIFI.COM</property>
</accessPolicyProvider>
From nifi-user.log ouput, it seems NiFi can locate the DN set in authorizers.xml.
However, I don't understand why nifi-bootstrap.log says NiFi can't initial admin.
Are users.xml and authorizations.xml auto-created and populated by NiFi?
After checking, it seems "Initial Admin Identity" user and administrative policies are NOT added to the users.xml and authorizations.xml files.
$ cat nifi-user.log
2017-08-31 18:54:28,424 INFO [main] o.a.n.a.FileUserGroupProvider Creating new users file at /opt/nifi/nifi-1.4.0-SNAPSHOT/./conf/users.xml
2017-08-31 18:54:28,453 INFO [main] o.a.n.a.FileUserGroupProvider Users/Groups file loaded at Thu Aug 31 18:54:28 UTC 2017
2017-08-31 18:54:28,458 INFO [main] o.a.n.a.FileAccessPolicyProvider Creating new authorizations file at /opt/nifi/nifi-1.4.0-SNAPSHOT/./conf/authorizations.xml
2017-08-31 18:54:28,475 WARN [main] org.apache.nifi.authorization.FlowParser Flow Configuration does not exist or was empty
2017-08-31 18:54:28,475 INFO [main] o.a.n.a.FileAccessPolicyProvider Populating authorizations for Initial Admin: CN=nifiadmin, OU=NIFI.COM
$ cat nifi-bootstrap.log
2017-08-31 18:54:13,151 INFO [NiFi Bootstrap Command Listener] org.apache.nifi.bootstrap.RunNiFi Apache NiFi now running and listening for Bootstrap requests on port 41600
2017-08-31 18:54:29,443 ERROR [NiFi logging handler] org.apache.nifi.StdErr Failed to start web server: Error creating bean with name 'niFiWebApiSecurityConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException:
Could not autowire method: public void org.apache.nifi.web.NiFiWebApiSecurityConfiguration.setJwtAuthenticationProvider(org.apache.nifi.web.security.jwt.JwtAuthenticationProvider); nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jwtAuthenticationProvider' defined in class path resource [nifi-web-security-context.xml]:
Cannot resolve reference to bean 'authorizer' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authorizer': FactoryBean threw exception on object creation; nested exception is org.apache.nifi.authorization.exception.AuthorizerCreationException:
org.apache.nifi.authorization.exception.AuthorizerCreationException: Unable to locate initial admin CN=nifiadmin, OU=NIFI.COM to seed policies
2017-08-31 18:54:29,444 ERROR [NiFi logging handler] org.apache.nifi.StdErr Shutting down...
2017-08-31 18:54:30,576 INFO [main] org.apache.nifi.bootstrap.RunNiFi NiFi never started. Will not restart NiFi
Created 08-31-2017 08:55 PM
That authorizers.xml file looks a little off.
This is what it should look like:
<authorizers>
<authorizer>
<identifier>file-provider</identifier>
<class>org.apache.nifi.authorization.FileAuthorizer</class>
<property name="Authorizations File">./conf/authorizations.xml</property>
<property name="Users File">./conf/users.xml</property>
<property name="Initial Admin Identity">CN=nifiadmin, OU= NIFI.COM</property>
<property name="Legacy Authorized Users File"></property>
<!-- Provide the identity (typically a DN) of each node when clustered, see above description of Node Identity. -->
<property name="Node Identity 1">CN=nifi-0, OU=NIFI.COM</property>
<property name="Node Identity 2">CN=nifi-1, OU=NIFI.COM</property>
<property name="Node Identity 2">CN=nifi-2, OU=NIFI.COM</property>
</authorizer>
</authorizers>
You will have to remove the current users.xml and authorizations.xml file so NiFi will recreate them on restart.
Created 08-31-2017 08:55 PM
That authorizers.xml file looks a little off.
This is what it should look like:
<authorizers>
<authorizer>
<identifier>file-provider</identifier>
<class>org.apache.nifi.authorization.FileAuthorizer</class>
<property name="Authorizations File">./conf/authorizations.xml</property>
<property name="Users File">./conf/users.xml</property>
<property name="Initial Admin Identity">CN=nifiadmin, OU= NIFI.COM</property>
<property name="Legacy Authorized Users File"></property>
<!-- Provide the identity (typically a DN) of each node when clustered, see above description of Node Identity. -->
<property name="Node Identity 1">CN=nifi-0, OU=NIFI.COM</property>
<property name="Node Identity 2">CN=nifi-1, OU=NIFI.COM</property>
<property name="Node Identity 2">CN=nifi-2, OU=NIFI.COM</property>
</authorizer>
</authorizers>
You will have to remove the current users.xml and authorizations.xml file so NiFi will recreate them on restart.
Created 09-01-2017 02:56 PM
Hi @Wynner,
Thanks for your comments. You are right, it's the authorizers.xml format issue.
Actually, I am using nifi-1.4-snapshot. That's why my authorizers.xml is different from the 1.3 one.
When I switched to the 1.3 version authorizers.xml with nifi-1.4-snapshot, the above issue was gone.This confuses me.
Then, when I have below in authorizers.xml file
<propertyname="Node Identity 1">CN=nifi-0, OU= NIFI.COM</property>
I saw errors from nifi-app.log, it seems the default OU of node identity is "NIFI".
2017-09-01 14:09:08,854 DEBUG [NiFi Web Server-19] o.a.n.w.a.c.IllegalStateExceptionMapper java.lang.IllegalStateException: Kerberos ticket login not supported by this NiFi. at org.apache.nifi.web.api.AccessResource.createAccessTokenFromTicket(AccessResource.java:349)
2017-09-01 14:09:09,045 INFO [NiFi Web Server-127] o.a.n.w.s.NiFiAuthenticationFilter Attempting request for (<CN=nifiadmin, OU=NIFI.COM><CN=nifi-0, OU=NIFI>) GET https://nifi-0:9443/nifi-api/flow/current-user (source ip: 10.244.1.95) 2017-09-01 14:09:09,048 WARN [NiFi Web Server-127] o.a.n.w.s.NiFiAuthenticationFilter Rejecting access to web api: Untrusted proxy CN=nifi-0, OU=NIFI
2017-09-01 14:09:09,048 WARN [NiFi Web Server-127] o.a.n.w.s.NiFiAuthenticationFilter Rejecting access to web api: Untrusted proxy CN=nifi-0, OU=NIFI
But whenIf I set it as "CN=nifi-0, OU= NIFI" in above file, it works.
Created 09-01-2017 05:17 PM
Remove the space between "OU =NIFI" so it looks like "OU=NIFI".
Also, don't forget to remove the old users.xml and authorizations.xml files before restarting NiFi.
You should stick with released versions, instead of using the snapshot version.