GlobusRun.java has an example of using HostOrSelf, as I believe I mentioned in an earlier mail. However, I agree with Johan's assessment of using the Delegation service. The WS-GRAM service has a lot of code dealing with delegated credentials from the user, as it uses them for both staging and job delegation. See, for instance, ws- gram/service/java/source/src/org/globus/exec/service/utils/ DelegatedCredential.java

Charles

On Dec 4, 2007, at 6:45 AM, Zeeshan Ali Shah wrote:

Hi Johan,
I used the same example code from the book , (Physical Service and Math
Service) and it specified the same mechanism which i have written.

Can you please send me some pointers/guide the way you mentioned ,
Coding example or some text

thanks

Zeeshan

Johan Tordsson wrote:

Dear Zeeshan,

You probably neither want to change the ownership of the service
nor run the service as caller identity, as this leads to scenarios like
the one you described below.

Instead, delegate credentials to the service from the user. Next, let the
service (still running as user 'globus') fetch the delegated
credentials. These credentials can now be used for invoking other
services (set them on the stub), or be used e.g., to specify
ownership of a certain WS-Resource.

Best regards,

Johan


On Tue, 4 Dec 2007, Zeeshan Ali Shah wrote:

Hi,
I am using GT Dev 4.1.3 release now and used the delegation mechanisms as stated in the Globus book and online tutorial with modification of
security-config.xml schema.

I edited two parts of service first its security descriptor which is now
<methodAuthentication>
<method name="CreateActivity">
<run-as value="caller"/>
</method>
</methodAuthentication>

<auth-method>
<GSISecureConversation/>
<GSISecureMessage/>
<GSISecureTransport/>
</auth-method>
<authzChain> <pdps> <interceptor name="none"/> </pdps> </authzChain>

and on server side under the method createActivity i wrote
try{
SecurityManager.getManager().setServiceOwnerFromContext();
..............

On client side i am using HostAuthorization, in initial invocation it works fine as when the sever start the service is using the host cert
right ?

Now Suppose there are two user (A,B)
Question 1: In first invocation the service will run as the 'User A' , what happen when the 'User B' try to invokes the same service ? Client
will give an error since now the service is running as of 'User A' :
which means that HostAuthorization and SelfAuthorization will not work
for 'User B' . any suggestion please
Question 2: Is it possible to switch back to initial service context
(which was host based when server started) after invocation of the
delegated method ?


regards

Zeeshan



Zeeshan Ali Shah wrote:
Hi ,
HostOrSelfAuthorization does not have the .getInstance() so i used the
normal constructor as

HostOrSelfAuthorization hs = new HostOrSelfAuthorization();

((Stub) besFactory)._setProperty(Constants.GSI_SEC_CONV,
Constants.SIGNATURE);
((Stub) besFactory)._setProperty(GSIConstants.GSI_MODE,
GSIConstants.GSI_MODE_FULL_DELEG);
((Stub) besFactory)._setProperty(Constants.AUTHORIZATION,
hs); // see here

but i am getting this error
Failure unspecified at GSS-API level (Mechanism level: [JGLOBUS-59]
Cannot request delegation without authorization (target name null))

any suggestion ?

Zeeshan

Charles Bacon wrote:

Questions : So, either I should not have the service run as the
caller (If Yes than how Delegation will works ??) , or have the
client expect its own identity after it has delegated. (How to switch
back ?). regards Zeeshan

The client can call another setProperty call to switch over to Self
authorization, the exact same way your quoted code goes to host
authorization in the first place.

Or, as we also discussed, you can use the HostOrSelfAuthorization the
whole time.


Charles





---------------------------------
Johan Tordsson
Department of Computing Science
Umea University
SE-901 87 Umea
tordsson_at_cs.umu.se



Reply via email to