[ https://issues.apache.org/jira/browse/JCR-1641?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Micah Whitacre updated JCR-1641: -------------------------------- Attachment: jcr-1641.patch Here is a quick and dirty patch that adds the needed methods to AbstractLoginModule as well as modifying the LoginModuleConfig constant to be correct. > DefaultLoginModule/SimpleLoginModule don't support custom PrincipalProvider > --------------------------------------------------------------------------- > > Key: JCR-1641 > URL: https://issues.apache.org/jira/browse/JCR-1641 > Project: Jackrabbit > Issue Type: Bug > Components: jackrabbit-core, JCR 2.0, security > Affects Versions: 1.5 > Environment: vista jdk 1.5.0_11 > Reporter: Micah Whitacre > Attachments: jcr-1641.patch, JCR-1641.zip > > > When configuring a custom PrincipalProvider for the SimpleLoginModule or > DefaultLoginModule, inside of a repository.xml file with configuration such > as the following: > <Security appName="Jackrabbit"> > <AccessManager > class="org.apache.jackrabbit.core.security.DefaultAccessManager"> > </AccessManager> > <LoginModule > > class="org.apache.jackrabbit.core.security.authentication.DefaultLoginModule"> > <param name="principalprovider" > value="com.foo.jcr.BasicPrincipalProvider"/> > </LoginModule> > <SecurityManager > class="org.apache.jackrabbit.core.DefaultSecurityManager"> > </SecurityManager> > </Security> > And that yields the following stacktrace: > javax.jcr.LoginException: > org.apache.jackrabbit.core.security.authentication.DefaultLoginModule does > not support 'principalprovider: > org.apache.jackrabbit.core.security.authentication.DefaultLoginModule does > not support 'principalprovider: > org.apache.jackrabbit.core.security.authentication.DefaultLoginModule does > not support 'principalprovider > at > org.apache.jackrabbit.core.RepositoryImpl.login(RepositoryImpl.java:1353) > at > org.apache.jackrabbit.commons.AbstractRepository.login(AbstractRepository.java:53) > at > com.foo.jcr.PrincipalProviderTest.testPrincipalProvider(PrincipalProviderTest.java:24) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59) > at > org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98) > at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79) > at > org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87) > at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77) > at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42) > at > org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88) > at > org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51) > at > org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44) > at > org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27) > at > org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37) > at > org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42) > at > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45) > at > org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) > Caused by: javax.security.auth.login.LoginException: > org.apache.jackrabbit.core.security.authentication.DefaultLoginModule does > not support 'principalprovider > at > org.apache.jackrabbit.core.security.authentication.LocalAuthContext.login(LocalAuthContext.java:68) > at > org.apache.jackrabbit.core.RepositoryImpl.login(RepositoryImpl.java:1346) > ... 24 more > javax.security.auth.login.LoginException: > org.apache.jackrabbit.core.security.authentication.DefaultLoginModule does > not support 'principalprovider > at > org.apache.jackrabbit.core.security.authentication.LocalAuthContext.login(LocalAuthContext.java:68) > at > org.apache.jackrabbit.core.RepositoryImpl.login(RepositoryImpl.java:1346) > at > org.apache.jackrabbit.commons.AbstractRepository.login(AbstractRepository.java:53) > at > com.foo.jcr.PrincipalProviderTest.testPrincipalProvider(PrincipalProviderTest.java:24) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59) > at > org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98) > at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79) > at > org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87) > at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77) > at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42) > at > org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88) > at > org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51) > at > org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44) > at > org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27) > at > org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37) > at > org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42) > at > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45) > at > org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.