[ 
https://issues.apache.org/jira/browse/NIFI-11775?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pierre Villard resolved NIFI-11775.
-----------------------------------
    Resolution: Feedback Received

Apache NiFi 1.x is no longer maintained and no new release is planned on the 
1.x release line. Marking as resolved as part of a cleanup operation. Please 
open a new one with an updated description if this is still relevant for NiFi 
2.x.

> NiFi CLI is unauthorized with GCP load balancer
> -----------------------------------------------
>
>                 Key: NIFI-11775
>                 URL: https://issues.apache.org/jira/browse/NIFI-11775
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Tools and Build
>    Affects Versions: 1.22.0
>         Environment: openjdk version "17.0.7" 2023-04-18 LTS
> OpenJDK Runtime Environment Zulu17.42+19-CA (build 17.0.7+7-LTS)
> OpenJDK 64-Bit Server VM Zulu17.42+19-CA (build 17.0.7+7-LTS, mixed mode, 
> sharing)
>            Reporter: Pierre Villard
>            Priority: Major
>
> * 3 nodes cluster on GCP behind load balancer
>  * Certs for nodes and LB generated with NiFi CA
>  * Load balancer is configured with sticky session
> When using the CLI through the LB:
> {code:java}
> ./nifi-toolkit-1.22.0/bin/cli.sh nifi get-nodes -p ./nifi-cli.properties 
> -verbose
> ERROR: Error executing command 'get-nodes' : Error retrieving node status: 
> Unauthorized
> org.apache.nifi.toolkit.cli.api.CommandException: Error executing command 
> 'get-nodes' : Error retrieving node status: Unauthorized
>         at 
> org.apache.nifi.toolkit.cli.impl.command.nifi.AbstractNiFiCommand.doExecute(AbstractNiFiCommand.java:65)
>         at 
> org.apache.nifi.toolkit.cli.impl.command.AbstractPropertyCommand.execute(AbstractPropertyCommand.java:74)
>         at 
> org.apache.nifi.toolkit.cli.impl.command.CommandProcessor.processCommand(CommandProcessor.java:252)
>         at 
> org.apache.nifi.toolkit.cli.impl.command.CommandProcessor.processGroupCommand(CommandProcessor.java:233)
>         at 
> org.apache.nifi.toolkit.cli.impl.command.CommandProcessor.process(CommandProcessor.java:188)
>         at 
> org.apache.nifi.toolkit.cli.CLIMain.runSingleCommand(CLIMain.java:145)
>         at org.apache.nifi.toolkit.cli.CLIMain.main(CLIMain.java:72)
> Caused by: org.apache.nifi.toolkit.cli.impl.client.nifi.NiFiClientException: 
> Error retrieving node status: Unauthorized
>         at 
> org.apache.nifi.toolkit.cli.impl.client.nifi.impl.AbstractJerseyClient.executeAction(AbstractJerseyClient.java:90)
>         at 
> org.apache.nifi.toolkit.cli.impl.client.nifi.impl.JerseyControllerClient.getNodes(JerseyControllerClient.java:191)
>         at 
> org.apache.nifi.toolkit.cli.impl.command.nifi.nodes.GetNodes.doExecute(GetNodes.java:49)
>         at 
> org.apache.nifi.toolkit.cli.impl.command.nifi.nodes.GetNodes.doExecute(GetNodes.java:34)
>         at 
> org.apache.nifi.toolkit.cli.impl.command.nifi.AbstractNiFiCommand.doExecute(AbstractNiFiCommand.java:63)
>         ... 6 more
> Caused by: javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized
>         at 
> org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:942)
>         at 
> org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:755)
>         at 
> org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$1(JerseyInvocation.java:675)
>         at 
> org.glassfish.jersey.client.JerseyInvocation.call(JerseyInvocation.java:697)
>         at 
> org.glassfish.jersey.client.JerseyInvocation.lambda$runInScope$3(JerseyInvocation.java:691)
>         at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
>         at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
>         at org.glassfish.jersey.internal.Errors.process(Errors.java:205)
>         at 
> org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:390)
>         at 
> org.glassfish.jersey.client.JerseyInvocation.runInScope(JerseyInvocation.java:691)
>         at 
> org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:674)
>         at 
> org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:422)
>         at 
> org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:318)
>         at 
> org.apache.nifi.toolkit.cli.impl.client.nifi.impl.JerseyControllerClient.lambda$getNodes$8(JerseyControllerClient.java:194)
>         at 
> org.apache.nifi.toolkit.cli.impl.client.nifi.impl.AbstractJerseyClient.executeAction(AbstractJerseyClient.java:76)
>  {code}
> When using the CLI with direct access to a node:
> {code:java}
> ./nifi-toolkit-1.22.0/bin/cli.sh nifi get-nodes -p ./nifi-cli.properties 
> -verbose
> #   Node ID                                Node Address   API Port   Node 
> Status   
> -   ------------------------------------   ------------   --------   
> -----------   
> 0   1e1f3c33-0378-4de3-81b7-7c1edd333f8e   nifi-1         8443       
> CONNECTED     
> 1   e7cb1ff8-7c15-4911-9d91-e0080ae42baf   nifi-2         8443       
> CONNECTED     
> 2   d86e4cc6-0a1c-496e-aca2-8803df17319e   nifi-3         8443       
> CONNECTED      {code}
> When the request is unauthorized, the only log I have in nifi-request.log:
> {code:java}
> 35.191.13.212 - - [01/Jul/2023:23:08:35 +0000] "GET 
> /nifi-api/controller/cluster HTTP/1.1" 401 12 "-" "Jersey/2.39.1 
> (HttpUrlConnection 11.0.18)" {code}
> If switching logging to DEBUG on org.springframework.security, I get one 
> additional log:
> {code:java}
> 2023-07-03 15:13:39,232 DEBUG [NiFi Web Server-24] 
> o.s.security.web.FilterChainProxy Securing GET /controller/cluster {code}
> In addition to solving this issue (could be related to how the CLI is dealing 
> with custom HTTP headers and the XSRF Token cookie), it could be nice to have 
> more logs when something like this happens.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to