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