rogerrut    2005/01/28 14:37:51

  Modified:    
applications/security/src/java/org/apache/jetspeed/portlets/security/sso
                        SSODetails.java
  Log:
  SSO Update
  --> Added group support. You can create an SSO entry for a group. A user will 
be checked against each member of the group for a match
  --> Added new API's which makes it easier to call from the UI since at that 
point no subject is available.
  --> Updated SSO Management portlets so that it handles groups
  --> Cleanup of code and removal of unused imports
  
  Revision  Changes    Path
  1.9       +63 -20    
jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/sso/SSODetails.java
  
  Index: SSODetails.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/sso/SSODetails.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SSODetails.java   21 Jan 2005 22:09:22 -0000      1.8
  +++ SSODetails.java   28 Jan 2005 22:37:51 -0000      1.9
  @@ -74,9 +74,9 @@
               throw new PortletException("Failed to find the User Manager on 
portlet initialization");
           }
           groupManager = (GroupManager) 
getPortletContext().getAttribute(SecurityResources.CPS_GROUP_MANAGER_COMPONENT);
  -        if (null == userManager)
  +        if (null == groupManager)
           {
  -            throw new PortletException("Failed to find the User Manager on 
portlet initialization");
  +            throw new PortletException("Failed to find the Group Manager on 
portlet initialization");
           }        
       }
          
  @@ -169,7 +169,7 @@
               String refresh = request.getParameter("sso.refresh");
               String add = request.getParameter("sso.add");
               String delete = request.getParameter("ssoDelete");
  -            
  +           
               if (refresh != null)
               {
                   this.clearBrowserIterator(request);
  @@ -180,17 +180,37 @@
                   {
                       String siteName = 
(String)PortletMessaging.receive(request, "site", "selectedUrl");               
                             
                       SSOSite site = sso.getSite(siteName);
  -                    User user = userManager.getUser(delete);                 
       
  -                    if (site != null && user != null)
  -                    {                            
  -                        Subject subject = user.getSubject(); 
  -                        sso.removeCredentialsForSite(subject, 
site.getSiteURL());
  -                        this.clearBrowserIterator(request);
  +                    User user = null;
  +                    try
  +                    {
  +                        user = userManager.getUser(delete);   
                       }
  -                }
  -                catch (SecurityException e)
  -                {
  -                    publishStatusMessage(request, "SSODetails", "status", e, 
"Could not remove credentials");
  +                    catch(SecurityException se)
  +                    {
  +                        // User doesn't exist -- maybe a group
  +                        user =null;
  +                    }
  +                    
  +                    if ( site != null )
  +                    {
  +                        /*
  +                          * If the user is null try to remove a group
  +                          */
  +                         if ( user != null)
  +                         {
  +                             // Remove USER
  +                             Subject subject = user.getSubject(); 
  +                             sso.removeCredentialsForSite(subject, 
site.getSiteURL());
  +                             this.clearBrowserIterator(request);
  +                         }
  +                         else
  +                         {
  +                             // Try group removal
  +                             String fullPath = "/group/" + delete;
  +                             sso.removeCredentialsForSite(fullPath, 
site.getSiteURL());
  +                             this.clearBrowserIterator(request);
  +                         }  
  +                      }
                   }
                   catch (SSOException e)
                   {
  @@ -200,21 +220,44 @@
               else if (add != null)
               {
                   // Roger: here is the principal type
  -                String principalType = 
request.getParameter("principal.type");
  +                String principalType = 
request.getParameter("principal.type");  //group user
                   String portalPrincipal = 
request.getParameter("portal.principal");                
                   String remotePrincipal = 
request.getParameter("remote.principal");
                   String remoteCredential = 
request.getParameter("remote.credential");
  +                
  +                // The principal type can benull if the user just typed the 
name instead of
  +                // using the choosers.
  +                
  +                if (principalType == null || principalType.length() == 0 )
  +                    principalType = "user";
  +                
                   if (!(isEmpty(remotePrincipal) || isEmpty(remotePrincipal) 
|| isEmpty(remoteCredential)))
                   {
                       try
                       {
                           String siteName = 
(String)PortletMessaging.receive(request, "site", "selectedUrl");               
         
                           SSOSite site = sso.getSite(siteName);
  -                        User user = userManager.getUser(portalPrincipal);    
                    
  -                        if (site != null && user != null)
  -                        {                            
  -                            Subject subject = user.getSubject(); 
  -                            sso.addCredentialsForSite(subject, 
remotePrincipal, site.getSiteURL(), remoteCredential);
  +                        Subject subject = null;
  +                        String groupFullPath = null;
  +                        
  +                        if (principalType.compareTo("user") == 0)
  +                        {
  +                            User user = 
userManager.getUser(portalPrincipal);    
  +                            subject = user.getSubject();
  +                        }
  +                        else
  +                        {
  +                            // Create fullPath
  +                            groupFullPath = "/group/" + portalPrincipal;
  +                          }
  +                        
  +                        if (site != null && (subject != null || 
groupFullPath != null) )
  +                        {
  +                            if (subject != null )
  +                                sso.addCredentialsForSite(subject, 
remotePrincipal, site.getSiteURL(), remoteCredential);
  +                            else
  +                                sso.addCredentialsForSite(groupFullPath, 
remotePrincipal, site.getSiteURL(), remoteCredential);
  +                            
                               this.clearBrowserIterator(request);
                           }
                       }
  
  
  

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

Reply via email to