Attila Sasvari created OOZIE-2880:
-------------------------------------

             Summary: Improve documentation on Oozie authentication and 
authorization configuration
                 Key: OOZIE-2880
                 URL: https://issues.apache.org/jira/browse/OOZIE-2880
             Project: Oozie
          Issue Type: Improvement
            Reporter: Attila Sasvari


h4. Authentication

[Documentation of Oozie 
authentication|https://oozie.apache.org/docs/4.3.0/AG_Install.html#Oozie_User_Authentication_Configuration]
 is slightly incorrect.

{quote}
Pseudo/simple authentication requires the user to specify the user name on the 
request, this is done by the PseudoAuthenticator class by injecting the 
user.name parameter in the query string of all requests. The user.name 
parameter value is taken from the client process Java System property user.name 
.
{quote}

Actually, when someone performs an Oozie operation using the CLI, a hadoop auth 
token is created and saved to {{~/.oozie-auth-token}}. In subsequent actions, 
the token is retrieved from this cache file (until the token is expired). In 
other words, passing {{user.name}} as system property to the Oozie CLI in an 
unsecure environment (or  using kinit -kt in a Kerberized cluster) takes no 
effect if {{.oozie-auth-token}} is present in the user's home and the token is 
still valid. 

With {{simple}} authentication type pseudo/simple authentication is used. 
However, in an unsecure environment I tested with hadoop 2.4 (default hadoop 
version) that 
[KerberosAuthenticator|https://github.com/apache/hadoop/blob/branch-2.4.0/hadoop-common-project/hadoop-auth/src/main/java/org/apache/hadoop/security/authentication/client/KerberosAuthenticator.java#L188]
 returns a null token. In turn, admin operations cannot be used if there is no 
{{~/.oozie-auth-token}} with a valid token. Note: this was fixed by 
[HADOOP-11467|https://github.com/apache/hadoop/commit/875256834b892b574499d5fe68f95a9aed244f7d#diff-28df14cad207bee984f5ca4820bacabcR198].


h4. Authorization
Regarding [authorization configuration | 
https://oozie.apache.org/docs/4.3.0/AG_Install.html#User_Authorization_Configuration]
 the current documentation mentions a deprecated configuration property 
{{oozie.service.AuthorizationService.security.enabled}}. If a user specifies 
it, the following warning is logged in Oozie server log.


{noformat}
2017-05-02 03:30:59,578 WARN org.apache.oozie.util.ConfigUtils: 
SERVER[myserver.com] Using a deprecated configuration property 
[oozie.service.Authorization
Service.security.enabled], should use 
[oozie.service.AuthorizationService.authorization.enabled].  Please delete the 
deprecated property in order for the new property to take effect.
{noformat}

{{oozie.service.AuthorizationService.authorization.enabled}} should be used.

Oozie authorization only make sense if *authentication (kerberos) is enabled*. 
Otherwise any user can claim any identity (as "simple" authentication type uses 
Pseudo authentication).



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to