From commits-return-10840-apmail-jackrabbit-commits-archive=jackrabbit.apache.org@jackrabbit.apache.org Tue Feb 15 10:41:43 2011 Return-Path: Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: (qmail 58939 invoked from network); 15 Feb 2011 10:41:42 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 15 Feb 2011 10:41:42 -0000 Received: (qmail 80657 invoked by uid 500); 15 Feb 2011 10:41:42 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 80551 invoked by uid 500); 15 Feb 2011 10:41:40 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 80544 invoked by uid 99); 15 Feb 2011 10:41:39 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 15 Feb 2011 10:41:39 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 15 Feb 2011 10:41:37 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 5C429238890A; Tue, 15 Feb 2011 10:41:15 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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 Date: Tue, 15 Feb 2011 10:41:15 -0000 To: commits@jackrabbit.apache.org From: angela@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110215104115.5C429238890A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 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; /** * TokenBasedLoginTest... @@ -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 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();