Details
Description
DelegationTokenAuthenticationFilter get wrong doAsUser when proxy user from client is complete kerberos name (e.g., user/hostname@REALM.COM, actually it is acceptable), because DelegationTokenAuthenticationFilter does not decode DOAS parameter in URL which is encoded by URLEncoder at client.
e.g. KMS as example:
a. KMSClientProvider creates connection to KMS Server using DelegationTokenAuthenticatedURL#openConnection.
b. If KMSClientProvider is a doAsUser, KMSClientProvider will put doas with url encoded user as one parameter of http request.
// proxyuser if (doAs != null) { extraParams.put(DO_AS, URLEncoder.encode(doAs, "UTF-8")); }
c. when KMS server receives the request, it does not decode the proxy user.
As result, KMS Server will get the wrong proxy user if this proxy user is complete Kerberos Name or it includes some special character. Some other authentication and authorization exception will throws next to it.
Attachments
Attachments
Issue Links
- depends upon
-
HADOOP-15996 Plugin interface to support more complex usernames in Hadoop
- Resolved