public class PropertiesRealm extends TextConfigurationRealm implements org.apache.shiro.util.Destroyable, Runnable
TextConfigurationRealm
that defers all logic to the parent class, but just enables
Properties
based configuration in addition to the parent class's String configuration.
This class allows processing of a single .properties file for user, role, and
permission configuration.
The resourcePath
MUST be set before this realm can be initialized. You
can specify any resource path supported by
ResourceUtils.getInputStreamForPath
method.
The Properties format understood by this implementation must be written as follows:
Each line's key/value pair represents either a user-to-role(s) mapping or a role-to-permission(s)
mapping.
The user-to-role(s) lines have this format:
user.username = password,role1,role2,...
Note that each key is prefixed with the token user.
Each value must adhere to the
the setUserDefinitions(String)
JavaDoc.
The role-to-permission(s) lines have this format:
role.rolename = permissionDefinition1, permissionDefinition2, ...
where each key is prefixed with the token role.
and the value adheres to the format specified in
the setRoleDefinitions(String)
JavaDoc.
Here is an example of a very simple properties definition that conforms to the above format rules and corresponding
method JavaDocs:
user.root = rootPassword,administrator
user.jsmith = jsmithPassword,manager,engineer,employee
user.abrown = abrownPassword,qa,employee
user.djones = djonesPassword,qa,contractor
role.administrator = *
role.manager = "user:read,write", file:execute:/usr/local/emailManagers.sh
role.engineer = "file:read,execute:/usr/local/tomcat/bin/startup.sh"
role.employee = application:use:wiki
role.qa = "server:view,start,shutdown,restart:someQaServer", server:view:someProductionServer
role.contractor = application:use:timesheet
Modifier and Type | Field and Description |
---|---|
protected long |
fileLastModified |
protected int |
reloadIntervalSeconds |
protected String |
resourcePath |
protected ExecutorService |
scheduler |
protected boolean |
useXmlFormat |
roles, ROLES_LOCK, users, USERS_LOCK
Constructor and Description |
---|
PropertiesRealm() |
Modifier and Type | Method and Description |
---|---|
protected void |
afterRoleCacheSet() |
void |
destroy()
Destroy reload scheduler if one exists.
|
protected String |
getName(String key,
String prefix) |
protected String |
getRolename(String key) |
protected String |
getUsername(String key) |
protected boolean |
isRolename(String key) |
protected boolean |
isUsername(String key) |
void |
onInit()
Will call 'processDefinitions' on startup.
|
void |
run() |
void |
setReloadIntervalSeconds(int reloadIntervalSeconds)
Sets the interval in seconds at which the property file will be checked for changes and reloaded.
|
void |
setResourcePath(String resourcePath)
Sets the path of the properties file to load user, role, and permission information from.
|
void |
setUseXmlFormat(boolean useXmlFormat)
Determines whether or not the properties XML format should be used.
|
protected void |
startReloadThread() |
getRoleDefinitions, getUserDefinitions, processDefinitions, processRoleDefinitions, processRoleDefinitions, processUserDefinitions, processUserDefinitions, setRoleDefinitions, setUserDefinitions, toLines, toMap
accountExists, add, add, addAccount, addAccount, addRole, doGetAuthenticationInfo, doGetAuthorizationInfo, getRole, getUser, getUsername, getUsername, roleExists, toSet
afterCacheManagerSet, checkPermission, checkPermission, checkPermission, checkPermissions, checkPermissions, checkPermissions, checkRole, checkRole, checkRoles, checkRoles, checkRoles, clearCachedAuthorizationInfo, doClearCache, getAuthorizationCache, getAuthorizationCacheKey, getAuthorizationCacheName, getAuthorizationInfo, getPermissionResolver, getPermissions, getRolePermissionResolver, hasAllRoles, hasRole, hasRole, hasRoles, hasRoles, isAuthorizationCachingEnabled, isPermitted, isPermitted, isPermitted, isPermitted, isPermitted, isPermitted, isPermittedAll, isPermittedAll, isPermittedAll, setAuthorizationCache, setAuthorizationCacheName, setAuthorizationCachingEnabled, setName, setPermissionResolver, setRolePermissionResolver
assertCredentialsMatch, clearCachedAuthenticationInfo, getAuthenticationCache, getAuthenticationCacheKey, getAuthenticationCacheKey, getAuthenticationCacheName, getAuthenticationInfo, getAuthenticationTokenClass, getCredentialsMatcher, init, isAuthenticationCachingEnabled, isAuthenticationCachingEnabled, setAuthenticationCache, setAuthenticationCacheName, setAuthenticationCachingEnabled, setAuthenticationTokenClass, setCredentialsMatcher, supports
clearCache, getAvailablePrincipal, getCacheManager, getName, isCachingEnabled, onLogout, setCacheManager, setCachingEnabled
protected ExecutorService scheduler
protected boolean useXmlFormat
protected String resourcePath
protected long fileLastModified
protected int reloadIntervalSeconds
public void setUseXmlFormat(boolean useXmlFormat)
Properties.loadFromXML(java.io.InputStream)
useXmlFormat
- true to use XML or false to use the normal format. Defaults to false.public void setResourcePath(String resourcePath)
ResourceUtils.getInputStreamForPath(String)
so any convention recognized
by that method is accepted here. For example, to load a file from the classpath use
classpath:myfile.properties
; to load a file from disk simply specify the full path; to load
a file from a URL use url:www.mysite.com/myfile.properties
.resourcePath
- the path to load the properties file from. This is a required property.public void setReloadIntervalSeconds(int reloadIntervalSeconds)
reloadIntervalSeconds
- the interval in seconds at which the property file should be examined for changes.
If set to zero or less, reloading is disabled.public void onInit()
TextConfigurationRealm
onInit
in class TextConfigurationRealm
protected void afterRoleCacheSet()
public void destroy()
destroy
in interface org.apache.shiro.util.Destroyable
protected void startReloadThread()
protected boolean isUsername(String key)
protected boolean isRolename(String key)
Copyright © 2004–2019 The Apache Software Foundation. All rights reserved.