jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Francisco Carriedo Scher <fcarrie...@gmail.com>
Subject Re: Creating user manager instance in order to create users
Date Sun, 25 Sep 2011 11:18:49 GMT
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