Skip to content

Commit e156bfe

Browse files
Update token manager
Signed-off-by: Stephen Crawford <steecraw@amazon.com>
1 parent 4e48c62 commit e156bfe

4 files changed

Lines changed: 5 additions & 91 deletions

File tree

plugins/identity-shiro/src/main/java/org/opensearch/identity/shiro/ShiroTokenManager.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.apache.shiro.authc.UsernamePasswordToken;
2323
import org.opensearch.common.Randomness;
2424
import org.opensearch.identity.IdentityService;
25-
import org.opensearch.identity.Subject;
2625
import org.opensearch.identity.tokens.AuthToken;
2726
import org.opensearch.identity.tokens.BasicAuthToken;
2827
import org.opensearch.identity.tokens.TokenManager;
@@ -57,11 +56,10 @@ public Optional<AuthenticationToken> translateAuthToken(org.opensearch.identity.
5756
}
5857

5958
@Override
60-
public AuthToken issueToken() {
59+
public AuthToken issueToken(String audience) {
6160

62-
Subject subject = new ShiroSubject(this, SecurityUtils.getSubject());
6361
String password = generatePassword();
64-
final byte[] rawEncoded = Base64.getEncoder().encode((subject.getPrincipal().getName() + ":" + password).getBytes(UTF_8));
62+
final byte[] rawEncoded = Base64.getEncoder().encode((audience + ":" + password).getBytes(UTF_8));
6563
final String usernamePassword = new String(rawEncoded, UTF_8);
6664
final String header = "Basic " + usernamePassword;
6765
BasicAuthToken token = new BasicAuthToken(header);
@@ -70,7 +68,6 @@ public AuthToken issueToken() {
7068
return token;
7169
}
7270

73-
@Override
7471
public boolean validateToken(AuthToken token) {
7572
if (token instanceof BasicAuthToken) {
7673
final BasicAuthToken basicAuthToken = (BasicAuthToken) token;
@@ -80,7 +77,6 @@ public boolean validateToken(AuthToken token) {
8077
return false;
8178
}
8279

83-
@Override
8480
public String getTokenInfo(AuthToken token) {
8581
if (token instanceof BasicAuthToken) {
8682
final BasicAuthToken basicAuthToken = (BasicAuthToken) token;
@@ -89,7 +85,6 @@ public String getTokenInfo(AuthToken token) {
8985
throw new UnsupportedAuthenticationToken();
9086
}
9187

92-
@Override
9388
public void revokeToken(AuthToken token) {
9489
if (token instanceof BasicAuthToken) {
9590
final BasicAuthToken basicAuthToken = (BasicAuthToken) token;
@@ -99,7 +94,6 @@ public void revokeToken(AuthToken token) {
9994
throw new UnsupportedAuthenticationToken();
10095
}
10196

102-
@Override
10397
public void resetToken(AuthToken token) {
10498
if (token instanceof BasicAuthToken) {
10599
final BasicAuthToken basicAuthToken = (BasicAuthToken) token;

plugins/identity-shiro/src/test/java/org/opensearch/identity/shiro/AuthTokenHandlerTests.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,6 @@ public void testShouldFailWhenRevokeToken() {
8989
assertThrows(UnsupportedAuthenticationToken.class, () -> shiroAuthTokenHandler.revokeToken(bearerAuthToken));
9090
}
9191

92-
public void testShouldGetTokenInfoSuccessfully() {
93-
final BasicAuthToken authToken = new BasicAuthToken("Basic dGVzdDp0ZTpzdA==");
94-
assert (authToken.toString().equals(shiroAuthTokenHandler.getTokenInfo(authToken)));
95-
final BearerAuthToken bearerAuthToken = new BearerAuthToken("header.payload.signature");
96-
assert (noopTokenManager.getTokenInfo(authToken).equals("Token is of type: " + authToken.getClass()));
97-
assert (noopTokenManager.getTokenInfo(bearerAuthToken).equals("Token is of type: " + bearerAuthToken.getClass()));
98-
}
99-
10092
public void testShouldFailGetTokenInfo() {
10193
final BearerAuthToken bearerAuthToken = new BearerAuthToken("header.payload.signature");
10294
assert (bearerAuthToken.getTokenIdentifier().equals("Bearer"));
@@ -119,12 +111,6 @@ public void testShouldPassThrougbResetToken(AuthToken token) {
119111
shiroAuthTokenHandler.resetToken(bearerAuthToken);
120112
}
121113

122-
public void testShouldPassThrough() {
123-
final BearerAuthToken bearerAuthToken = new BearerAuthToken("header.payload.signature");
124-
noopTokenManager.resetToken(bearerAuthToken);
125-
noopTokenManager.revokeToken(bearerAuthToken);
126-
}
127-
128114
public void testVerifyBearerTokenObject() {
129115
BearerAuthToken testGoodToken = new BearerAuthToken("header.payload.signature");
130116
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> new BearerAuthToken("asddfhadfasdfad"));

server/src/main/java/org/opensearch/identity/noop/NoopTokenManager.java

Lines changed: 1 addition & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -26,49 +26,8 @@ public class NoopTokenManager implements TokenManager {
2626
* @return a new Noop Token
2727
*/
2828
@Override
29-
public AuthToken issueToken() {
29+
public AuthToken issueToken(String audience) {
3030
return new AuthToken() {
3131
};
3232
}
33-
34-
/**
35-
* Validate a token
36-
* @param token The token to be validated
37-
* @return true
38-
*/
39-
@Override
40-
public boolean validateToken(AuthToken token) {
41-
log.info("Validating a token with NoopTokenManager");
42-
return true;
43-
}
44-
45-
/**
46-
* Get token class
47-
* @param token The auth token to be parsed
48-
* @return A description of the token's type
49-
*/
50-
@Override
51-
public String getTokenInfo(AuthToken token) {
52-
return "Token is of type: " + token.getClass();
53-
}
54-
55-
/**
56-
* Revoking a Noop Token should not do anything
57-
* @param token The Auth Token to be revoked
58-
*/
59-
@Override
60-
public void revokeToken(AuthToken token) {
61-
log.info("Revoke operation is not supported for NoopTokens");
62-
return;
63-
}
64-
65-
/**
66-
* Refreshing a NoopToken also not do anything
67-
* @param token The token to be refreshed
68-
*/
69-
@Override
70-
public void resetToken(AuthToken token) {
71-
log.info("Reset operation is not supported for NoopTokens");
72-
return;
73-
}
7433
}

server/src/main/java/org/opensearch/identity/tokens/TokenManager.java

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -15,33 +15,8 @@ public interface TokenManager {
1515

1616
/**
1717
* Create a new auth token
18+
* @param audience: The audience for the token
1819
* @return A new auth token
1920
*/
20-
public AuthToken issueToken();
21-
22-
/**
23-
* Validate an auth token based on the rules associated with its format
24-
* @param token The token to validate
25-
* @return True if the token is valid; False if the token is not valid
26-
*/
27-
public boolean validateToken(AuthToken token);
28-
29-
/**
30-
* Fetch the info from a token
31-
* @param token The auth token to be parsed
32-
* @return A String representing the info associated with the token
33-
*/
34-
public String getTokenInfo(AuthToken token);
35-
36-
/**
37-
* Revoke a token that should no longer be treated as valid
38-
* @param token The Auth Token to be revoked
39-
*/
40-
public void revokeToken(AuthToken token);
41-
42-
/**
43-
* Updates a token to be valid for a greater period of time or to have different attributes.
44-
* @param token The token to be refreshed
45-
*/
46-
public void resetToken(AuthToken token);
21+
public AuthToken issueToken(String audience);
4722
}

0 commit comments

Comments
 (0)