Updated the code base to use the latest changes in TransportMessage on es-core

Now the UsernamePasswordToken, once resolved, is placed in the (new) request context as is (avoids the need to re-parse headers)

Original commit: elastic/x-pack-elasticsearch@f898a94157
This commit is contained in:
uboness 2014-08-08 18:02:52 +02:00
parent 3ee4d527f3
commit bf73ba3665
2 changed files with 10 additions and 5 deletions

View File

@ -19,7 +19,8 @@ import java.util.regex.Pattern;
*/
public class UsernamePasswordToken implements AuthenticationToken {
private static final String TOKEN_HEADER = "X-ES-UsernamePasswordToken";
private static final String TOKEN_KEY = "X-ES-UsernamePasswordToken";
static final String BASIC_AUTH_HEADER = "Authorization";
private static final Pattern BASIC_AUTH_PATTERN = Pattern.compile("Basic\\s(.+)");
@ -42,17 +43,17 @@ public class UsernamePasswordToken implements AuthenticationToken {
}
public static UsernamePasswordToken extractToken(TransportRequest request, UsernamePasswordToken defaultToken) {
UsernamePasswordToken token = (UsernamePasswordToken) request.getHeader(TOKEN_HEADER);
UsernamePasswordToken token = (UsernamePasswordToken) request.context().get(TOKEN_KEY);
if (token != null) {
return token;
}
String authStr = (String) request.getHeader(BASIC_AUTH_HEADER);
String authStr = request.getHeader(BASIC_AUTH_HEADER);
if (authStr == null) {
if (defaultToken == null) {
return null;
}
request.putHeader(TOKEN_HEADER, defaultToken);
request.context().put(TOKEN_KEY, defaultToken);
return defaultToken;
}
@ -64,7 +65,7 @@ public class UsernamePasswordToken implements AuthenticationToken {
String userpasswd = new String(Base64.decodeBase64(matcher.group(1)), Charsets.UTF_8);
int i = userpasswd.indexOf(':');
token = new UsernamePasswordToken(userpasswd.substring(0, i), userpasswd.substring(i+1).toCharArray());
request.putHeader(TOKEN_HEADER, token);
request.context().put(TOKEN_KEY, token);
return token;
}

View File

@ -44,5 +44,9 @@ public class UsernamePasswordTokenTests extends ElasticsearchTestCase {
assertThat(token, notNullValue());
assertThat(token.principal(), equalTo("user1"));
assertThat(new String(token.credentials()), equalTo("test123"));
// making sure that indeed, once resolved the instance is reused across multiple resolve calls
UsernamePasswordToken token2 = UsernamePasswordToken.extractToken(request, null);
assertThat(token, is(token2));
}
}