User: starksm 
  Date: 02/03/14 11:10:26

  Modified:    src/main/org/jboss/security/srp/jaas
                        SRPCacheLoginModule.java SRPLoginModule.java
  Log:
  Clear the session information on logout
  
  Revision  Changes    Path
  1.7       +27 -4     
jbosssx/src/main/org/jboss/security/srp/jaas/SRPCacheLoginModule.java
  
  Index: SRPCacheLoginModule.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jbosssx/src/main/org/jboss/security/srp/jaas/SRPCacheLoginModule.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SRPCacheLoginModule.java  8 Mar 2002 05:32:16 -0000       1.6
  +++ SRPCacheLoginModule.java  14 Mar 2002 19:10:26 -0000      1.7
  @@ -6,6 +6,7 @@
    */
   package org.jboss.security.srp.jaas;
   
  +import java.security.GeneralSecurityException;
   import java.security.Principal;
   import java.util.Arrays;
   import java.util.Map;
  @@ -21,6 +22,7 @@
   import javax.security.auth.spi.LoginModule;
   
   import org.jboss.logging.Logger;
  +import org.jboss.security.Util;
   import org.jboss.security.auth.callback.SecurityAssociationCallback;
   import org.jboss.security.srp.SRPParameters;
   import org.jboss.security.srp.SRPServerSession;
  @@ -39,7 +41,7 @@
    domainName,
    
    @author [EMAIL PROTECTED]
  - @version $Revision: 1.6 $
  + @version $Revision: 1.7 $
    */
   public class SRPCacheLoginModule implements LoginModule
   {
  @@ -152,8 +154,18 @@
         subject.getPublicCredentials().add(clientChallenge);
         byte[] sessionKey = session.getSessionKey();
         SRPParameters params = session.getParameters();
  -      SecretKeySpec secretKey = new SecretKeySpec(sessionKey, 
params.cipherAlgorithm);
  -      subject.getPrivateCredentials().add(secretKey);
  +      Set privateCredentials = subject.getPrivateCredentials();
  +      privateCredentials.add(params);
  +      if( params.cipherAlgorithm != null )
  +      {
  +         SecretKeySpec secretKey = new SecretKeySpec(sessionKey, 
params.cipherAlgorithm);
  +         privateCredentials.add(secretKey);
  +      }
  +      else
  +      {
  +         privateCredentials.add(sessionKey);
  +      }
  +
         return true;
      }
   
  @@ -180,7 +192,18 @@
               s.remove(userPrincipal);
               subject.getPublicCredentials().remove(clientChallenge);
               byte[] sessionKey = session.getSessionKey();
  -            subject.getPrivateCredentials().remove(sessionKey);
  +            SRPParameters params = session.getParameters();
  +            Set privateCredentials = subject.getPrivateCredentials();
  +            if( params.cipherAlgorithm != null )
  +            {
  +               SecretKeySpec secretKey = new SecretKeySpec(sessionKey, 
params.cipherAlgorithm);
  +               privateCredentials.remove(secretKey);
  +            }
  +            else
  +            {
  +               privateCredentials.remove(sessionKey);
  +            }
  +            privateCredentials.remove(params);
            }
         }
         catch(Exception e)
  
  
  
  1.6       +20 -14    jbosssx/src/main/org/jboss/security/srp/jaas/SRPLoginModule.java
  
  Index: SRPLoginModule.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jbosssx/src/main/org/jboss/security/srp/jaas/SRPLoginModule.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SRPLoginModule.java       8 Mar 2002 05:32:16 -0000       1.5
  +++ SRPLoginModule.java       14 Mar 2002 19:10:26 -0000      1.6
  @@ -55,7 +55,7 @@
    authentication system developed by Tom Wu ([EMAIL PROTECTED]).
    
    @author [EMAIL PROTECTED]
  - @version $Revision: 1.5 $
  + @version $Revision: 1.6 $
    */
   public class SRPLoginModule implements LoginModule
   {
  @@ -67,6 +67,7 @@
      private String srpServerJndiName;
      private String username;
      private char[] password;
  +   private SRPServerInterface srpServer;
      private SRPParameters params;
      private Principal userPrincipal;
      private byte[] sessionKey;
  @@ -112,21 +113,20 @@
         boolean trace = log.isTraceEnabled();
         loginFailed = true;
         getUserInfo();
  -      SRPServerInterface server;
         // First try to locate an SRPServerInterface using JNDI
         if( srpServerJndiName != null )
         {
  -         server = loadServerFromJndi(srpServerJndiName);
  +         srpServer = loadServerFromJndi(srpServerJndiName);
         }
         else if( srpServerRmiUrl != null )
         {
  -         server = loadServer(srpServerRmiUrl);
  +         srpServer = loadServer(srpServerRmiUrl);
         }
         else
         {
            throw new LoginException("No option specified to access a 
SRPServerInterface instance");
         }
  -      if( server == null )
  +      if( srpServer == null )
            throw new LoginException("Failed to access a SRPServerInterface instance");
         
         byte[] M1, M2;
  @@ -136,7 +136,7 @@
            if( trace )
               log.trace("Getting SRP parameters for username: "+username);
            Util.init();
  -         params = server.getSRPParameters(username);
  +         params = srpServer.getSRPParameters(username);
            if( trace )
            {
               log.trace("N: "+Util.tob64(params.N));
  @@ -158,13 +158,13 @@
            byte[] A = client.exponential();
            if( trace )
               log.trace("Exchanging public keys");
  -         byte[] B = server.init(username, A);
  +         byte[] B = srpServer.init(username, A);
            if( trace )
               log.trace("Generating server challenge");
            M1 = client.response(B);
            if( trace )
               log.trace("Exchanging challenges");
  -         M2 = server.verify(username, M1);
  +         M2 = srpServer.verify(username, M1);
            sessionKey = client.getSessionKey();
         }
         catch(Exception e)
  @@ -172,10 +172,6 @@
            log.warn("Failed to complete SRP login", e);
            throw new LoginException("Failed to complete SRP login, 
msg="+e.getMessage());
         }
  -      finally
  -      {
  -         server = null;
  -      }
   
         if( trace )
            log.trace("Verifying server response");
  @@ -226,8 +222,14 @@
            password = null;
         }
         subject.getPrincipals().add(userPrincipal);
  -      SecretKeySpec secretKey = new SecretKeySpec(sessionKey, 
params.cipherAlgorithm);
  -      subject.getPrivateCredentials().add(sessionKey);
  +      Set privateCredentials = subject.getPrivateCredentials();
  +      privateCredentials.add(sessionKey);
  +      if( params.cipherAlgorithm != null )
  +      {
  +         SecretKeySpec secretKey = new SecretKeySpec(sessionKey, 
params.cipherAlgorithm);
  +         privateCredentials.add(secretKey);
  +      }
  +      privateCredentials.add(params);
   
         return true;
      }
  @@ -253,6 +255,10 @@
               Set s = subject.getPrincipals(userPrincipal.getClass());
               s.remove(userPrincipal);
               subject.getPrivateCredentials().remove(sessionKey);
  +         }
  +         if( srpServer != null )
  +         {
  +            srpServer.close(username);
            }
         }
         catch(Exception e)
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to