Robert Kanter created OOZIE-1103:
------------------------------------

             Summary: Create example using AltKerberosAuthenticationHandler
                 Key: OOZIE-1103
                 URL: https://issues.apache.org/jira/browse/OOZIE-1103
             Project: Oozie
          Issue Type: New Feature
          Components: security
    Affects Versions: trunk
            Reporter: Robert Kanter
            Assignee: Robert Kanter
             Fix For: trunk


HADOOP-9054 adds AltKerberosAuthenticationHandler which allows non-browsers to 
use Kerberos authentication while allowing browsers to use some alternative 
authentication (to be implemented by the subclass).  This is particularly 
useful for users of Oozie who want to use Kerberos for the Oozie client but 
allow access to the web UI using some other means of authentication, such as 
LDAP.  To encourage this, we should create an example implementation of 
AltKerberosAuthenticationHandler and a login server example to work with it.  
This example isn't designed to be secure, but to make it easier for users to 
integrate their own authentication systems with Oozie.  

There are two main components:
(1) ExampleAltAuthenticationHanlder extends the 
AltKerberosAuthenticationHandler: The AltKerberosAuthenticationHandler deals 
with determining if the user-agent is a browser or not and with falling back to 
KerberosAuthenticationHandler, so all the ExampleAltAuthenticationHandler has 
to do is create the AuthenticationToken when it sees that the user has a cookie 
named "oozie.web.login.auth" in their browser (the value of the cookie is the 
username).  

(2) The login server example: This is where the ExampleAltAuthenticationHandler 
will redirect unauthenticated users to.  It has two implementations, one is a 
very basic servlet (LoginServlet) that provides a form to get the username and 
password and checks if they are equal (e.g. user=foo pass=foo) and writes a 
cookie named "oozie.web.login.auth" with the username if so.  The second 
implementation (LDAPLoginServlet) checks the username and password against an 
LDAP server before writing the cookie.  

The flow of all of this would be the user goes to the Oozie web UI in their 
browser, the ExampleAltAuthenticator determines that they are not authenticated 
so redirects them to the login server example, which authenticates the user, 
writes the cookie, and redirects them back to the web UI where the 
ExampleAltAuthenticationHandler sees from the cookie that they should now 
authenticated.  From a non-browser, such as the Oozie client, the 
ExampleAltAuthenticationHandler would fall back to the 
KerberosAuthenticationHandler.  

More detailed information is in the documentation in the patch.  

ExampleAltAuthenticationHandler is in Oozie Core, while LoginServlet and 
LDAPLoginServlet are part of a new login module that builds oozie-login.war 
when the loginServerExample maven profile is activated (much like how the 
workflow generator is built).  The oozie-login.war can be deployed in the same 
tomcat as Oozie or somewhere else.  Because ExampleAltAuthenticationHandler 
depends on AltKerberosAuthenticationHandler, which isn't in the current Hadoop 
release, we can temporarily include a copy of it in Oozie Core and create a 
JIRA to delete it later.  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to