Author: angela
Date: Wed May 15 08:49:40 2019
New Revision: 1859279
URL: http://svn.apache.org/viewvc?rev=1859279&view=rev
Log:
OAK-8315 : Missing nullability annotations in package
o.a.j.oak.security.authentication.token and
o.a.j.oak.spi.security.authentication.token
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/CommitMarker.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthentication.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenValidatorProvider.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/AbstractTokenTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthenticationTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenCleanupTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImplTest.java
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfiguration.java
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenProvider.java
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/package-info.java
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfigurationTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/CommitMarker.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/CommitMarker.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/CommitMarker.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/CommitMarker.java
Wed May 15 08:49:40 2019
@@ -35,6 +35,7 @@ final class CommitMarker {
private static final CommitMarker INSTANCE = new CommitMarker();
+ @NotNull
static Map<String, Object> asCommitAttributes() {
return Collections.<String, Object>singletonMap(CommitMarker.KEY,
CommitMarker.INSTANCE);
}
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthentication.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthentication.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthentication.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthentication.java
Wed May 15 08:49:40 2019
@@ -46,14 +46,14 @@ class TokenAuthentication implements Aut
private final TokenProvider tokenProvider;
private TokenInfo tokenInfo;
- TokenAuthentication(TokenProvider tokenProvider) {
+ TokenAuthentication(@NotNull TokenProvider tokenProvider) {
this.tokenProvider = tokenProvider;
}
//-----------------------------------------------------< Authentication
>---
@Override
public boolean authenticate(@Nullable Credentials credentials) throws
LoginException {
- if (tokenProvider != null && credentials instanceof TokenCredentials) {
+ if (credentials instanceof TokenCredentials) {
TokenCredentials tc = (TokenCredentials) credentials;
if (!validateCredentials(tc)) {
throw new LoginException("Invalid token credentials.");
@@ -61,7 +61,7 @@ class TokenAuthentication implements Aut
return true;
}
}
- // no tokenProvider or other credentials implementation -> not handled
here.
+ // other credentials implementation -> not handled here.
return false;
}
@@ -97,7 +97,7 @@ class TokenAuthentication implements Aut
}
//------------------------------------------------------------< private
>---
- private boolean validateCredentials(TokenCredentials tokenCredentials) {
+ private boolean validateCredentials(@NotNull TokenCredentials
tokenCredentials) {
// credentials without userID -> check if attributes provide
// sufficient information for successful authentication.
String token = tokenCredentials.getToken();
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java
Wed May 15 08:49:40 2019
@@ -157,11 +157,12 @@ public class TokenConfigurationImpl exte
*/
@NotNull
@Override
- public TokenProvider getTokenProvider(Root root) {
+ public TokenProvider getTokenProvider(@NotNull Root root) {
UserConfiguration uc =
getSecurityProvider().getConfiguration(UserConfiguration.class);
return new TokenProviderImpl(root, getParameters(), uc,
newCredentialsSupport());
}
+ @NotNull
private CredentialsSupport newCredentialsSupport() {
int size = credentialsSupport.size();
if (size == 0) {
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImpl.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImpl.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImpl.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImpl.java
Wed May 15 08:49:40 2019
@@ -207,6 +207,7 @@ class TokenProviderImpl implements Token
* @return A new {@code TokenInfo} or {@code null} if the token could not
* be created.
*/
+ @Nullable
@Override
public TokenInfo createToken(@NotNull String userId, @NotNull Map<String,
?> attributes) {
String error = "Failed to create login token. {}";
@@ -262,6 +263,7 @@ class TokenProviderImpl implements Token
* {@code null} of the corresponding information does not exist or
is not
* associated with a valid user.
*/
+ @Nullable
@Override
public TokenInfo getTokenInfo(@NotNull String token) {
int pos = token.indexOf(DELIM);
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenValidatorProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenValidatorProvider.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenValidatorProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenValidatorProvider.java
Wed May 15 08:49:40 2019
@@ -59,6 +59,7 @@ class TokenValidatorProvider extends Val
return new TokenValidator(before, after, commitInfo);
}
+ @NotNull
private static CommitFailedException constraintViolation(int code,
@NotNull String message) {
return new CommitFailedException(CommitFailedException.CONSTRAINT,
code, message);
}
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/AbstractTokenTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/AbstractTokenTest.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/AbstractTokenTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/AbstractTokenTest.java
Wed May 15 08:49:40 2019
@@ -20,11 +20,15 @@ import javax.jcr.AccessDeniedException;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.oak.AbstractSecurityTest;
+import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager;
import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import
org.apache.jackrabbit.oak.spi.security.authentication.credentials.CredentialsSupport;
+import
org.apache.jackrabbit.oak.spi.security.authentication.credentials.SimpleCredentialsSupport;
import
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConstants;
import org.apache.jackrabbit.oak.spi.security.authentication.token.TokenInfo;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
import org.apache.jackrabbit.oak.util.NodeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -42,9 +46,7 @@ public abstract class AbstractTokenTest
super.before();
root = adminSession.getLatestRoot();
- tokenProvider = new TokenProviderImpl(root,
- getTokenConfig(),
- getUserConfiguration());
+ tokenProvider = createTokenProvider(root, getUserConfiguration());
}
@Override
@@ -56,6 +58,16 @@ public abstract class AbstractTokenTest
}
}
+ @NotNull
+ TokenProviderImpl createTokenProvider(@NotNull Root root, @NotNull
UserConfiguration userConfiguration) {
+ return createTokenProvider(root, getTokenConfig(), userConfiguration,
SimpleCredentialsSupport.getInstance());
+ }
+
+ @NotNull
+ TokenProviderImpl createTokenProvider(@NotNull Root root, @NotNull
ConfigurationParameters options, @NotNull UserConfiguration userConfiguration,
@NotNull CredentialsSupport credentialsSupport) {
+ return new TokenProviderImpl(root, options, userConfiguration,
credentialsSupport);
+ }
+
ConfigurationParameters getTokenConfig() {
return ConfigurationParameters.EMPTY;
}
@@ -78,4 +90,11 @@ public abstract class AbstractTokenTest
tree.setProperty(tokenTree.getProperty(TOKEN_ATTRIBUTE_EXPIRY));
return tree;
}
+
+ void waitUntilExpired(@NotNull TokenInfo info) {
+ long now = System.currentTimeMillis();
+ while (!info.isExpired(now)) {
+ now = waitForSystemTimeIncrement(now);
+ }
+ }
}
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthenticationTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthenticationTest.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthenticationTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthenticationTest.java
Wed May 15 08:49:40 2019
@@ -29,7 +29,6 @@ import com.google.common.collect.Immutab
import
org.apache.jackrabbit.api.security.authentication.token.TokenCredentials;
import org.apache.jackrabbit.oak.AbstractSecurityTest;
import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
-import org.apache.jackrabbit.oak.spi.security.authentication.Authentication;
import
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConstants;
import org.apache.jackrabbit.oak.spi.security.authentication.token.TokenInfo;
import
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider;
@@ -44,19 +43,22 @@ import static org.junit.Assert.assertNot
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-
-public class TokenAuthenticationTest extends AbstractSecurityTest {
-
- TokenAuthentication authentication;
- TokenProviderImpl tokenProvider;
- String userId;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class TokenAuthenticationTest extends AbstractTokenTest {
+
+ private TokenAuthentication authentication;
+ private TokenProviderImpl tokenProvider;
+ private String userId;
@Before
public void before() throws Exception {
super.before();
- tokenProvider = new TokenProviderImpl(root,
- ConfigurationParameters.EMPTY,
- getUserConfiguration());
+ tokenProvider = createTokenProvider(root, getUserConfiguration());
root.commit();
authentication = new TokenAuthentication(tokenProvider);
@@ -64,13 +66,6 @@ public class TokenAuthenticationTest ext
}
@Test
- public void testAuthenticateWithoutTokenProvider() throws Exception {
- Authentication authentication = new TokenAuthentication(null);
-
- assertFalse(authentication.authenticate(new
TokenCredentials("token")));
- }
-
- @Test
public void testAuthenticateWithInvalidCredentials() throws Exception {
List<Credentials> invalid = new ArrayList<Credentials>();
invalid.add(new GuestCredentials());
@@ -118,7 +113,7 @@ public class TokenAuthenticationTest ext
}
@Test
- public void testAuthenticateNotMatchingToken() throws Exception {
+ public void testAuthenticateNotMatchingToken() {
TokenInfo info = tokenProvider.createToken(userId,
ImmutableMap.of(TokenConstants.TOKEN_ATTRIBUTE + "_mandatory", "val"));
try {
authentication.authenticate(new TokenCredentials(info.getToken()));
@@ -129,7 +124,7 @@ public class TokenAuthenticationTest ext
}
@Test
- public void testAuthenticateExpiredToken() throws Exception {
+ public void testAuthenticateExpiredToken() {
TokenProvider tp = new TokenProviderImpl(root,
ConfigurationParameters.of(TokenProvider.PARAM_TOKEN_EXPIRATION, 1),
getUserConfiguration());
@@ -148,13 +143,6 @@ public class TokenAuthenticationTest ext
assertNull(tp.getTokenInfo(info.getToken()));
}
- private void waitUntilExpired(@NotNull TokenInfo info) {
- long now = System.currentTimeMillis();
- while (!info.isExpired(now)) {
- now = waitForSystemTimeIncrement(now);
- }
- }
-
@Test(expected = IllegalStateException.class)
public void testGetUserIdBeforeLogin() {
authentication.getUserId();
@@ -180,19 +168,32 @@ public class TokenAuthenticationTest ext
}
@Test
+ public void testGetUserPrincipalNonDefaultProvider() throws Exception {
+ TokenInfo info = mock(TokenInfo.class);
+ when(info.isExpired(anyLong())).thenReturn(false);
+ when(info.matches(any(TokenCredentials.class))).thenReturn(true);
+
+ TokenProvider tp =
when(mock(TokenProvider.class).getTokenInfo(anyString())).thenReturn(info).getMock();
+ TokenAuthentication ta = new TokenAuthentication(tp);
+
+ assertTrue(ta.authenticate(new TokenCredentials("token")));
+ assertNull(ta.getUserPrincipal());
+ }
+
+ @Test
public void testAuthenticateRefreshToken() throws Exception {
TokenCredentials tc = new TokenCredentials("token");
- TokenProvider tp = Mockito.mock(TokenProvider.class);
- TokenInfo ti = Mockito.mock(TokenInfo.class);
+ TokenProvider tp = mock(TokenProvider.class);
+ TokenInfo ti = mock(TokenInfo.class);
- Mockito.when(tp.getTokenInfo(Mockito.anyString())).thenReturn(ti);
- Mockito.when(ti.isExpired(Mockito.anyLong())).thenReturn(false);
- Mockito.when(ti.matches(tc)).thenReturn(true);
+ when(tp.getTokenInfo(anyString())).thenReturn(ti);
+ when(ti.isExpired(anyLong())).thenReturn(false);
+ when(ti.matches(tc)).thenReturn(true);
TokenAuthentication auth = new TokenAuthentication(tp);
try {
assertTrue(auth.authenticate(tc));
- Mockito.verify(ti).resetExpiration(Mockito.anyLong());
+ Mockito.verify(ti).resetExpiration(anyLong());
} catch (LoginException e) {
fail(e.getMessage());
}
@@ -203,30 +204,30 @@ public class TokenAuthenticationTest ext
TokenCredentials tc = new TokenCredentials("token");
tc.setAttribute(TokenConstants.TOKEN_SKIP_REFRESH, "");
- TokenProvider tp = Mockito.mock(TokenProvider.class);
- TokenInfo ti = Mockito.mock(TokenInfo.class);
+ TokenProvider tp = mock(TokenProvider.class);
+ TokenInfo ti = mock(TokenInfo.class);
- Mockito.when(tp.getTokenInfo(Mockito.anyString())).thenReturn(ti);
- Mockito.when(ti.isExpired(Mockito.anyLong())).thenReturn(false);
- Mockito.when(ti.matches(tc)).thenReturn(true);
+ when(tp.getTokenInfo(anyString())).thenReturn(ti);
+ when(ti.isExpired(anyLong())).thenReturn(false);
+ when(ti.matches(tc)).thenReturn(true);
TokenAuthentication auth = new TokenAuthentication(tp);
try {
assertTrue(auth.authenticate(tc));
- Mockito.verify(ti,
Mockito.never()).resetExpiration(Mockito.anyLong());
+ Mockito.verify(ti, Mockito.never()).resetExpiration(anyLong());
} catch (LoginException e) {
fail(e.getMessage());
}
}
@Test
- public void testAuthenticateExpiredTokenMock() throws Exception {
+ public void testAuthenticateExpiredTokenMock() {
TokenCredentials tc = new TokenCredentials("token");
- TokenProvider tp = Mockito.mock(TokenProvider.class);
- TokenInfo ti = Mockito.mock(TokenInfo.class);
+ TokenProvider tp = mock(TokenProvider.class);
+ TokenInfo ti = mock(TokenInfo.class);
- Mockito.when(tp.getTokenInfo(Mockito.anyString())).thenReturn(ti);
- Mockito.when(ti.isExpired(Mockito.anyLong())).thenReturn(true);
+ when(tp.getTokenInfo(anyString())).thenReturn(ti);
+ when(ti.isExpired(anyLong())).thenReturn(true);
TokenAuthentication auth = new TokenAuthentication(tp);
try {
@@ -236,7 +237,7 @@ public class TokenAuthenticationTest ext
// success
}
- Mockito.verify(ti, Mockito.never()).matches(Mockito.any());
- Mockito.verify(ti, Mockito.never()).resetExpiration(Mockito.anyLong());
+ Mockito.verify(ti, Mockito.never()).matches(any());
+ Mockito.verify(ti, Mockito.never()).resetExpiration(anyLong());
}
}
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenCleanupTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenCleanupTest.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenCleanupTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenCleanupTest.java
Wed May 15 08:49:40 2019
@@ -47,7 +47,7 @@ public class TokenCleanupTest extends Ab
assertEquals(expectedNumber,
tokenParent.getChildrenCount(expectedNumber*2));
}
- private void createExpiredTokens(int numberOfTokens) throws Exception {
+ private void createExpiredTokens(int numberOfTokens) {
for (int i = 0; i < numberOfTokens; i++) {
TokenInfo tokenInfo = tokenProvider.createToken(userId,
ImmutableMap.of(TokenProvider.PARAM_TOKEN_EXPIRATION, 2));
// wait until the info created has expired
@@ -57,7 +57,7 @@ public class TokenCleanupTest extends Ab
}
}
- private int createTokensUntilCleanup() throws Exception {
+ private int createTokensUntilCleanup() {
int tkn = 0;
boolean clean = false;
while (!clean && tkn < 50) {
@@ -68,13 +68,6 @@ public class TokenCleanupTest extends Ab
return tkn;
}
- private void waitUntilExpired(@NotNull TokenInfo info) {
- long now = System.currentTimeMillis();
- while (!info.isExpired(now)) {
- now = waitForSystemTimeIncrement(now);
- }
- }
-
@Test
public void testExpiredBelowThreshold() throws Exception {
createExpiredTokens(4);
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImplTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImplTest.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImplTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImplTest.java
Wed May 15 08:49:40 2019
@@ -16,21 +16,34 @@
*/
package org.apache.jackrabbit.oak.security.authentication.token;
-import java.security.Principal;
-import java.util.List;
-
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import org.apache.jackrabbit.oak.AbstractSecurityTest;
import org.apache.jackrabbit.oak.spi.commit.MoveTracker;
import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import
org.apache.jackrabbit.oak.spi.security.authentication.credentials.CredentialsSupport;
+import
org.apache.jackrabbit.oak.spi.security.authentication.credentials.SimpleCredentialsSupport;
import
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConfiguration;
import
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider;
import org.junit.Test;
+import javax.jcr.Credentials;
+import javax.jcr.SimpleCredentials;
+import java.security.Principal;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import static
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConstants.TOKEN_ATTRIBUTE;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
public class TokenConfigurationImplTest extends AbstractSecurityTest {
@@ -87,4 +100,66 @@ public class TokenConfigurationImplTest
TokenProvider tp = tc.getTokenProvider(root);
assertTrue(tp instanceof TokenProviderImpl);
}
+
+ @Test
+ public void testBindNoCredentialsSupport() {
+ tc.unbindCredentialsSupport(SimpleCredentialsSupport.getInstance());
+
+ // fallback to default: simplecredentials support
+ TokenProvider tp = tc.getTokenProvider(root);
+
+ assertFalse(tp.doCreateToken(new TestCredentialsSupport.Creds()));
+
+ SimpleCredentials sc = new SimpleCredentials("uid", new char[0]);
+ assertFalse(tp.doCreateToken(sc));
+
+ sc.setAttribute(TOKEN_ATTRIBUTE, "");
+ assertTrue(tp.doCreateToken(sc));
+ }
+
+ @Test
+ public void testBindSingleCredentialsSupport() {
+ Credentials creds = mock(Credentials.class);
+ CredentialsSupport cs = mock(CredentialsSupport.class);
+
when(cs.getCredentialClasses()).thenReturn(Collections.singleton(creds.getClass()));
+
+ tc.bindCredentialsSupport(cs);
+
+ TokenProvider tp = tc.getTokenProvider(root);
+ assertFalse(tp.doCreateToken(creds));
+
+ Map attMap = ImmutableMap.of(TOKEN_ATTRIBUTE, "");
+ when(cs.getAttributes(creds)).thenReturn(attMap);
+ assertTrue(tp.doCreateToken(creds));
+
+ assertFalse(tp.doCreateToken(new SimpleCredentials("id", new
char[0])));
+
+ verify(cs, times(3)).getCredentialClasses();
+ verify(cs, times(2)).getAttributes(creds);
+ }
+
+ @Test
+ public void testBindMultipleCredentialsSupport() {
+ Credentials creds = mock(Credentials.class);
+ CredentialsSupport cs = mock(CredentialsSupport.class);
+
when(cs.getCredentialClasses()).thenReturn(Collections.singleton(creds.getClass()));
+
+ tc.bindCredentialsSupport(cs);
+ tc.bindCredentialsSupport(new TestCredentialsSupport());
+
+ TokenProvider tp = tc.getTokenProvider(root);
+ assertFalse(tp.doCreateToken(creds));
+
+ Map attMap = ImmutableMap.of(TOKEN_ATTRIBUTE, "");
+ when(cs.getAttributes(creds)).thenReturn(attMap);
+ assertTrue(tp.doCreateToken(creds));
+
+ assertTrue(tp.doCreateToken(new TestCredentialsSupport.Creds()));
+
+ assertFalse(tp.doCreateToken(new SimpleCredentials("id", new
char[0])));
+
+ verify(cs, times(4)).getCredentialClasses();
+ verify(cs, times(2)).getAttributes(creds);
+
+ }
}
\ No newline at end of file
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfiguration.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfiguration.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfiguration.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfiguration.java
Wed May 15 08:49:40 2019
@@ -39,7 +39,7 @@ public class CompositeTokenConfiguration
@NotNull
@Override
- public TokenProvider getTokenProvider(final Root root) {
+ public TokenProvider getTokenProvider(@NotNull final Root root) {
List<TokenProvider> providers = Lists.transform(getConfigurations(),
new Function<TokenConfiguration, TokenProvider>() {
@Override
public TokenProvider apply(TokenConfiguration tokenConfiguration) {
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenProvider.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenProvider.java
Wed May 15 08:49:40 2019
@@ -24,6 +24,7 @@ import javax.jcr.Credentials;
import com.google.common.collect.ImmutableList;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
/**
* Aggregates a collection of {@link TokenProvider}s into a single
@@ -61,6 +62,7 @@ public final class CompositeTokenProvide
return false;
}
+ @Nullable
@Override
public TokenInfo createToken(@NotNull Credentials credentials) {
for (TokenProvider tp : providers) {
@@ -72,6 +74,7 @@ public final class CompositeTokenProvide
return null;
}
+ @Nullable
@Override
public TokenInfo createToken(@NotNull String userId, @NotNull Map<String,
?> attributes) {
for (TokenProvider tp : providers) {
@@ -83,6 +86,7 @@ public final class CompositeTokenProvide
return null;
}
+ @Nullable
@Override
public TokenInfo getTokenInfo(@NotNull String token) {
for (TokenProvider tp : providers) {
@@ -100,16 +104,19 @@ public final class CompositeTokenProvide
return false;
}
+ @Nullable
@Override
public TokenInfo createToken(@NotNull Credentials credentials) {
return null;
}
+ @Nullable
@Override
public TokenInfo createToken(@NotNull String userId, @NotNull
Map<String, ?> attributes) {
return null;
}
+ @Nullable
@Override
public TokenInfo getTokenInfo(@NotNull String token) {
return null;
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java
Wed May 15 08:49:40 2019
@@ -34,5 +34,5 @@ public interface TokenConfiguration exte
* @return A new instance of {@link
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider}.
*/
@NotNull
- TokenProvider getTokenProvider(Root root);
+ TokenProvider getTokenProvider(@NotNull Root root);
}
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/package-info.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/package-info.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/package-info.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/package-info.java
Wed May 15 08:49:40 2019
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Version("1.6.0")
+@Version("1.6.1")
package org.apache.jackrabbit.oak.spi.security.authentication.token;
import org.osgi.annotation.versioning.Version;
Modified:
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfigurationTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfigurationTest.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfigurationTest.java
(original)
+++
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfigurationTest.java
Wed May 15 08:49:40 2019
@@ -145,7 +145,7 @@ public class CompositeTokenConfiguration
@NotNull
@Override
- public TokenProvider getTokenProvider(Root root) {
+ public TokenProvider getTokenProvider(@NotNull Root root) {
return Mockito.mock(TokenProvider.class);
}
}