jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Saminda Wijeratne <samin...@gmail.com>
Subject Re: Creating user manager instance in order to create users
Date Sun, 25 Sep 2011 15:51:40 GMT
Hi,

Thanks for the insight. I've updated the repository.xml as mentioned &
executed the code. When getUserManager() is called an exception was thrown,
Exception in thread "main"
javax.jcr.UnsupportedRepositoryOperationException: UserManager not
supported.
    at
org.apache.jackrabbit.core.security.simple.SimpleSecurityManager.getUserManager(SimpleSecurityManager.java:254)
    at
org.apache.jackrabbit.core.SessionImpl.getUserManager(SessionImpl.java:652)
    at FirstHop.main(FirstHop.java:32)

When I debugged the session object it had a null for the userManager
variable. Do I need to change anything else in the repository.xml

Thanks,
Saminda

On Sun, Sep 25, 2011 at 7:18 AM, Francisco Carriedo Scher <
fcarriedos@gmail.com> wrote:

> Hi there,
>
> you were on the right path, anyway i paste here a code snipet to correctly
> create users. Since you mentioned the simple security manager i will specify
> a little bit more what "correct" means: users who later will be managed for
> access control by Jackrabbit.
>
>
> The code for creating users:
>
> Repository repository = new TransientRepository();
> BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
> Session session = repository.login(new SimpleCredentials("admin",
> "admin".toCharArray()));
>
> if (session instanceof JackrabbitSession) {
>      umgr = ((JackrabbitSession) session).getUserManager();
>  }
>
> System.out.println("Input username and password: ");
> umgr.createUser(br.readLine(), br.readLine());
> // Reaching this point with no exception means that the user was
> successfully created
>
>
> Prior to run the code above, the configuration for access management in
> repository.xml file must be completed. You need to specify the following
> classes (but no need to instantiate them in your code, it is used internally
> by Jackrabbit through JAAS (have a look
> http://download.oracle.com/javase/6/docs/technotes/guides/security/jaas/JAASRefGuide.html).
> Basically Jackrabbit uses JAAS for authentication (know if you are who you
> claim to be through username and password) and it's own ACLs for
> authentication (know if you are allowed to perform an action) :
>
> <SecurityManager class="org.apache.jackrabbit.core.DefaultSecurityManager"
> workspaceName="security">
> ...
> <AccessManager
> class="org.apache.jackrabbit.core.security.DefaultAccessManager">
> ...
> <LoginModule
> class="org.apache.jackrabbit.core.security.authentication.DefaultLoginModule">
>
>
>
> For setting ACLs details check
> http://wiki.apache.org/jackrabbit/AccessControl
>
> Hope that helps!
>
>
>
>
>
>
>
>
>
>
>
>
>
> 2011/9/25 Saminda Wijeratne <samindaw@gmail.com>
>
>> Hi,
>>
>> I'm new to using JackRabbit repository. I couldn't find a similar question
>> on the archives. I just want to programatically create a user for
>> JackRabbit
>> registry.
>>
>> I was attempting to use the JackRabbit API.
>>
>>        HashMap<String, String> map = new HashMap<String, String>();
>>        map.put("org.apache.jackrabbit.repository.uri", "
>> http://localhost:8080/rmi");
>>        Repository repository = new
>> RmiRepositoryFactory().getRepository(map);
>>        Credentials credentials=new SimpleCredentials("admin", new
>> String("admin").toCharArray());
>>        Session session = repository.login(credentials);
>>
>>
>> Tried to initialize the SimpleSecurityManager to get the UserManager
>> object.
>>
>>            SimpleSecurityManager simpleSecurityManager = new
>> SimpleSecurityManager();
>>            simpleSecurityManager.init(repository, session);
>>
>> But calling init method throws the following,
>> javax.jcr.RepositoryException: RepositoryImpl expected
>>    at
>>
>> org.apache.jackrabbit.core.security.simple.SimpleSecurityManager.init(SimpleSecurityManager.java:127)
>>    at FirstHop.main(FirstHop.java:38)
>>
>> Looking at the impl of the init method showed that the repository
>> parameter
>> expected in the init method looks for a specific implementation of
>> RepositoryImpl class. From where can this object be derived from the
>> existing repository object? Or is the way I'm doing this is all wrong?
>>
>> Thanks in advance,
>> Saminda
>>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message