Yuanbo Liu commented on HADOOP-13707:

If HTTP SPNEGO is not enabled, user can not be authenticated, and "dr.who" is 
used as a default user.
{{HttpServer2#hasAdministratorAccess}} is a authorization method to verify 
whether user has admin access. Since user(dr.who) is not authenticated, http 
sever is in non-security environment, there is no need to call 
{{hasAdministratorAccess}} to do authorization check.
{{HttpServletRequest#getAuthType}} returns null in non-security environment 
(without AuthenticationFilter), so we can take advantage of it and use it  to 
determine whether {{hasAdministratorAccess}} should be called.

> If kerberos is enabled while HTTP SPNEGO is not configured, some links cannot 
> be accessed
> -----------------------------------------------------------------------------------------
>                 Key: HADOOP-13707
>                 URL: https://issues.apache.org/jira/browse/HADOOP-13707
>             Project: Hadoop Common
>          Issue Type: Bug
>            Reporter: Yuanbo Liu
>            Assignee: Yuanbo Liu
>              Labels: security
>         Attachments: HADOOP-13707.001.patch, HADOOP-13707.002.patch
> In {{HttpServer2#hasAdministratorAccess}}, it uses 
> `hadoop.security.authorization` to detect whether HTTP is authenticated.
> It's not correct, because enabling Kerberos and HTTP SPNEGO are two steps. If 
> Kerberos is enabled while HTTP SPNEGO is not, some links cannot be accessed, 
> such as "/logs", and it will return error message as below:
> {quote}
> Problem accessing /logs/. Reason:
> User dr.who is unauthorized to access this page.
> {quote}
> We should make sure {{HttpServletRequest#getAuthType}} is not null before we 
> invoke {{HttpServer2#hasAdministratorAccess}}.
> {{getAuthType}} means to get the authorization scheme of this request

This message was sent by Atlassian JIRA

To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org

Reply via email to