|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.acegisecurity.providers.jaas.JaasAuthenticationProvider
public class JaasAuthenticationProvider
An AuthenticationProvider implementation that retrieves user details
from a JAAS login configuration.
This AuthenticationProvider is capable of validating UsernamePasswordAuthenticationToken
requests contain the correct username and password.
This implementation is backed by a JAAS
configuration. The loginConfig property must be set to a given JAAS
configuration file. This setter accepts a Spring Resource instance. It should point to a JAAS
configuration file containing an index matching the loginContextName property.
For example: If this JaasAuthenticationProvider were configured in a Spring WebApplicationContext the xml to set the loginConfiguration could be as follows...
<property name="loginConfig"> <value>/WEB-INF/login.conf</value> </property>
The loginContextName should coincide with a given index in the loginConfig specifed. The loginConfig file used in the JUnit tests appears as the following...
JAASTest {
org.acegisecurity.providers.jaas.TestLoginModule required;
};
Using the example login configuration above, the loginContextName property
would be set as JAASTest...
<property name="loginContextName"> <value>JAASTest</value> </property>
When using JAAS login modules as the authentication source, sometimes the LoginContext
will require CallbackHandlers. The JaasAuthenticationProvider uses
an internal CallbackHandler
to wrap the JaasAuthenticationCallbackHandlers configured in the
ApplicationContext. When the LoginContext calls the internal
CallbackHandler, control is passed to each JaasAuthenticationCallbackHandler for each Callback passed.
{JaasAuthenticationCallbackHandlers are passed to the
JaasAuthenticationProvider through the callbackHandlers property. }
<property name="callbackHandlers"> <list> <bean class="org.acegisecurity.providers.jaas.TestCallbackHandler"/> <bean class="org.acegisecurity.providers.jaas.JaasNameCallbackHandler"/> <bean class="org.acegisecurity.providers.jaas.JaasPasswordCallbackHandler"/> </list> </property>
After calling LoginContext.login(), the JaasAuthenticationProvider will
retrieve the returned Principals from the Subject
(LoginContext.getSubject().getPrincipals). Each returned principal is then
passed to the configured AuthorityGranters. An AuthorityGranter is
a mapping between a returned Principal, and a role name. If an
AuthorityGranter wishes to grant an Authorization a role, it returns that
role name from it's AuthorityGranter.grant(java.security.Principal)
method. The returned role will be applied to the Authorization object as a
GrantedAuthority.
AuthorityGranters are configured in spring xml as follows...
<property name="authorityGranters"> <list> <bean class="org.acegisecurity.providers.jaas.TestAuthorityGranter"/> </list> </property>A configuration note: The JaasAuthenticationProvider uses the security properites "e;login.config.url.X"e; to configure jaas. If you would like to customize the way Jaas gets configured, create a subclass of this and override the
configureJaas(Resource) method.
| Field Summary | |
|---|---|
protected static org.apache.commons.logging.Log |
log
|
| Constructor Summary | |
|---|---|
JaasAuthenticationProvider()
|
|
| Method Summary | |
|---|---|
void |
afterPropertiesSet()
|
Authentication |
authenticate(Authentication auth)
Attempts to login the user given the Authentication objects principal and credential |
protected void |
configureJaas(Resource loginConfig)
Hook method for configuring Jaas |
ApplicationContext |
getApplicationContext()
|
AuthorityGranter[] |
getAuthorityGranters()
Returns the AuthorityGrannter array that was passed to the setAuthorityGranters(AuthorityGranter[]) method, or null if it none
were ever set. |
JaasAuthenticationCallbackHandler[] |
getCallbackHandlers()
Returns the current JaasAuthenticationCallbackHandler array, or null if none are set. |
Resource |
getLoginConfig()
|
String |
getLoginContextName()
|
LoginExceptionResolver |
getLoginExceptionResolver()
|
protected void |
handleLogout(HttpSessionDestroyedEvent event)
Handles the logout by getting the SecurityContext for the session that was destroyed. |
void |
onApplicationEvent(ApplicationEvent applicationEvent)
|
protected void |
publishFailureEvent(UsernamePasswordAuthenticationToken token,
AcegiSecurityException ase)
Publishes the JaasAuthenticationFailedEvent. |
protected void |
publishSuccessEvent(UsernamePasswordAuthenticationToken token)
Publishes the JaasAuthenticationSuccessEvent. |
void |
setApplicationContext(ApplicationContext applicationContext)
|
void |
setAuthorityGranters(AuthorityGranter[] authorityGranters)
Set the AuthorityGranters that should be consulted for role names to be granted to the Authentication. |
void |
setCallbackHandlers(JaasAuthenticationCallbackHandler[] callbackHandlers)
Set the JAASAuthentcationCallbackHandler array to handle callback objects generated by the LoginContext.login method. |
void |
setLoginConfig(Resource loginConfig)
Set the JAAS login configuration file. |
void |
setLoginContextName(String loginContextName)
Set the loginContextName, this name is used as the index to the configuration specified in the loginConfig property. |
void |
setLoginExceptionResolver(LoginExceptionResolver loginExceptionResolver)
|
boolean |
supports(Class aClass)
Returns true if this AuthenticationProvider
supports the indicated Authentication object. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected static final org.apache.commons.logging.Log log
| Constructor Detail |
|---|
public JaasAuthenticationProvider()
| Method Detail |
|---|
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException
setApplicationContext in interface ApplicationContextAwareBeansExceptionpublic ApplicationContext getApplicationContext()
public void setAuthorityGranters(AuthorityGranter[] authorityGranters)
authorityGranters - AuthorityGranter arrayJaasAuthenticationProviderpublic AuthorityGranter[] getAuthorityGranters()
setAuthorityGranters(AuthorityGranter[]) method, or null if it none
were ever set.
setAuthorityGranters(AuthorityGranter[])public void setCallbackHandlers(JaasAuthenticationCallbackHandler[] callbackHandlers)
callbackHandlers - Array of JAASAuthenticationCallbackHandlerspublic JaasAuthenticationCallbackHandler[] getCallbackHandlers()
setCallbackHandlers(JaasAuthenticationCallbackHandler[])public void setLoginConfig(Resource loginConfig)
loginConfig - Spring
Resourcepublic Resource getLoginConfig()
public void setLoginContextName(String loginContextName)
loginContextName - public String getLoginContextName()
public void setLoginExceptionResolver(LoginExceptionResolver loginExceptionResolver)
public LoginExceptionResolver getLoginExceptionResolver()
public void afterPropertiesSet()
throws Exception
afterPropertiesSet in interface InitializingBeanException
protected void configureJaas(Resource loginConfig)
throws IOException
loginConfigStr - URL to Jaas login configuration
IOException
public Authentication authenticate(Authentication auth)
throws AuthenticationException
authenticate in interface AuthenticationProviderauth - The Authentication object to be authenticated.
AuthenticationException - This implementation does not handle
'locked' or 'disabled' accounts. This method only throws a
AuthenticationServiceException, with the message of the
LoginException that will be thrown, should the
loginContext.login() method fail.public boolean supports(Class aClass)
AuthenticationProvidertrue if this AuthenticationProvider
supports the indicated Authentication object.
Returning true does not guarantee an
AuthenticationProvider will be able to authenticate the
presented instance of the Authentication class. It simply
indicates it can support closer evaluation of it. An
AuthenticationProvider can still return null
from the AuthenticationProvider.authenticate(Authentication) method to indicate
another AuthenticationProvider should be tried.
Selection of an AuthenticationProvider capable of
performing authentication is conducted at runtime the
ProviderManager.
supports in interface AuthenticationProvidertrue if the implementation can more closely
evaluate the Authentication class presentedpublic void onApplicationEvent(ApplicationEvent applicationEvent)
onApplicationEvent in interface ApplicationListenerprotected void handleLogout(HttpSessionDestroyedEvent event)
event -
protected void publishFailureEvent(UsernamePasswordAuthenticationToken token,
AcegiSecurityException ase)
JaasAuthenticationFailedEvent. Can be overridden
by subclasses for different functionality
token - The UsernamePasswordAuthenticationToken being
processedase - The AcegiSecurityException that caused the failureprotected void publishSuccessEvent(UsernamePasswordAuthenticationToken token)
JaasAuthenticationSuccessEvent. Can be overridden
by subclasses for different functionality.
token - The UsernamePasswordAuthenticationToken being
processed
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||