There should be a tutorial arriving for this 'shortly', however in the
meantime this should be enough to get you going:
Implement the UserManager, User, and Group classes. (for example,
MyUserManager, MyUser, MyGroup).
The UserManager probably just needs to look like this for now:
public class MyUserManager extends AbstractUserManager {
public User getUser(String userName) {
if (userName == null)
return null;
return new MyUser(userName);
}
public Group getGroup(String groupName) {
if (groupName == null)
return null;
return new MyGroup(groupName);
}
}
You may need to implement some of the other methods too depending on your
requirements, but that should be a good start.
For the MyUser class, just implementing the constructor, authenticate() and
isMemberOf() should be enough for starters:
public class MyUser implements User {
private String username;
public MyUser(String username) {
this.username = username;
}
public boolean authenticate(String password) {
if (username == null)
return false;
// Lookup the user 'username', and compare the password supplied
// with their real password (possibly using a password hashing
function).
// ...
return ((password != null) && (password.equals(realPassword)));
}
public boolean isMemberOf(Group group) {
if (username == null)
return false;
// Do whatever you need to do to see if the user is in the group,
// and return true or false accordingly. Eg, find the username and
// the groupname as a matching pair in a user<->group mapping table.
}
}
The Group class can be very simple, for example as a minimum you can get
away with:
public class MyGroup implements Group {
String groupname;
public MyGroup(String groupname) {
this.groupname = groupname;
}
public String getName() {
return groupName;
}
}
Now you need to set up your orion-application.xml and web.xml files as per
the <orion>/docs/orion-application-xml.html and <orion>/docs/web-xml.html
files.
Eg, add to orion-application.xml your role->group mappings, eg:
<security-role-mapping name="sr_editor">
<group name="editor" />
</security-role-mapping>
and the the UserManager class, eg:
<user-manager class="com.mycompany.security.MyUserManager">
</user-manager>
In web.xml, add your <security-constraint> tags, the <login-config>, and
your <security-role> tags. There are examples of these tags that come with
orion I think, plus there's the docs, so you should be able to figure this
out easily enough. As a tip, start with BASIC authentication, and change it
to form based or whatever once that is working properly.
That's about it (well, as far as I can remember, there could be a couple of
other minor steps?).
Anyway, orion will now see that a protected resource has been asked for
(because of the <security-constraint> tags), and know to create an instance
of your UserManager class (thanks to the <user-manager> tag). It will use
this to get a User and a Group, and will attempt to authenticate that the
user falls into the correct group (which in turn maps to the correct role).
Apologies for any typo's/errors in the above, I've bashed it out pretty
quickly, but it should definitely point you in the right direction. Good
luck!
----- Original Message -----
From: "Christian Sell" <[EMAIL PROTECTED]>
To: "Orion-Interest" <[EMAIL PROTECTED]>
Sent: Tuesday, October 17, 2000 10:54 AM
Subject: custom user management
> Hi there,
>
> I want to customize orions authentication mechanism to use an existing
user
> database. So far, I understand that I have to create my own UserManager
> class and register it in orion-application.xml. What I dont understand is:
>
> - how do I access the user manager at runtime (e.g., to create users)
> - how do I perform programmatical login (bypassing the login-config from
> web.xml, e.g. from a home page with a login field)
>
> any hints, URLs?
>
> TIA,
> Christian
>
>
>