@Service public final class FileRealm extends BaseRealm
In addition to the basic realm functionality, this class provides administration methods for the file realm.
Format of the keyfile used by this class is one line per user containing username;password;groups
where:
The file realm needs the following properties in its configuration:
Modifier and Type | Field and Description |
---|---|
static String |
AUTH_TYPE
Descriptive string of the authentication type of this realm.
|
static String |
PARAM_KEYFILE
These are property names which should be in auth-realm in server.xml
|
_logger, JAAS_CONTEXT_PARAM, RI_DEFAULT
groupMapper, GROUPS_SEP, PARAM_DEFAULT_DIGEST_ALGORITHM, PARAM_GROUP_MAPPING, PARAM_GROUPS
Constructor and Description |
---|
FileRealm()
No arg constructor used by the Realm class when creating realms.
|
FileRealm(String keyfile)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
addUser(String name,
char[] password,
String[] groupList)
Adds new user to file realm.
|
String[] |
authenticate(String user,
char[] password)
Authenticates a user.
|
String |
getAuthType()
Returns a short (preferably less than fifteen characters) description of the kind of authentication which is
supported by this realm.
|
Enumeration<String> |
getGroupNames()
Returns names of all the groups in this particular realm.
|
Enumeration<String> |
getGroupNames(String username)
Returns the name of all the groups that this user belongs to.
|
static List<String> |
getRealmFileNames(Config config)
Return a list of the file names used by all file realms defined for the specified config.
|
User |
getUser(String name)
Returns the information recorded about a particular named user.
|
Enumeration<String> |
getUserNames()
Returns names of all the users in this particular realm.
|
boolean |
hasAuthenticatableUser()
Test whether their is a user in the FileRealm that has a password that has been set, i.e.,
something other than the resetKey.
|
protected void |
init(Properties props)
Initialize a realm with some properties.
|
void |
persist()
Persist the realm data to permanent storage
|
void |
refresh()
Refreshes the realm data so that new users/groups are visible.
|
void |
refresh(String configName)
Refreshes the realm data so that new users/groups are visible.
|
void |
removeUser(String name)
Remove user from file realm.
|
boolean |
supportsUserManagement() |
void |
updateUser(String name,
String newName,
char[] password,
String[] groups)
Update data for an existing user.
|
addUser, updateUser
getDefaultInstance, getDefaultRealm, getInstance, getInstance, getRealmNames, getRealmStatsProvier, instantiate, instantiate, isValidRealm, isValidRealm, setDefaultRealm, unloadInstance, unloadInstance, updateInstance, updateInstance
addAssignGroups, compareTo, getDefaultDigestAlgorithm, getJAASContext, getMappedGroupNames, getName, getProperties, getProperty, setName, setProperty, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
compareTo
public static final String AUTH_TYPE
public static final String PARAM_KEYFILE
public FileRealm(String keyfile) throws BadRealmException, NoSuchRealmException
The created FileRealm instance is not registered in the Realm registry. This constructor can be used by admin tools to create a FileRealm instance which can be edited by adding or removing users and then saved to disk, without affecting the installed realm instance.
The file provided should always exist. A default (empty) keyfile is installed with the server so this should always be the case unless the user has manually deleted this file. If this file path provided does not point to an existing file this constructor will first attempt to create it. If this succeeds the constructor returns normally and an empty keyfile will have been created; otherwise an exception is thrown.
keyfile
- Full path to the keyfile to read for user data.BadRealmException
- If the configuration parameters identify a corrupt realm.NoSuchRealmException
- If the configuration parameters specify a realm which doesn't exist.public FileRealm()
public String getAuthType()
getAuthType
in class AbstractRealm
protected void init(Properties props) throws BadRealmException, NoSuchRealmException
init
in class AbstractStatefulRealm
props
- Initialization parameters used by this realm.BadRealmException
- If the configuration parameters identify a corrupt realm.NoSuchRealmException
- If the configuration parameters specify a realm which doesn't exist.public String[] authenticate(String user, char[] password)
This method is invoked by the FileLoginModule in order to authenticate a user in the file realm. The authentication decision is kept within the realm class implementation in order to keep the password cache in a single location with no public accessors, to simplify future improvements.
user
- Name of user to authenticate.password
- Password provided by client.public static List<String> getRealmFileNames(Config config)
config
- the config objectpublic Enumeration<String> getUserNames() throws BadRealmException
getUserNames
in class BaseRealm
BadRealmException
- if realm data structures are badpublic User getUser(String name) throws NoSuchUserException
getUser
in class BaseRealm
name
- Name of the user whose information is desired.NoSuchUserException
- if the user doesn't exist.public Enumeration<String> getGroupNames() throws BadRealmException
getGroupNames
in class BaseRealm
BadRealmException
- if realm data structures are badpublic Enumeration<String> getGroupNames(String username) throws NoSuchUserException
getGroupNames
in class AbstractRealm
username
- Name of the user in this realm whose group listing is needed.NoSuchUserException
- thrown if the realm does not support this operation - e.g. Certificate realm
does not support this operation.public void refresh() throws BadRealmException
A new FileRealm instance is created and initialized from the keyfile on disk. The new instance is installed in the Realm registry so future Realm.getInstance() calls will obtain the new data. Any existing references to this instance (e.g. in active LoginModule sessions) are unaffected.
refresh
in class BaseRealm
BadRealmException
- if realm data structures are badpublic void refresh(String configName) throws BadRealmException
A new FileRealm instance is created and initialized from the keyfile on disk. The new instance is installed in the Realm registry so future Realm.getInstance() calls will obtain the new data. Any existing references to this instance (e.g. in active LoginModule sessions) are unaffected.
refresh
in class AbstractStatefulRealm
config
- BadRealmException
- if realm data structures are badpublic void addUser(String name, char[] password, String[] groupList)
public void removeUser(String name)
removeUser
in class BaseRealm
name
- User name.public void updateUser(String name, String newName, char[] password, String[] groups)
updateUser
in class BaseRealm
name
- Current name of the user to update.newName
- New name to give this user. It can be the same as the original name. Otherwise it must be a new user
name which does not already exist as a user.password
- Cleartext password for the user. If non-null the user password is changed to this value. If null, the
original password is retained.groups
- List of groups to which user belongs.public void persist() throws BadRealmException
persist
in class BaseRealm
BadRealmException
public boolean hasAuthenticatableUser()
public boolean supportsUserManagement()
supportsUserManagement
in class BaseRealm
Copyright © 2019. All rights reserved.