[kepler-users] transfering proxy information between actors.
turuncu at be.itu.edu.tr
turuncu at be.itu.edu.tr
Fri Feb 13 09:27:05 PST 2009
Hi,
I do one more test about the problem. I change the output port type (in
MyProxy actor) from BaseType.STRING to BaseType.OBJECT and i send the
byte[] array (stores credential information) from output port and i also
modify GridFTP to accept BaseType.OBJECT from its input port. After
changing token to byte array in GridFTP,
ObjectToken o = (ObjectToken) input.get(0);
byte[] data = (byte[]) o.getValue();
i use same code for creating credential,
// load credential
ExtendedGSSManager manager = (ExtendedGSSManager)
ExtendedGSSManager.getInstance();
GSSCredential cred = null;
try {
cred = manager.createCredential(
data,
ExtendedGSSCredential.IMPEXP_OPAQUE,
GSSCredential.DEFAULT_LIFETIME,
null,
GSSCredential.INITIATE_AND_ACCEPT);
} catch (GSSException e) {
e.printStackTrace();
//throw new IllegalActionException("MyGramJob: GSS exception.");
}
and it works ! I think the data lost in conversation into
ByteArrayOutputStream and than to string. Anyway, i will create new actor
sets that accept proxy information as in Object type.
Best regards,
Thanks for your helps,
--ufuk
> Hi ufuk,
>
> As far as I know, current GlobusJob actor was implemented long time
> ago and does not support Globus 4.2. Probably also for GridFTP. Sorry
> about the that.
>
> I'm working on new version of these actor. I'll let you know once I
> finish them.
>
> Best wishes
>
> Sincerely yours
>
> Jianwu Wang
> jianwu at sdsc.edu
>
> Scientific Workflow Automation Technologies (SWAT) Laboratory
> San Diego Supercomputer Center
> University of California, San Diego
> San Diego, CA, U.S.A.
>
>
>
> turuncu at be.itu.edu.tr wrote:
>> Hi,
>>
>> I try to transfer proxy information from custom MyProxy actor to GridFTP
>> and GlobusJob actors but it gives error. I done following tests,
>>
>> 1 - I modify GridFTP actor to get proxy information directly from
>> MyProxy
>> file (such as, /tmp/x509up_u501) and it is working successfully. So, it
>> is
>> possible to use MyProxy credential with Kepler grid actors. I just only
>> add "getGSSCredential " method (which is return GSSCredential info) and
>> modify code as follows;
>>
>> //ExtendedGSSManager manager = (ExtendedGSSManager)
>> ExtendedGSSManager
>> // .getInstance();
>> //_proxy = manager.createCredential((token.toString()).getBytes(),
>> // ExtendedGSSCredential.IMPEXP_OPAQUE,
>> // GSSCredential.DEFAULT_LIFETIME, null, // use default
>> // // mechanism - GSI
>> // GSSCredential.INITIATE_AND_ACCEPT);
>> _proxy = getGSSCredential("/tmp/x509up_u501");
>>
>> 2 - I also test to modify output of custom MyProxy actor to send proxy
>> info as String data type which is compatible with current version of
>> GridFTP and GlobusJob actors (i don't want to modify current Kepler grid
>> actors),
>>
>> // read myproxy file
>> File inFile = new File(filename);
>> byte [] data = new byte[(int)inFile.length()];
>>
>> FileInputStream inStream = null;
>> try {
>> inStream = new FileInputStream(inFile);
>> inStream.read(data);
>> inStream.close();
>> } catch (FileNotFoundException e) {
>> e.printStackTrace();
>> } catch (IOException e) {
>> e.printStackTrace();
>> }
>>
>> ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
>> try {
>> byteStream.write(data);
>> } catch (IOException e) {
>> e.printStackTrace();
>> }
>> output.send(0, new StringToken(byteStream.toString()));
>>
>> but GridFTP actor gives following error,
>>
>> ....
>> Caused by: ptolemy.kernel.util.IllegalActionException: GridFTP transfer
>> failed because of: GSSException: Defective credential detected [Caused
>> by:
>> Failed to load credentials. [Caused by: PEM footer missing]]
>> at org.nmiworkflow.GridFTP.fire(GridFTP.java:212)
>> ....
>>
>> It must be work but the information lost between conversion and
>> transfer.
>> I also try to add encoding information in both side to ensure that
>> problem
>> is not related with encoding problem and the result is same.
>>
>> 3 - I also try to generate proxy info with ProxyInitTool but the result
>> is
>> same.
>>
>> So, i will use the newer version of cog-jglobus api, jce-jdk and cryptix
>> in my new suite. Is problem realted with that. If i use the same version
>> with Kepler grid actors i get,
>>
>> ptolemy.kernel.util.IllegalActionException: in
>> .01-teragrid-myproxy.manager
>> Because:
>> org.bouncycastle.jce.PKCS10CertificationRequest.<init>(Ljava/lang/String;Lorg/bouncycastle/asn1/x509/X509Name;Ljava/security/PublicKey;Lorg/bouncycastle/asn1/DERConstructedSet;Ljava/security/PrivateKey;Ljava/lang/String;)V
>> at ptolemy.actor.Manager.execute(Manager.java:465)
>> at ptolemy.actor.Manager.run(Manager.java:1147)
>> at ptolemy.actor.Manager$3.run(Manager.java:1188)
>> Caused by: java.lang.NoSuchMethodError:
>> org.bouncycastle.jce.PKCS10CertificationRequest.<init>(Ljava/lang/String;Lorg/bouncycastle/asn1/x509/X509Name;Ljava/security/PublicKey;Lorg/bouncycastle/asn1/DERConstructedSet;Ljava/security/PrivateKey;Ljava/lang/String;)V
>> at
>> org.earth.actors.globus.MyProxyLogon.getCredentials(MyProxyLogon.java:621)
>> at org.earth.actors.globus.GlobusMyProxy.fire(GlobusMyProxy.java:196)
>> at ptolemy.actor.AtomicActor.iterate(AtomicActor.java:434)
>> at
>> ptolemy.actor.sched.StaticSchedulingDirector.fire(StaticSchedulingDirector.java:188)
>> at ptolemy.actor.CompositeActor.fire(CompositeActor.java:417)
>> at ptolemy.actor.Manager.iterate(Manager.java:725)
>> at ptolemy.actor.Manager.execute(Manager.java:349)
>> ... 2 more
>>
>> error messages which is related with incompatibilities of the libraries.
>> Any comments will be helpful to solve the problem.
>>
>> Thanks,
>>
>> --ufuk
>>
>>
>>
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
More information about the Kepler-users
mailing list