You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2005/02/18 01:15:50 UTC
svn commit: r154217 -
geronimo/trunk/modules/axis/src/java/org/apache/geronimo/axis/client/ServiceEndpointMethodInterceptor.java
Author: djencks
Date: Thu Feb 17 16:15:49 2005
New Revision: 154217
URL: http://svn.apache.org/viewcvs?view=rev&rev=154217
Log:
speculative implementation of propagating auth info to service ref
Modified:
geronimo/trunk/modules/axis/src/java/org/apache/geronimo/axis/client/ServiceEndpointMethodInterceptor.java
Modified: geronimo/trunk/modules/axis/src/java/org/apache/geronimo/axis/client/ServiceEndpointMethodInterceptor.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis/src/java/org/apache/geronimo/axis/client/ServiceEndpointMethodInterceptor.java?view=diff&r1=154216&r2=154217
==============================================================================
--- geronimo/trunk/modules/axis/src/java/org/apache/geronimo/axis/client/ServiceEndpointMethodInterceptor.java (original)
+++ geronimo/trunk/modules/axis/src/java/org/apache/geronimo/axis/client/ServiceEndpointMethodInterceptor.java Thu Feb 17 16:15:49 2005
@@ -18,10 +18,15 @@
import java.lang.reflect.Method;
import java.util.Arrays;
+import java.util.Set;
+
+import javax.security.auth.Subject;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import org.apache.axis.client.Call;
+import org.apache.geronimo.security.ContextManager;
+import org.apache.geronimo.security.jaas.UsernamePasswordCredential;
/**
* @version $Rev: $ $Date: $
@@ -49,6 +54,18 @@
operationInfo.prepareCall(call);
stub.setUpCall(call);
+ Subject subject = ContextManager.getNextCaller();
+ if (subject == null) {
+ //is this an error?
+ } else {
+ Set creds = subject.getPrivateCredentials(UsernamePasswordCredential.class);
+ if (creds.size() != 1) {
+ throw new SecurityException("Non-unique UsernamePasswordCredential, count: " + creds.size());
+ }
+ UsernamePasswordCredential usernamePasswordCredential = (UsernamePasswordCredential) creds.iterator().next();
+ call.setUsername(usernamePasswordCredential.getUsername());
+ call.setPassword(new String(usernamePasswordCredential.getPassword()));
+ }
java.lang.Object response = call.invoke(objects);
if (response instanceof java.rmi.RemoteException) {