ContainerAuthFilter: honor username provided by container
When 'trustContainerAuth' is enabled and proxy does authentication
on root (instead of '/login/'), ServletRequest#getRemoteUser is
null. In this case we need to pull the username from 'Authorization'
header. It is done the same way in HttpAuthFilter already.
Move username extraction logic from HttpAuthFilter to
RemoteUserUtil and add some tests.
Update javadoc to reflect current situation:
ContainerAuthFilter is also used for the REST API; see:
GitOverHttpModule#configureServlets: filter("/a/*").through(authFilter)
Change-Id: I0cf21fb7ecd8a958fad270704c11ebfffd9fea93
Bug: Issue 2209
This commit is contained in:
committed by
David Pursehouse
parent
17a6fb08d7
commit
7c000e31bb
@@ -0,0 +1,32 @@
|
||||
// Copyright (C) 2015 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.gerrit.httpd;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static com.google.gerrit.httpd.RemoteUserUtil.extractUsername;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
public class RemoteUserUtilTest {
|
||||
@Test
|
||||
public void testExtractUsername() {
|
||||
assertThat(extractUsername(null)).isNull();
|
||||
assertThat(extractUsername("")).isNull();
|
||||
assertThat(extractUsername("Basic dXNlcjpwYXNzd29yZA=="))
|
||||
.isEqualTo("user");
|
||||
assertThat(extractUsername("Digest username=\"user\", realm=\"test\""))
|
||||
.isEqualTo("user");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user