[ 
https://issues.apache.org/jira/browse/NIFI-5041?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16475184#comment-16475184
 ] 

ASF GitHub Bot commented on NIFI-5041:
--------------------------------------

Github user mattyb149 commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/2630#discussion_r188147689
  
    --- Diff: 
nifi-nar-bundles/nifi-spark-bundle/nifi-livy-controller-service/src/main/java/org/apache/nifi/controller/livy/LivySessionController.java
 ---
    @@ -241,12 +241,14 @@ public void onConfigured(final ConfigurationContext 
context) {
                 while (enabled) {
                     try {
                         manageSessions();
    +                } catch (Exception e) {
    +                    getLogger().error("Livy Session Manager Thread run 
into an error, but continues to run", e);
    --- End diff --
    
    This keeps the manageSessions() thread alive, but will there be an 
indication on the UI that the error is not recoverable? I'm thinking 
specifically about the 401 Authorization Required error where the Livy API 
returns HTML rather than JSON when you try to log in without Kerberos when the 
server has been Kerberized. Should we set an AtomicReference<Exception> or 
something on the LivySessionController and throw a checked exception when any 
API call is made (such as isEmpty() which is called from 
ExecuteSparkInteractive)? I think we need to make it obvious (at least in that 
case) that the processor and/or CS is suffering from a non-recoverable error 
and needs manual intervention.


> Add convenient SPNEGO/Kerberos authentication support to LivySessionController
> ------------------------------------------------------------------------------
>
>                 Key: NIFI-5041
>                 URL: https://issues.apache.org/jira/browse/NIFI-5041
>             Project: Apache NiFi
>          Issue Type: Improvement
>            Reporter: Peter Toth
>            Priority: Minor
>
> Livy requires SPNEGO/Kerberos authentication on a secured cluster. Initiating 
> such an authentication from NiFi is a viable by providing a 
> java.security.auth.login.config system property 
> (https://docs.oracle.com/javase/8/docs/technotes/guides/security/jgss/lab/part6.html),
>  but this is a bit cumbersome and needs kinit running outside of NiFi.
> An alternative and more sophisticated solution would be to do the SPNEGO 
> negotiation programmatically.
>  * This solution would add some new properties to the LivySessionController 
> to fetch kerberos principal and password/keytab
>  * Add the required HTTP Negotiate header (with an SPNEGO token) to the 
> HttpURLConnection to do the authentication programmatically 
> (https://tools.ietf.org/html/rfc4559)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to