Author: dblevins
Date: Tue May 26 17:45:38 2009
New Revision: 778810
URL: http://svn.apache.org/viewvc?rev=778810&view=rev
Log:
Patch from Jean-Louis Monteiro, OPENEJB-1003: SecurityService does not call
JAAS logout
Thanks, Jean-Louis!
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/security/SecurityServiceImpl.java
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/security/SecurityServiceImpl.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/security/SecurityServiceImpl.java?rev=778810&r1=778809&r2=778810&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/security/SecurityServiceImpl.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/security/SecurityServiceImpl.java
Tue May 26 17:45:38 2009
@@ -26,12 +26,16 @@
import java.net.URL;
import java.net.URLDecoder;
import java.util.UUID;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
/**
* @version $Rev$ $Date$
*/
public class SecurityServiceImpl extends AbstractSecurityService {
+ static private final Map<Object, LoginContext> contexts = new
ConcurrentHashMap<Object, LoginContext>();
+
public SecurityServiceImpl() {
this(BasicJaccProvider.class.getName());
}
@@ -72,6 +76,23 @@
Subject subject = context.getSubject();
- return registerSubject(subject);
+ UUID token = registerSubject(subject);
+ contexts.put(token, context);
+
+ return token;
}
+
+ /* (non-Javadoc)
+ * @see
org.apache.openejb.core.security.AbstractSecurityService#logout(java.util.UUID)
+ */
+ @Override
+ public void logout(UUID securityIdentity) throws LoginException {
+ LoginContext context = contexts.get(securityIdentity);
+ if (null == context) {
+ throw new IllegalStateException("Unable to logout. Can not recover
LoginContext.");
+ }
+ context.logout();
+ super.logout(securityIdentity);
+ }
+
}