[jboss-user] [Security & JAAS/JBoss] - JaasAuthenticationProvider and AuthorityGranter

dlarosa11 do-not-reply at jboss.com
Tue May 13 13:09:23 EDT 2008


I'm trying to get JasperServer to run in JBoss using my JAAS implementation.  I can get the authentication to work, but I'm having a problem with the AuthorityGranter bean in my applicationContext-security.xml file.

Here's the error that I get when JBoss tries to load my JasperServer.war file:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ptiJaasAuthenticationProvider' defined in ServletContext resource [/WEB-INF/applicationContext-security.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
  | PropertyAccessException 1: org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.util.ArrayList] to required type [org.acegisecurity.providers.jaas.AuthorityGranter[]] for property 'authorityGranters'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [com.perimeter.authentication.PtiAuthorityGranter] to required type [org.acegisecurity.providers.jaas.AuthorityGranter] for property 'authorityGranters[0]': no matching editors or conversion strategy found
  | 
  | Caused by: 
  | 
  | org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessException details (1) are:
  | 
  | PropertyAccessException 1:
  | 
  | org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.util.ArrayList] to required type [org.acegisecurity.providers.jaas.AuthorityGranter[]] for property 'authorityGranters'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [com.perimeter.authentication.PtiAuthorityGranter] to required type [org.acegisecurity.providers.jaas.AuthorityGranter] for property 'authorityGranters[0]': no matching editors or conversion strategy found
  | 
  | Caused by: 
  | 
  | java.lang.IllegalArgumentException: Cannot convert value of type [com.perimeter.authentication.PtiAuthorityGranter] to required type [org.acegisecurity.providers.jaas.AuthorityGranter] for property 'authorityGranters[0]': no matching editors or conversion strategy found
  | 
  | 	at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:224)
  | 
  | 	at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:124)
  | 
  | 	at org.springframework.beans.TypeConverterDelegate.convertToTypedArray(TypeConverterDelegate.java:282)
  | 
  | 	at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:197)
  | 
  | 	at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate

My AuthorityGranter class is as follows:
public class PtiAuthorityGranter implements org.acegisecurity.providers.jaas.AuthorityGranter
  | {
  |     public Set grant(Principal principal)
  |     {
  |         Set rtnSet = new HashSet();
  | 
  | 	// just add administrator right off the bat for now
  | 	// TODO: check database for permissions and add appropriate ones
  | 	rtnSet.add("ROLE_ADMINISTRATOR");
  | 
  |         // if (principal.getName().equals("TEST_PRINCIPAL")) {
  | 	//    rtnSet.add("ROLE_TEST1");
  | 	//    rtnSet.add("ROLE_TEST2");
  | 	// }
  | 	
  |         return rtnSet;
  |     }
  | }

Here's the snippet from applicationContext-security.xml:


  |     <bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">
  |         <property name="providers">
  |             <list>
  | 	        <!-- here is the list of authentication mechanisms -->
  | 		<ref local="ptiJaasAuthenticationProvider"/>
  |             </list>
  |         </property>
  |     </bean>
  |     
  |     <bean id="ptiJaasAuthenticationProvider" class="org.acegisecurity.providers.jaas.JaasAuthenticationProvider">
  | 
  |         <!-- TODO: we don't actually want to look here,
  | 	           we should look in server/default/conf/login-conf.xml for jboss -->
  |         <property name="loginConfig">
  |             <value>/WEB-INF/login.conf</value>
  |         </property>
  | 
  |         <property name="loginContextName">
  |             <value>RealtimeAppDb</value>
  |         </property>
  | 
  |         <property name="callbackHandlers">
  |             <list>
  |                 <bean class="org.acegisecurity.providers.jaas.JaasNameCallbackHandler"/>
  |                 <bean class="org.acegisecurity.providers.jaas.JaasPasswordCallbackHandler"/>
  |             </list>
  |         </property>
  | 
  |         <property name="authorityGranters">
  | 	<list>
  |            <bean class="com.perimeter.authentication.PtiAuthorityGranter"/>
  | 	</list>
  |         </property>
  |     </bean>
  | 

Any help, of course, is greatly appreciated.

Domenic


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4150472#4150472

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4150472



More information about the jboss-user mailing list