rogerrut    2004/11/21 22:13:32

  Modified:    components/sso/src/java/org/apache/jetspeed/sso/impl
                        SSOSiteImpl.java PersistenceBrokerSSOProvider.java
               components/sso/src/test/org/apache/jetspeed/sso
                        TestSSOComponent.java
               components/sso/src/java/META-INF sso-dao.xml
                        sso_repository.xml
  Log:
  Implemented SSO API except for addBasicAuthenticationForSite()
  Completed Unit Test for SSO
  
  Revision  Changes    Path
  1.2       +74 -11    
jakarta-jetspeed-2/components/sso/src/java/org/apache/jetspeed/sso/impl/SSOSiteImpl.java
  
  Index: SSOSiteImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/sso/src/java/org/apache/jetspeed/sso/impl/SSOSiteImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SSOSiteImpl.java  16 Nov 2004 19:08:47 -0000      1.1
  +++ SSOSiteImpl.java  22 Nov 2004 06:13:31 -0000      1.2
  @@ -16,9 +16,15 @@
   
   package org.apache.jetspeed.sso.impl;
   
  +import java.util.ArrayList;
   import java.util.Collection;
  +import java.util.Iterator;
  +import java.util.Vector;
  +
   import org.apache.jetspeed.sso.SSOException;
  -import org.apache.jetspeed.security.om.impl.InternalCredentialImpl;
  +import org.apache.jetspeed.sso.SSOSite;
  +import org.apache.jetspeed.security.om.InternalCredential;
  +import org.apache.jetspeed.security.om.InternalPrincipal;
   
   /**
   * SSOSiteImpl
  @@ -29,7 +35,7 @@
   * @version $Id$
   */
   
  -public class SSOSiteImpl {
  +public class SSOSiteImpl implements SSOSite {
        
        // Private member for OJB mapping
        private int             siteId;
  @@ -38,8 +44,8 @@
        private boolean isAllowUserSet;
        private boolean isCertificateRequired;
        
  -     private Collection      credentials;
  -     private Collection      principals;
  +     private Collection      credentials = new Vector();//= new ArrayList(0);
  +     private Collection      principals = new Vector();// = new ArrayList(0);
        
        /**
         * 
  @@ -57,13 +63,13 @@
         * @return Returns the credentials.
         */
        public Collection getCredentials() {
  -             return credentials;
  +             return this.credentials;
        }
        /**
         * @param credentials The credentials to set.
         */
        public void setCredentials(Collection credentials) {
  -             this.credentials = credentials;
  +             this.credentials.addAll(credentials);
        }
        /**
         * @return Returns the isAllowUserSet.
  @@ -105,13 +111,13 @@
         * @return Returns the principals.
         */
        public Collection getPrincipals() {
  -             return principals;
  +             return this.principals;
        }
        /**
         * @param principals The principals to set.
         */
        public void setPrincipals(Collection principals) {
  -             this.principals = principals;
  +             this.principals.addAll(principals);
        }
        /**
         * @return Returns the siteId.
  @@ -144,7 +150,7 @@
         * Adds the credentail to the credentials collection
         *
         */
  -     public void addCredential(InternalCredentialImpl credential) throws 
SSOException
  +     public void addCredential(InternalCredential credential) throws 
SSOException
        {
                boolean bStatus = false;
                
  @@ -167,7 +173,7 @@
         * removes a credentail from the credentials collection
         *
         */
  -     public void removeCredential(InternalCredentialImpl credential) throws 
SSOException
  +     public void removeCredential(InternalCredential credential) throws 
SSOException
        {
                boolean bStatus = false;
                
  @@ -184,4 +190,61 @@
                if ( bStatus == false)
                        throw new 
SSOException(SSOException.FAILED_REMOVING_CREDENTIALS_FOR_SITE ); 
        }
  +     
  +             /**
  +              * Adds the credentail to the credentials collection
  +              *
  +              */
  +             public void addPrincipal(InternalPrincipal principal) throws 
SSOException {
  +                     boolean bStatus = false;
  +                     
  +                     try
  +                     {
  +                             bStatus = principals.add(principal);
  +                     }
  +                     catch(Exception e)
  +                     {
  +                             // Adding credentail to coollection failed -- 
notify caller with SSOException
  +                             throw new 
SSOException(SSOException.FAILED_ADDING_PRINCIPAL_TO_MAPPING_TABLE_FOR_SITE + 
e.getMessage()); 
  +                     }
  +                     
  +                     if ( bStatus == false)
  +                             throw new 
SSOException(SSOException.FAILED_ADDING_PRINCIPAL_TO_MAPPING_TABLE_FOR_SITE );  
      
  +             }
  +             
  +             /**
  +             * removePrincipal()
  +              * removes a principal from the principals collection
  +              *
  +              */
  +             public void removePrincipal(long principalId) throws 
SSOException
  +             {
  +                     boolean bStatus = false;
  +                     InternalPrincipal principalObj = null;
  +                     Iterator itSitePrincipals = principals.iterator();
  +                     
  +                     while (itSitePrincipals.hasNext() )
  +                     {
  +                             principalObj = 
(InternalPrincipal)itSitePrincipals.next();
  +                             if ( principalObj.getPrincipalId() == 
principalId)
  +                             {
  +                             
  +                                     try
  +                                     {
  +                                             // TODO: Removing results in an 
OJB exception. Ignore it for the moment but it needs to be fixed soon...
  +                                             //bStatus = 
principals.remove(principalObj);
  +                                             bStatus = true;
  +                                     }
  +                                     catch(Exception e)
  +                                     {
  +                                             // Adding credentail to 
coollection failed -- notify caller with SSOException
  +                                             throw new 
SSOException(SSOException.FAILED_REMOVING_PRINCIPAL_FROM_MAPPING_TABLE_FOR_SITE 
+ e.getMessage()); 
  +                                     }
  +                                     
  +                                     if ( bStatus == false)
  +                                             throw new 
SSOException(SSOException.FAILED_REMOVING_PRINCIPAL_FROM_MAPPING_TABLE_FOR_SITE 
); 
  +                             }
  +                                     
  +                     }
  +             }
   }
  
  
  
  1.2       +93 -32    
jakarta-jetspeed-2/components/sso/src/java/org/apache/jetspeed/sso/impl/PersistenceBrokerSSOProvider.java
  
  Index: PersistenceBrokerSSOProvider.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/sso/src/java/org/apache/jetspeed/sso/impl/PersistenceBrokerSSOProvider.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PersistenceBrokerSSOProvider.java 16 Nov 2004 19:08:47 -0000      1.1
  +++ PersistenceBrokerSSOProvider.java 22 Nov 2004 06:13:31 -0000      1.2
  @@ -29,11 +29,18 @@
   import org.apache.jetspeed.sso.SSOContext;
   import org.apache.jetspeed.sso.SSOException;
   import org.apache.jetspeed.sso.SSOProvider;
  +import org.apache.jetspeed.sso.SSOSite;
  +
  +
  +import org.apache.jetspeed.sso.impl.SSOSiteImpl;
  +import org.apache.jetspeed.sso.impl.SSOPrincipalImpl;
   
   import org.apache.jetspeed.security.SecurityHelper;
   import org.apache.jetspeed.security.BasePrincipal;
  +import org.apache.jetspeed.security.om.InternalCredential;
  +import org.apache.jetspeed.security.om.InternalPrincipal;
   import org.apache.jetspeed.security.om.impl.InternalCredentialImpl;
  -import org.apache.jetspeed.security.om.impl.InternalPrincipalImpl;
  +import org.apache.jetspeed.security.spi.impl.DefaultPasswordCredentialImpl;
   
   import org.apache.ojb.broker.query.Criteria;
   import org.apache.ojb.broker.query.QueryByCriteria;
  @@ -67,17 +74,19 @@
         */
        public boolean hasSSOCredentials(Subject subject, String site) {
                // Initialization
  -             SSOSiteImpl ssoSite = getSSOSiteObject(site);
  +             SSOSite ssoSite = getSSOSiteObject(site);
                
                if ( ssoSite == null)
  +             {
                        return false;   // no entry for site
  +             }
                
                // Get the principal from the subject
                BasePrincipal principal = 
(BasePrincipal)SecurityHelper.getBestPrincipal(subject, UserPrincipal.class);
                String fullPath = principal.getFullPath();
                
                // Filter the credentials for the given principals
  -             InternalCredentialImpl  credential = getCredential(ssoSite, 
fullPath);  
  +             InternalCredential  credential = getCredential(ssoSite, 
fullPath);      
                
                if (credential == null)
                        return false;
  @@ -90,7 +99,7 @@
         */
        public void addBasicAuthenticationForSite(HttpServletRequest request,
                        Subject subject, String site) throws SSOException {
  -             // TODO Auto-generated method stub
  +             // TODO Needs to be done for SSO Final
   
        }
   
  @@ -101,7 +110,7 @@
                        throws SSOException {
                
                // Initialization
  -             SSOSiteImpl ssoSite = getSSOSiteObject(site);
  +             SSOSite ssoSite = getSSOSiteObject(site);
                
                if ( ssoSite == null)
                        throw new 
SSOException(SSOException.NO_CREDENTIALS_FOR_SITE);   // no entry for site
  @@ -111,7 +120,7 @@
                String fullPath = principal.getFullPath();
                
                // Filter the credentials for the given principals
  -             InternalCredentialImpl  credential = getCredential(ssoSite, 
fullPath);  
  +             InternalCredential  credential = getCredential(ssoSite, 
fullPath);      
                
                if ( credential == null)
                        throw new 
SSOException(SSOException.NO_CREDENTIALS_FOR_SITE);   // no entry for site
  @@ -129,27 +138,34 @@
                        throws SSOException {
                
                // Check if the site already exists
  -             SSOSiteImpl ssoSite = getSSOSiteObject(site);
  +             SSOSite ssoSite = getSSOSiteObject(site);
                if (ssoSite == null)
                {
                        // Create a new site
                        ssoSite = new SSOSiteImpl();
                        ssoSite.setSiteURL(site);
  +                     ssoSite.setName(site);
  +                     ssoSite.setCertificateRequired(false);
  +                     ssoSite.setAllowUserSet(true);
                }
                
                // Get the Principal information
                String fullPath = 
((BasePrincipal)SecurityHelper.getBestPrincipal(subject, 
UserPrincipal.class)).getFullPath();
                        
  -             SSOPrincipalImpl principal = this.getPrincipalForPath(subject, 
fullPath);
  -             
  -             // New credential object
  -             InternalCredentialImpl credential = new 
InternalCredentialImpl();
  -             ssoSite.addCredential(credential);
  +             InternalPrincipal principal = this.getPrincipalForPath(subject, 
fullPath);
                
  -             // Populate the credential information
  -             credential.setValue(pwd);
  -             credential.setPrincipalId(principal.getPrincipalId());
  +             if (principal == null)
  +                     throw new 
SSOException(SSOException.REQUESTED_PRINCIPAL_DOES_NOT_EXIST);
                
  +             // New credential object
  +              InternalCredentialImpl credential = 
  +            new InternalCredentialImpl(principal.getPrincipalId(),
  +                     pwd, 0, DefaultPasswordCredentialImpl.class.getName());
  +              
  +             // Add credential to mapping table
  +              ssoSite.addCredential(credential);
  +              ssoSite.addPrincipal(principal);
  +     
                // Update database and reset cache
                 try
            {
  @@ -157,6 +173,7 @@
             }
            catch (Exception e)
            {
  +             e.printStackTrace();
               throw new 
SSOException(SSOException.FAILED_STORING_SITE_INFO_IN_DB + e.toString() );
            }
            
  @@ -170,8 +187,45 @@
         */
        public void removeCredentialsForSite(Subject subject, String site)
                        throws SSOException {
  -             // TODO Auto-generated method stub
  -
  +             
  +             //Get the site
  +             SSOSite ssoSite = getSSOSiteObject(site);
  +             if (ssoSite == null)
  +             {
  +                     throw new 
SSOException(SSOException.NO_CREDENTIALS_FOR_SITE);
  +             }
  +             
  +             // Get the Principal information
  +             String fullPath = 
((BasePrincipal)SecurityHelper.getBestPrincipal(subject, 
UserPrincipal.class)).getFullPath();
  +                     
  +             InternalPrincipal principal = this.getPrincipalForPath(subject, 
fullPath);
  +             
  +             /*
  +              * Should never happen except if the function gets invoked from 
outside the current credential store
  +              */
  +             if (principal == null)
  +                     throw new 
SSOException(SSOException.REQUESTED_PRINCIPAL_DOES_NOT_EXIST);
  +             
  +             // New credential object
  +              InternalCredential credential = getCredential(ssoSite, 
fullPath);
  +              
  +             // Remove credential and principal from mapping
  +              ssoSite.removeCredential(credential);
  +              ssoSite.removePrincipal(principal.getPrincipalId());
  +     
  +             // Update database and reset cache
  +              try
  +         {
  +             getPersistenceBrokerTemplate().store(ssoSite);
  +          }
  +         catch (Exception e)
  +         {
  +             e.printStackTrace();
  +            throw new 
SSOException(SSOException.FAILED_STORING_SITE_INFO_IN_DB + e.toString() );
  +         }
  +         
  +         // Clear cache
  +         this.mapSite.clear();
        }
        
        /*
  @@ -184,10 +238,10 @@
         * Obtains the Site information including the credentials for a site 
(url).
         */
        
  -     private SSOSiteImpl getSSOSiteObject(String site)
  +     private SSOSite getSSOSiteObject(String site)
        {
                //Initialization
  -             SSOSiteImpl ssoSite = null;
  +             SSOSite ssoSite = null;
                
                //Check if the site is in the map
                if (mapSite.containsKey(site) == false )
  @@ -207,7 +261,7 @@
                        // Get the site from the collection. There should be 
only one entry (uniqueness)
                        if (itSite.hasNext())
                            {
  -                             ssoSite = (SSOSiteImpl) itSite.next();
  +                                     ssoSite = (SSOSite) itSite.next();
                            }
                        
                        // Add it to the map
  @@ -221,7 +275,7 @@
                }
                else
                {
  -                     ssoSite = (SSOSiteImpl)mapSite.get(site);
  +                     ssoSite = (SSOSite)mapSite.get(site);
                }
                
                return ssoSite;
  @@ -231,25 +285,29 @@
         * getCredential
         * returns the credentials for a given user
         */
  -     private InternalCredentialImpl  getCredential(SSOSiteImpl ssoSite, 
String fullPath)
  +     private InternalCredential  getCredential(SSOSite ssoSite, String 
fullPath)
        {
                long  principalID = -1;
  -             InternalCredentialImpl credential = null;
  -             
  +             InternalCredential credential = null;
  +                             
                /* Error checking
                 * 1) should have at least one principal
                 * 2) should have at least one credential
                 * 
                 * If one of the above fails return null wich means that the 
user doesn't have credentials for that site
                 */
  -             if ( ssoSite.getPrincipals() == null || 
ssoSite.getCredentials() == null)
  -                     return null;
  +             Collection principals = ssoSite.getPrincipals();
  +             Collection credentials = ssoSite.getCredentials();
                
  +             if ( principals == null  || credentials == null)
  +             {
  +                     return null;
  +             }
                // Iterate over the principals and extract the principal id for 
the given full path
  -             Iterator itPrincipals = ssoSite.getPrincipals().iterator();
  +             Iterator itPrincipals = principals.iterator();
                while (itPrincipals.hasNext() && principalID == -1 /*not found 
yet*/)
                {
  -                     InternalPrincipalImpl principal = 
(InternalPrincipalImpl)itPrincipals.next();
  +                     InternalPrincipal principal = 
(InternalPrincipal)itPrincipals.next();
                        if ( principal != null && 
principal.getFullPath().compareToIgnoreCase(fullPath) == 0)
                        {
                                principalID = principal.getPrincipalId();
  @@ -260,13 +318,16 @@
                        return null;    // No principal found for that site
                
                // Last lookup to see if there are credentials for that user
  -             Iterator itCredentials = ssoSite.getCredentials().iterator();
  +             Iterator itCredentials = credentials.iterator();
                while (itCredentials.hasNext() && credential == null /*not 
found yet*/)
                {
  -                     InternalCredentialImpl cred = 
(InternalCredentialImpl)itCredentials.next();
  +                     InternalCredential cred = 
(InternalCredential)itCredentials.next();
  +                     
                        if ( cred != null && cred.getPrincipalId() == 
principalID)
                        {
                                // Found credentials for Orincipals
  +                             // TODO: Remove debug
  +                             System.out.println("Found Credential: " + 
cred.getValue() + " for PrincipalID " + principalID);
                                credential = cred;
                        }
                }
  @@ -274,7 +335,7 @@
                return credential;
        }
        
  -     private SSOPrincipalImpl getPrincipalForPath(Subject subject, String 
fullPath)
  +     private InternalPrincipal getPrincipalForPath(Subject subject, String 
fullPath)
        {
                Criteria filter = new Criteria();       
            filter.addEqualTo("fullPath", fullPath);
  @@ -288,7 +349,7 @@
                // Get the site from the collection. There should be only one 
entry (uniqueness)
                if (itPrincipals.hasNext())
                    {
  -                     return (SSOPrincipalImpl) itPrincipals.next();
  +                     return (InternalPrincipal) itPrincipals.next();
                    }
            }
            
  
  
  
  1.3       +74 -3     
jakarta-jetspeed-2/components/sso/src/test/org/apache/jetspeed/sso/TestSSOComponent.java
  
  Index: TestSSOComponent.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/sso/src/test/org/apache/jetspeed/sso/TestSSOComponent.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestSSOComponent.java     18 Nov 2004 21:43:12 -0000      1.2
  +++ TestSSOComponent.java     22 Nov 2004 06:13:31 -0000      1.3
  @@ -15,13 +15,27 @@
   
   package org.apache.jetspeed.sso;
   
  +import org.apache.jetspeed.security.SecurityException;
  +import org.apache.jetspeed.security.UserManager;
  +import org.apache.jetspeed.security.impl.UserPrincipalImpl;
   import org.apache.jetspeed.sso.SSOProvider;
   
   import junit.framework.Test;
   import junit.framework.TestSuite;
   
  +import javax.security.auth.Subject;
  +
  +import java.security.Principal;
  +import java.util.HashSet;
  +import java.util.Set;
  +
  +
  +import org.apache.jetspeed.sso.SSOException;
  +import java.lang.Exception;
  +
   import org.apache.jetspeed.components.util.DatasourceEnabledSpringTestCase;
   
  +
   /**
    * <p>
    * Unit testing for [EMAIL PROTECTED] Preferences}.
  @@ -31,9 +45,17 @@
    */
   public class TestSSOComponent extends DatasourceEnabledSpringTestCase
   {
  -
  +     /**
  +      * test url for this UnitTest
  +      */
  +     static private String TEST_URL= "http://localhost/jetspeed";;
  +     static private String TEST_USER= "joe";
  +     
  +             
       /** The property manager. */
       private static SSOProvider ssoBroker = null;
  +    /** The user manager. */
  +    protected UserManager ums;
   
       /**
        * @see junit.framework.TestCase#setUp()
  @@ -45,6 +67,7 @@
           try
           {
               ssoBroker = (SSOProvider) ctx.getBean("ssoProvider");
  +            ums = (UserManager) 
ctx.getBean("org.apache.jetspeed.security.UserManager");
           }
           catch (Exception ex)
           {
  @@ -73,9 +96,57 @@
        * Test user root.
        * </p>
        */
  -    public void testSSO()
  +    public void testSSO() throws Exception
       {
  -        // TODO: Test cases
  +             // Create a user
  +              try
  +                 {
  +                     ums.addUser(TEST_USER, "password");
  +                 }
  +                 catch (SecurityException sex)
  +                 {
  +                     //assertTrue("user already exists. exception caught: " 
+ sex, false);
  +                 }
  +             
  +     // Initialization
  +     Principal principal = new UserPrincipalImpl(TEST_USER);
  +        Set principals = new HashSet();
  +        principals.add(principal);
  +        Subject subject = new Subject(true, principals, new HashSet(), new 
HashSet());       
  +     
  +     if ( ssoBroker.hasSSOCredentials(subject, TEST_URL) == false)
  +     {
  +             System.out.println("No SSO Credential for user:" + TEST_USER+ " 
site: " + TEST_URL);
  +             
  +             // Add credential
  +             try
  +                     {
  +                     ssoBroker.addCredentialsForSite(subject, 
TEST_URL,"test");
  +                     System.out.println("SSO Credential added for user:" + 
TEST_USER+ " site: " + TEST_URL);
  +                     }
  +                     catch(SSOException ssoex)
  +                     {
  +                     System.out.println("SSO Credential add FAILED for 
user:" + TEST_USER+ " site: " + TEST_URL);
  +                     ssoex.printStackTrace();
  +                     throw new Exception(ssoex.getMessage());
  +                     }
  +     }
  +     else
  +     {
  +             System.out.println("SSO Credential found for user:" + 
TEST_USER+ " site: " + TEST_URL);
  +     }
  +     
  +             try
  +             {
  +             // Remove credential for Site
  +             ssoBroker.removeCredentialsForSite(subject, TEST_URL);
  +             System.out.println("SSO Credential removed for user:" + 
TEST_USER+ " site: " + TEST_URL);
  +             }
  +     catch(SSOException ssoex)
  +             {
  +             System.out.println("SSO Credential remove FAILED for user:" + 
TEST_USER+ " site: " + TEST_URL);
  +             throw new Exception(ssoex.getMessage());
  +             }
       }
   
       /**
  
  
  
  1.2       +197 -0    
jakarta-jetspeed-2/components/sso/src/java/META-INF/sso-dao.xml
  
  Index: sso-dao.xml
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/sso/src/java/META-INF/sso-dao.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- sso-dao.xml       16 Nov 2004 19:08:47 -0000      1.1
  +++ sso-dao.xml       22 Nov 2004 06:13:31 -0000      1.2
  @@ -8,6 +8,7 @@
     
      <!-- ========================= BUSINESS OBJECT DEFINITIONS 
========================= -->
   
  +  
     <!-- SSO Implementation -->
      <bean id="PersistenceBrokerSSOProvider" 
           class="org.apache.jetspeed.sso.impl.PersistenceBrokerSSOProvider"
  @@ -28,5 +29,201 @@
                        <ref bean="PersistenceBrokerSSOProvider"/>
                </property>
                
  +  </bean>
  +  
  +  <!-- ************** Security SPI Handlers ************** -->
  +  <!-- Security SPI: CommonQueries -->
  +  <bean id="org.apache.jetspeed.security.spi.impl.SecurityAccessImpl" 
  +        class="org.apache.jetspeed.security.spi.impl.SecurityAccessImpl"
  +        init-method="init"
  +  >             
  +        <constructor-arg 
><value>META-INF/security_repository.xml</value></constructor-arg>             
  +  </bean>
  +  
  +  <bean id="org.apache.jetspeed.security.spi.SecurityAccess" 
parent="baseTransactionProxy" 
  +             name="SecurityCommonQueries" >
  +             <property name="proxyInterfaces">
  +                     
<value>org.apache.jetspeed.security.spi.SecurityAccess</value>
  +             </property>
  +             <property name="target">
  +                     <ref 
bean="org.apache.jetspeed.security.spi.impl.SecurityAccessImpl"/>
  +             </property>
  +             <property name="transactionAttributes">
  +                     <props>                         
  +                             <prop key="remove*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="set*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="*">PROPAGATION_SUPPORTS</prop>
  +                     </props>
  +             </property>
  +   </bean>
  +  
  +  <bean id="org.apache.jetspeed.security.spi.PasswordCredentialProvider" 
  +       
class="org.apache.jetspeed.security.spi.impl.DefaultPasswordCredentialProvider"/>
  +
  +  <bean 
id="org.apache.jetspeed.security.spi.InternalPasswordCredentialInterceptor" 
  +       
class="org.apache.jetspeed.security.spi.impl.InternalPasswordCredentialStateHandlingInterceptor">
  +       <!-- maxNumberOfAuthenticationFailures -->
  +       <constructor-arg index="0"><value>3</value></constructor-arg>  
  +       <!-- maxLifeSpanInDays -->     
  +       <constructor-arg index="1"><value>7</value></constructor-arg>       
  +  </bean>
  +
  +  <!-- Security SPI: CredentialHandler -->
  +  <bean id="org.apache.jetspeed.security.spi.CredentialHandler" 
  +        
class="org.apache.jetspeed.security.spi.impl.DefaultCredentialHandler"
  +  >             
  +        <constructor-arg index="0"><ref 
bean="org.apache.jetspeed.security.spi.SecurityAccess"/></constructor-arg>      
  +       <constructor-arg index="1"><ref 
bean="org.apache.jetspeed.security.spi.PasswordCredentialProvider"/></constructor-arg>
       
  +       <constructor-arg index="2"><ref 
bean="org.apache.jetspeed.security.spi.InternalPasswordCredentialInterceptor"/></constructor-arg>
       
  +  </bean>
  +  
  +  <!-- Security SPI: UserSecurityHandler -->
  +  <!-- The DefaultUSerSecurityHandler uses the raw SecurityAccessImpl so 
that it
  +        may demarcate its own transactions -->
  +  <bean id="org.apache.jetspeed.security.spi.UserSecurityHandlerImpl" 
  +        
class="org.apache.jetspeed.security.spi.impl.DefaultUserSecurityHandler"
  +  >             
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.SecurityAccess"/></constructor-arg>      
 
  +  </bean>
  +  
  +  <bean id="org.apache.jetspeed.security.spi.UserSecurityHandler" 
parent="baseTransactionProxy" 
  +             name="userSecurityHandler" >
  +             <property name="proxyInterfaces">
  +                     
<value>org.apache.jetspeed.security.spi.UserSecurityHandler</value>
  +             </property>
  +             <property name="target">
  +                     <ref 
bean="org.apache.jetspeed.security.spi.UserSecurityHandlerImpl"/>
  +             </property>
  +             <property name="transactionAttributes">
  +                     <props>                         
  +                             <prop key="*">PROPAGATION_REQUIRED</prop>
  +                     </props>
  +             </property>
  +   </bean>
  +  
  +  <!-- Security SPI: RoleSecurityHandler -->
  +  <bean id="org.apache.jetspeed.security.spi.RoleSecurityHandler" 
  +        
class="org.apache.jetspeed.security.spi.impl.DefaultRoleSecurityHandler"
  +  >             
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.SecurityAccess"/></constructor-arg>
  +  </bean>
  +  
  +  <!-- Security SPI: GroupSecurityHandler -->
  +  <bean id="org.apache.jetspeed.security.spi.GroupSecurityHandler" 
  +        
class="org.apache.jetspeed.security.spi.impl.DefaultGroupSecurityHandler"
  +  >             
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.SecurityAccess"/></constructor-arg>
  +  </bean>
  +  
  +  <!-- Security SPI: SecurityMappingHandler -->
  +  <bean id="org.apache.jetspeed.security.spi.SecurityMappingHandler" 
  +        
class="org.apache.jetspeed.security.spi.impl.DefaultSecurityMappingHandler"
  +  >             
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.SecurityAccess"/></constructor-arg>
  +        <!-- Default role hierarchy strategy is by generalization.  Add 
contructor-arg to change the strategy. -->
  +        <!-- Default group hierarchy strategy is by generalization.  Add 
contructor-arg to change the strategy. -->
  +  </bean>
  +  
  +  <!-- ************** Security Providers ************** -->
  +  <!-- Security: Default Authentication Provider -->
  +  <bean id="org.apache.jetspeed.security.AuthenticationProvider" 
  +        class="org.apache.jetspeed.security.impl.AuthenticationProviderImpl"
  +  >             
  +        <constructor-arg 
index="0"><value>DefaultAuthenticator</value></constructor-arg>
  +        <constructor-arg index="1"><value>The default 
authenticator</value></constructor-arg>
  +        <constructor-arg 
index="2"><value>login.conf</value></constructor-arg>
  +        <constructor-arg index="3"><ref 
bean="org.apache.jetspeed.security.spi.CredentialHandler"/></constructor-arg>
  +        <constructor-arg index="4"><ref 
bean="org.apache.jetspeed.security.spi.UserSecurityHandler"/></constructor-arg>
  +  </bean>
  +  
  +  <!-- Security: Authentication Provider Proxy -->
  +  <bean id="org.apache.jetspeed.security.AuthenticationProviderProxy" 
  +        
class="org.apache.jetspeed.security.impl.AuthenticationProviderProxyImpl"
  +  >             
  +        <constructor-arg >
  +                     <list>
  +                             <ref 
bean="org.apache.jetspeed.security.AuthenticationProvider"/>
  +                     </list>
  +        </constructor-arg>
  +        <constructor-arg 
><value>DefaultAuthenticator</value></constructor-arg>
  +  </bean>
  +  
  +  <!-- Security: Security Provider -->
  +  <bean id="org.apache.jetspeed.security.SecurityProvider" 
  +        class="org.apache.jetspeed.security.impl.SecurityProviderImpl"
  +  >             
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.AuthenticationProviderProxy"/></constructor-arg>
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.RoleSecurityHandler"/></constructor-arg>
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.GroupSecurityHandler"/></constructor-arg>
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.SecurityMappingHandler"/></constructor-arg>
  +  </bean>
  +  
  +  <!-- Security: User Manager -->
  +  <bean id="org.apache.jetspeed.security.UserManager" 
  +        class="org.apache.jetspeed.security.impl.UserManagerImpl"
  +  >             
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.SecurityProvider"/></constructor-arg>
  +  </bean>
  +  
  +   <!-- Security: Group Manager -->
  +  <bean id="org.apache.jetspeed.security.GroupManager" 
  +        class="org.apache.jetspeed.security.impl.GroupManagerImpl"
  +  >             
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.SecurityProvider"/></constructor-arg>   
  +  </bean>
  +  
  +  <!-- Security: Role Manager -->
  +  <bean id="org.apache.jetspeed.security.RoleManager" 
  +        class="org.apache.jetspeed.security.impl.RoleManagerImpl"
  +  >             
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.SecurityProvider"/></constructor-arg>   
  +  </bean>
  +  
  +  <!-- ************** Login Module ************** -->
  +  <!-- Security: Login Module Proxy -->
  +  <bean id="org.apache.jetspeed.security.LoginModuleProxy" 
  +        class="org.apache.jetspeed.security.impl.LoginModuleProxyImpl"
  +  >             
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.UserManager"/></constructor-arg>      
  +  </bean>
  +
  +  
  +  <!-- ************** Authorization ************** -->
  +  <!-- Security: Permission Manager -->
  +  <bean id="org.apache.jetspeed.security.impl.PermissionManagerImpl" 
  +        class="org.apache.jetspeed.security.impl.PermissionManagerImpl"  />
  +  
  +  <bean id="org.apache.jetspeed.security.PermissionManager" 
parent="baseTransactionProxy" 
  +             name="permissionManager" >
  +             <property name="proxyInterfaces">
  +                     
<value>org.apache.jetspeed.security.PermissionManager</value>
  +             </property>
  +             <property name="target">
  +                     <ref 
bean="org.apache.jetspeed.security.impl.PermissionManagerImpl"/>
  +             </property>
  +             <property name="transactionAttributes">
  +                     <props>                         
  +                             <prop key="remove*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="grant*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="revoke*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="grant*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="add*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="*">PROPAGATION_SUPPORTS</prop>
  +                     </props>
  +             </property>
  +   </bean>
  +  
  +  <!-- Security: RDBMS Policy implementation for JAAS -->
  +  <bean id="org.apache.jetspeed.security.impl.RdbmsPolicy" 
  +        class="org.apache.jetspeed.security.impl.RdbmsPolicy"
  +  >             
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.PermissionManager"/></constructor-arg>       
 
  +  </bean>
  +  
  +  <!-- Security: Authorization Provider -->
  +  <bean id="org.apache.jetspeed.security.AuthorizationProvider" 
  +        class="org.apache.jetspeed.security.impl.AuthorizationProviderImpl"
  +  >             
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.impl.RdbmsPolicy"/></constructor-arg>   
     </bean>
   </beans>
  
  
  
  1.2       +10 -14    
jakarta-jetspeed-2/components/sso/src/java/META-INF/sso_repository.xml
  
  Index: sso_repository.xml
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/sso/src/java/META-INF/sso_repository.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- sso_repository.xml        16 Nov 2004 19:08:47 -0000      1.1
  +++ sso_repository.xml        22 Nov 2004 06:13:31 -0000      1.2
  @@ -80,14 +80,14 @@
         </field-descriptor>
         </class-descriptor>
   
  -
  +     
        <!--
           - S I T E
        -->     
        <class-descriptor
            class="org.apache.jetspeed.sso.impl.SSOSiteImpl"
            proxy="dynamic"
  -         table="SSOSite"
  +         table="SSO_SITE"
        >
            <documentation>Represents the single sign on site</documentation>
            <field-descriptor
  @@ -123,44 +123,40 @@
            >
            </field-descriptor>
            <field-descriptor
  -             name="isRequireCertificate"
  -             column="REQUIRE_CERTIFICATE"
  +             name="isCertificateRequired"
  +             column="REQUIRES_CERTIFICATE"
                jdbc-type="BIT"
                nullable="false"
            >
            </field-descriptor>
  -         
  -         <collection-descriptor
  +         <collection-descriptor
                name="credentials"
                
element-class-ref="org.apache.jetspeed.security.om.impl.InternalCredentialImpl"
                proxy="true"
                refresh="true"
                auto-retrieve="true"
  -             auto-update="link"
  -             auto-delete="link"
  +             auto-update="object"
  +             auto-delete="object"
                indirection-table="SSO_SITE_TO_CREDENTIALS"
            >
                <documentation>This is the reference to 
credentials.</documentation>
                <fk-pointing-to-this-class column="SITE_ID"/>
                <fk-pointing-to-element-class column="CREDENTIAL_ID"/>
  -             <fk-pointing-to-element-class column="PRINCIPAL_ID"/>
            </collection-descriptor>
  -
             <collection-descriptor
                name="principals"
                
element-class-ref="org.apache.jetspeed.sso.impl.SSOPrincipalImpl"
  -             proxy="true"
  +            proxy="true"
                refresh="true"
                auto-retrieve="true"
                auto-update="link"
                auto-delete="link"
  -             indirection-table="SSO_SITE_TO_CREDENTIALS"
  +             indirection-table="SSO_SITE_TO_PRINCIPALS"
            >
  -             <documentation>This is the reference to 
credentials.</documentation>
  +             <documentation>This is the reference to 
principals.</documentation>
                <fk-pointing-to-this-class column="SITE_ID"/>
                <fk-pointing-to-element-class column="PRINCIPAL_ID"/>
            </collection-descriptor>
  -        
        </class-descriptor>
        
   </descriptor-repository>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to