You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2011/02/15 11:41:15 UTC
svn commit: r1070831 - in /jackrabbit/trunk/jackrabbit-core/src:
main/java/org/apache/jackrabbit/core/RepositoryImpl.java
test/java/org/apache/jackrabbit/core/security/authentication/token/TokenBasedLoginTest.java
Author: angela
Date: Tue Feb 15 10:41:14 2011
New Revision: 1070831
URL: http://svn.apache.org/viewvc?rev=1070831&view=rev
Log:
JCR-2851 - Authentication Mechanism Based on Login Token
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authentication/token/TokenBasedLoginTest.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java?rev=1070831&r1=1070830&r2=1070831&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java Tue Feb 15 10:41:14 2011
@@ -96,6 +96,7 @@ import org.apache.jackrabbit.core.retent
import org.apache.jackrabbit.core.retention.RetentionRegistryImpl;
import org.apache.jackrabbit.core.security.JackrabbitSecurityManager;
import org.apache.jackrabbit.core.security.authentication.AuthContext;
+import org.apache.jackrabbit.core.security.authentication.token.TokenBasedAuthentication;
import org.apache.jackrabbit.core.security.simple.SimpleSecurityManager;
import org.apache.jackrabbit.core.cache.CacheManager;
import org.apache.jackrabbit.core.state.ChangeLog;
@@ -1496,8 +1497,11 @@ public class RepositoryImpl extends Abst
for (String name : sc.getAttributeNames()) {
session.setAttribute(name, sc.getAttribute(name));
}
- } else if (credentials instanceof TokenCredentials) {
- TokenCredentials tc = (TokenCredentials) credentials;
+ }
+ Set<TokenCredentials> tokenCreds = session.getSubject().getPublicCredentials(TokenCredentials.class);
+ if (!tokenCreds.isEmpty()) {
+ TokenCredentials tc = tokenCreds.iterator().next();
+ session.setAttribute(TokenBasedAuthentication.TOKEN_ATTRIBUTE, tc.getToken());
for (String name : tc.getAttributeNames()) {
session.setAttribute(name, tc.getAttribute(name));
}
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authentication/token/TokenBasedLoginTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authentication/token/TokenBasedLoginTest.java?rev=1070831&r1=1070830&r2=1070831&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authentication/token/TokenBasedLoginTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authentication/token/TokenBasedLoginTest.java Tue Feb 15 10:41:14 2011
@@ -21,6 +21,7 @@ import org.apache.jackrabbit.api.securit
import org.apache.jackrabbit.api.security.principal.ItemBasedPrincipal;
import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.api.security.user.UserManager;
+import org.apache.jackrabbit.core.SessionImpl;
import org.apache.jackrabbit.test.AbstractJCRTest;
import org.apache.jackrabbit.test.NotExecutableException;
@@ -35,6 +36,7 @@ import java.security.Principal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Set;
/**
* <code>TokenBasedLoginTest</code>...
@@ -42,7 +44,7 @@ import java.util.List;
public class TokenBasedLoginTest extends AbstractJCRTest {
private static final String TOKENS_NAME = ".tokens";
- private static final String TOKEN_ATTRIBUTE = ".token";
+ private static final String TOKEN_ATTRIBUTE = TokenBasedAuthentication.TOKEN_ATTRIBUTE;
private User testuser;
private String testuserPath;
@@ -112,6 +114,16 @@ public class TokenBasedLoginTest extends
s = repo.login(creds);
try {
+ Set<TokenCredentials> tokenCreds = ((SessionImpl) s).getSubject().getPublicCredentials(TokenCredentials.class);
+ assertFalse(tokenCreds.isEmpty());
+ assertEquals(1, tokenCreds.size());
+ TokenCredentials tc = tokenCreds.iterator().next();
+ assertEquals(tc.getToken(), s.getAttribute(TOKEN_ATTRIBUTE));
+ for (String attrName : tc.getAttributeNames()) {
+ assertEquals(tc.getAttribute(attrName), s.getAttribute(attrName));
+ }
+ assertEquals(tc.getToken(), s.getAttribute(TOKEN_ATTRIBUTE));
+
Node userNode = superuser.getNode(testuserPath);
assertTrue(userNode.hasNode(TOKENS_NAME));
@@ -127,6 +139,7 @@ public class TokenBasedLoginTest extends
assertEquals("any", ttNode.getProperty(TOKEN_ATTRIBUTE + ".any").getString());
token = ttNode.getIdentifier();
+ assertEquals(token, tc.getToken());
} finally {
s.logout();