I have custom type node /et:document /which needs to shared among some users
in jackrabbit repository.

But when I try to impersonate as superuser and assign to each user, a
defined property /sharedWithMe/, getting *failed login exception*.

Log in as application user,

/SimpleCredentials credentials = new SimpleCredentials(userName,
password.toCharArray());
Session session = repository.login(credentials, "default");/

Trying to share documents(with property added to user node)

/SimpleCredentials credentials = new SimpleCredentials("superuser",
"superuser".toCharArray());
Session adminUser = session.impersonate(credentials);
UserManager userManager = ((JackrabbitSession) adminUser).getUserManager();

for(String userID : users) {
    User user = (User) userManager.getAuthorizable(userID);
    Value value = vf.createValue(docPath);
    Value[] sharedDocsPath =  user.getProperty("sharedWithMe");
    int shareDocIndex = 0;
    Value[] revisedSharedDocPath = null;

    if (null != sharedDocsPath && sharedDocsPath.length > 0) {
        revisedSharedDocPath = new Value[sharedDocsPath.length + 1];

        for (Value v : sharedDocsPath) {
            revisedSharedDocPath[shareDocIndex] = v;
            shareDocIndex++;
        }
        revisedSharedDocPath[shareDocIndex] = value;
    } else {
        revisedSharedDocPath = new Value[1];
        revisedSharedDocPath[shareDocIndex] = value;
    }

    user.setProperty("sharedWithMe", revisedSharedDocPath);
}/

getting exception:

*Caused by: javax.security.auth.login.FailedLoginException: attempt to
impersonate denied for superuser
    at
org.apache.jackrabbit.core.security.authentication.DefaultLoginModule.impersonate(DefaultLoginModule.java:306)
    at
org.apache.jackrabbit.core.security.authentication.AbstractLoginModule.login(AbstractLoginModule.java:330)
    at
org.apache.jackrabbit.core.security.authentication.LocalAuthContext.login(LocalAuthContext.java:86)*

Security tag info in repository.xml
/
<Security appName="EnterpriseManager">
    <SecurityManager
class="org.apache.jackrabbit.core.DefaultSecurityManager">
        <WorkspaceAccessManager
class="org.apache.jackrabbit.core.security.simple.SimpleWorkspaceAccessManager"/>
    </SecurityManager>
    <AccessManager
class="org.apache.jackrabbit.core.security.DefaultAccessManager"/>
    <LoginModule
class="org.apache.jackrabbit.core.security.authentication.DefaultLoginModule">  
       
        
    </LoginModule>
</Security>

<Workspace name="${wsp.name}">
    <WorkspaceSecurity>               
        <AccessControlProvider
class="org.apache.jackrabbit.core.security.authorization.principalbased.ACLProvider">
            
        </AccessControlProvider>
    </WorkspaceSecurity>
</Workspace>/

Using JCR 2.0, Jackrabbit 2.6



--
View this message in context: 
http://jackrabbit.510166.n4.nabble.com/Unable-to-impersonate-Jackrabbit-tp4661380.html
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.

Reply via email to