[
https://issues.apache.org/jira/browse/GEODE-2212?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ben Moss updated GEODE-2212:
----------------------------
Description:
We encountered a bug with Geode that only reveals itself when routing requests
through the a proxy that modifies HTTP headers to standardize them in title
case format.
gfsh uses the security-username and security-password headers to pass
authentication credentials to the locator, but what we saw is that when these
go through our proxy and are turned into Security-Username / Security-Password,
we can no longer authenticate.
This request emulates what gfsh executes when you run "list members" with an
HTTP connection:
{code:none}
curl http://$LOCATOR_IP/gemfire/v1/members -H "security-username: admin" -H
"security-password: admin"
{code}
This request emulates what gets sent when going through our proxy. This should
be the same but will fail:
{code:none}
curl http://$LOCATOR_IP/gemfire/v1/members -H "Security-Username: admin" -H
"Security-Password: admin"
{code}
We narrowed the bug down to [these
lines|https://github.com/apache/geode/blob/bd229d7681376a11ba2e37747e48844ffe65584c/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/support/LoginHandlerInterceptor.java#L99-L111].
The HTTP spec specifies that headers should treated as case-insensitive but it
looks like GemFire is only capable of working with lower-case versions of these
headers.
was:
We encountered a bug with Geode that only reveals itself when routing requests
through the a proxy that modifies HTTP headers to standardize them in title
case format.
gfsh uses the security-username and security-password headers to pass
authentication credentials to the locator, but what we saw is that when these
go through our proxy and are turned into Security-Username / Security-Password,
we can no longer authenticate.
This request emulates what gfsh executes when you run "list members" with an
HTTP connection:
```
curl http://$LOCATOR_IP/gemfire/v1/members -H "security-username: admin" -H
"security-password: admin"
```
This request emulates what gets sent when going through our proxy. This should
be the same but will fail:
```
curl http://$LOCATOR_IP/gemfire/v1/members -H "Security-Username: admin" -H
"Security-Password: admin"
```
We narrowed the bug down to these lines
(https://github.com/apache/geode/blob/bd229d7681376a11ba2e37747e48844ffe65584c/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/support/LoginHandlerInterceptor.java#L99-L111).
The HTTP spec specifies that headers should treated as case-insensitive but it
looks like GemFire is only capable of working with lower-case versions of these
headers.
> gfsh http authentication fails when routed through a proxy
> ----------------------------------------------------------
>
> Key: GEODE-2212
> URL: https://issues.apache.org/jira/browse/GEODE-2212
> Project: Geode
> Issue Type: Bug
> Components: core, gfsh
> Reporter: Ben Moss
> Assignee: Mark Bretl
>
> We encountered a bug with Geode that only reveals itself when routing
> requests through the a proxy that modifies HTTP headers to standardize them
> in title case format.
> gfsh uses the security-username and security-password headers to pass
> authentication credentials to the locator, but what we saw is that when these
> go through our proxy and are turned into Security-Username /
> Security-Password, we can no longer authenticate.
> This request emulates what gfsh executes when you run "list members" with an
> HTTP connection:
> {code:none}
> curl http://$LOCATOR_IP/gemfire/v1/members -H "security-username: admin" -H
> "security-password: admin"
> {code}
> This request emulates what gets sent when going through our proxy. This
> should be the same but will fail:
> {code:none}
> curl http://$LOCATOR_IP/gemfire/v1/members -H "Security-Username: admin" -H
> "Security-Password: admin"
> {code}
> We narrowed the bug down to [these
> lines|https://github.com/apache/geode/blob/bd229d7681376a11ba2e37747e48844ffe65584c/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/support/LoginHandlerInterceptor.java#L99-L111].
> The HTTP spec specifies that headers should treated as case-insensitive but
> it looks like GemFire is only capable of working with lower-case versions of
> these headers.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)