maguro 2005/04/12 17:26:14
Modified: modules/core/src/java/org/openejb/corba/security
ServerSecurityInterceptor.java
Log:
Make sure that we always have a proper subject in the security context and a
proper reply.
Revision Changes Path
1.9 +32 -10
openejb/modules/core/src/java/org/openejb/corba/security/ServerSecurityInterceptor.java
Index: ServerSecurityInterceptor.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/security/ServerSecurityInterceptor.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ServerSecurityInterceptor.java 28 Mar 2005 21:00:17 -0000 1.8
+++ ServerSecurityInterceptor.java 12 Apr 2005 21:26:14 -0000 1.9
@@ -96,6 +96,8 @@
this.defaultSubject = defaultSubject;
if (defaultSubject != null)
ContextManager.registerSubject(defaultSubject);
+
+ if (log.isDebugEnabled()) log.debug("<init>");
}
public void receive_request(ServerRequestInfo ri) {
@@ -103,28 +105,37 @@
Subject identity = null;
long contextId = 0;
+ if (log.isDebugEnabled()) log.debug("receive_request(" +
ri.operation() + " [" + new String(ri.object_id()) + "] ");
try {
ServerPolicy serverPolicy = (ServerPolicy)
ri.get_server_policy(ServerPolicyFactory.POLICY_TYPE);
if (serverPolicy == null) return;
TSSConfig tssPolicy = serverPolicy.getConfig();
if (tssPolicy == null) return;
+ if (log.isDebugEnabled()) log.debug("Found server policy");
+
ServiceContext serviceContext =
ri.get_request_service_context(SecurityAttributeService.value);
if (serviceContext == null) return;
+ if (log.isDebugEnabled()) log.debug("Found service context");
+
Any any =
Util.getCodec().decode_value(serviceContext.context_data,
SASContextBodyHelper.type());
SASContextBody contextBody = SASContextBodyHelper.extract(any);
short msgType = contextBody.discriminator();
switch (msgType) {
case MTEstablishContext.value:
+ if (log.isDebugEnabled()) log.debug("
EstablishContext");
+
contextId =
contextBody.establish_msg().client_context_id;
identity =
tssPolicy.check(SSLSessionManager.getSSLSession(ri.request_id()),
contextBody.establish_msg());
- ContextManager.registerSubject(identity);
-
- SASReplyManager.setSASReply(ri.request_id(),
generateContextEstablished(identity, contextId, false));
+ if (identity != null) {
+ ContextManager.registerSubject(identity);
+ } else {
+ identity = defaultSubject;
+ }
break;
@@ -143,8 +154,10 @@
throw new SASNoContextException();
}
} catch (BAD_PARAM e) {
+ if (log.isDebugEnabled()) log.debug("No security service context
found");
identity = defaultSubject;
} catch (INV_POLICY e) {
+ if (log.isDebugEnabled()) log.debug("INV_POLICY");
identity = defaultSubject;
} catch (TypeMismatch tm) {
log.error("TypeMismatch thrown", tm);
@@ -161,15 +174,18 @@
throw (RuntimeException) e.getCause();
}
- if (identity != null) {
- ContextManager.setCurrentCaller(identity);
- ContextManager.setNextCaller(identity);
+ if (log.isDebugEnabled()) log.debug(" " + identity);
- SubjectManager.setSubject(ri.request_id(), identity);
- }
+ SASReplyManager.setSASReply(ri.request_id(),
generateContextEstablished(identity, contextId, false));
+
+ ContextManager.setCurrentCaller(identity);
+ ContextManager.setNextCaller(identity);
+
+ SubjectManager.setSubject(ri.request_id(), identity);
}
public void receive_request_service_contexts(ServerRequestInfo ri) {
+ if (log.isDebugEnabled())
log.debug("receive_request_service_contexts()");
}
public void send_exception(ServerRequestInfo ri) {
@@ -177,9 +193,12 @@
if (identity != null && identity != defaultSubject)
ContextManager.unregisterSubject(identity);
insertServiceContext(ri);
+
+ if (log.isDebugEnabled()) log.debug("send_exception()");
}
public void send_other(ServerRequestInfo ri) {
+ if (log.isDebugEnabled()) log.debug("send_other()");
}
public void send_reply(ServerRequestInfo ri) {
@@ -187,10 +206,13 @@
if (identity != null && identity != defaultSubject)
ContextManager.unregisterSubject(identity);
insertServiceContext(ri);
+
+ if (log.isDebugEnabled()) log.debug("send_reply()");
}
public void destroy() {
if (defaultSubject != null)
ContextManager.unregisterSubject(defaultSubject);
+ if (log.isDebugEnabled()) log.debug("destroy()");
}
public String name() {