perfsonar-dev - perfsonar: r2947 - branches/new-structure/trunk/perfsonar_base/src/main/java/org/perfsonar/client/testHarness
Subject: perfsonar development work
List archive
perfsonar: r2947 - branches/new-structure/trunk/perfsonar_base/src/main/java/org/perfsonar/client/testHarness
Chronological Thread
- From:
- To:
- Subject: perfsonar: r2947 - branches/new-structure/trunk/perfsonar_base/src/main/java/org/perfsonar/client/testHarness
- Date: Mon, 15 Oct 2007 05:20:37 -0400
Author: rodriguez
Date: 2007-10-15 05:20:37 -0400 (Mon, 15 Oct 2007)
New Revision: 2947
Modified:
branches/new-structure/trunk/perfsonar_base/src/main/java/org/perfsonar/client/testHarness/UbCMDSTest.java
branches/new-structure/trunk/perfsonar_base/src/main/java/org/perfsonar/client/testHarness/UbCSaslTest.java
Log:
Better examples of UbC profile
Modified:
branches/new-structure/trunk/perfsonar_base/src/main/java/org/perfsonar/client/testHarness/UbCMDSTest.java
===================================================================
---
branches/new-structure/trunk/perfsonar_base/src/main/java/org/perfsonar/client/testHarness/UbCMDSTest.java
2007-10-15 09:19:23 UTC (rev 2946)
+++
branches/new-structure/trunk/perfsonar_base/src/main/java/org/perfsonar/client/testHarness/UbCMDSTest.java
2007-10-15 09:20:37 UTC (rev 2947)
@@ -12,7 +12,11 @@
public void testMDS(String[] args) {
try {
- List<BEMetaData>
bes=EduGAINMetadataService.getOrganizationList("http://mds.rediris.es:8080");
+ String defaultMDS="http://mds.rediris.es:8080";
+ if (args.length==1) {
+ defaultMDS=args[0];
+ }
+ List<BEMetaData>
bes=EduGAINMetadataService.getOrganizationList(defaultMDS);
for (int i=0; i<bes.size(); i++) {
BEMetaData be=bes.get(i);
System.out.println("Bridging Element
"+be.getComponentID());
@@ -22,7 +26,6 @@
}
}
} catch (PerfSONARException e) {
- e.printStackTrace();
}
}
Modified:
branches/new-structure/trunk/perfsonar_base/src/main/java/org/perfsonar/client/testHarness/UbCSaslTest.java
===================================================================
---
branches/new-structure/trunk/perfsonar_base/src/main/java/org/perfsonar/client/testHarness/UbCSaslTest.java
2007-10-15 09:19:23 UTC (rev 2946)
+++
branches/new-structure/trunk/perfsonar_base/src/main/java/org/perfsonar/client/testHarness/UbCSaslTest.java
2007-10-15 09:20:37 UTC (rev 2947)
@@ -1,16 +1,48 @@
package org.perfsonar.client.testHarness;
+import java.io.StringWriter;
+import java.net.URL;
+import java.security.Key;
import java.security.KeyPair;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.Provider;
+import java.security.cert.Certificate;
import java.security.cert.CertificateParsingException;
import java.security.cert.X509Certificate;
+import java.text.DateFormat;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
+import java.util.Vector;
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.axis.client.Call;
+import org.apache.axis.client.Service;
+import org.apache.axis.message.SOAPBodyElement;
+import org.apache.axis.message.SOAPEnvelope;
+import org.apache.ws.security.SOAPConstants;
+import org.apache.ws.security.WSConstants;
+import org.apache.ws.security.WSEncryptionPart;
+import org.apache.ws.security.components.crypto.Crypto;
+import org.apache.ws.security.message.WSSecHeader;
+import org.apache.ws.security.message.WSSecSignature;
+import org.apache.ws.security.util.WSSecurityUtil;
+import org.apache.xml.serialize.OutputFormat;
+import org.apache.xml.serialize.XMLSerializer;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.ggf.ns.nmwg.base.v2_0.Message;
+import org.perfsonar.base.auxiliary.components.authn.DynamicCrypto;
+import org.perfsonar.base.auxiliary.components.authn.SOAPUtil;
import org.perfsonar.base.exceptions.PerfSONARException;
import org.perfsonar.client.base.authn.saslca.SASLCAClient;
import org.perfsonar.client.base.authn.saslca.SASLCAClientConfiguration;
import org.perfsonar.client.base.authn.saslca.UserID;
+import
org.perfsonar.client.base.requests.authService.AuthNEERequestGenerator;
+import org.w3c.dom.Document;
public class UbCSaslTest {
private UserID userID;
@@ -28,8 +60,10 @@
String tsType = null;
String username = null;
String userpassword = null;
+ String oper = null;
+ String endPoint = null;
- if (args.length == 7) {
+ if (args.length == 9) {
saslCAServer = args[0];
saslCAPort = args[1];
tsFile = args[2];
@@ -37,9 +71,11 @@
tsType = args[4];
username = args[5];
userpassword = args[6];
+ oper = args[7];
+ endPoint = args[8];
} else {
System.out.println("Error: Wrong number (" +
args.length
- + ") of parameters!!!");
+ + "!= 9) of parameters!!!");
return;
}
System.out.println("SASL CA Server: " + saslCAServer);
@@ -49,6 +85,8 @@
System.out.println("TrustStore Type: " + tsType);
System.out.println("Username: " + username);
System.out.println("Password: " + userpassword);
+ System.out.println("Operation: " + oper);
+ System.out.println("End Point: " + endPoint);
System.setProperty("javax.net.ssl.trustStore",
tsFile);
System.setProperty("javax.net.ssl.trustStorePassword", tsPassword);
@@ -59,18 +97,12 @@
client = new SASLCAClient(userID, clientConfig);
KeyPair keyPair = client.generateKeyPair();
- X509Certificate certificate =
client.getCertficate(keyPair);
- Collection<List<?>> collection = certificate
- .getSubjectAlternativeNames();
- Iterator<List<?>> it = collection.iterator();
- while (it.hasNext()) {
- List<?> list = it.next();
- for (int i = 0; i < list.size(); i++) {
- if
(list.get(i).toString().startsWith("http")) {
-
System.out.println(list.get(i).toString());
- }
- }
+ if (oper.equals("get")) {
+ checkCertificate(keyPair);
}
+ else if (oper.equals("authn")) {
+ sendAuthNEERequest(keyPair,endPoint);
+ }
} catch (PerfSONARException e) {
e.printStackTrace();
@@ -78,7 +110,131 @@
e.printStackTrace();
}
}
+
+ public void checkCertificate(KeyPair keyPair) throws
CertificateParsingException, PerfSONARException {
+ X509Certificate certificate = client.getCertficate(keyPair);
+ System.out.println("Issuer DN:
"+certificate.getIssuerDN().toString());
+ System.out.println("Subject DN:
"+certificate.getSubjectDN().toString());
+ Collection<List<?>> collection = certificate
+ .getSubjectAlternativeNames();
+ Iterator<List<?>> it = collection.iterator();
+ while (it.hasNext()) {
+ List<?> list = it.next();
+ for (int i = 0; i < list.size(); i++) {
+ if
(list.get(i).toString().startsWith("http")) {
+ System.out.println("Subject
Alternative Name:" +list.get(i).toString());
+ }
+ }
+ }
+ System.out.println("Valid from:
"+DateFormat.getInstance().format(certificate.getNotBefore()));
+ System.out.println("Valid until:
"+DateFormat.getInstance().format(certificate.getNotAfter()));
+ }
+
+ public void sendAuthNEERequest(KeyPair keyPair,String endPoint)
throws PerfSONARException {
+ try {
+ // prepare to call - set service elements
+ Service service = new Service();
+ Call call = (Call)service.createCall();
+ call.setTargetEndpointAddress(new URL(endPoint));
+ call.setOperationName(new
QName("http://soapinterop.org/","submit"));
+ // read the request into a org.w3c.DOM.Document
+ DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
+ factory.setNamespaceAware(true);
+
+ AuthNEERequestGenerator rg=new AuthNEERequestGenerator();
+ Message rm=rg.generateRequestMessage();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ Document request = builder.newDocument();
+ request = rm.getDOM(request);
+
+ // build a SOAPBodyElement from the document
+ SOAPBodyElement requestMessage =
+ new SOAPBodyElement(request.getDocumentElement());
+ SOAPEnvelope envelope = new SOAPEnvelope();
+ envelope.addBodyElement(requestMessage);
+
+ // add the security provider
+ BouncyCastleProvider bcp = new BouncyCastleProvider();
+ java.security.Security.addProvider((Provider)bcp);
+
+ Crypto crypto = new DynamicCrypto();
+ KeyStore ks=crypto.getKeyStore();
+
+ PrivateKey privateKey=keyPair.getPrivate();
+ X509Certificate cert = client.getCertficate(keyPair);
+ ks.setKeyEntry("xmlsec", (Key)privateKey,
"security".toCharArray(), new Certificate[]{(Certificate)cert});
+ WSSecSignature sec509 = new WSSecSignature();
+ sec509.setUserInfo("xmlsec", "security");
+ SOAPConstants soapConstants =
WSSecurityUtil.getSOAPConstants(envelope.getAsDOM());
+ Vector<WSEncryptionPart> parts = new
Vector<WSEncryptionPart>(1,1);
+
+ // Set up to use STRTransorm to sign the signature token
+ WSEncryptionPart encP =
+ new WSEncryptionPart(
+ "STRTransform",
+ soapConstants.getEnvelopeURI(),
+ "Content");
+ parts.add(encP);
+
+ sec509.setParts(parts);
+ sec509.setKeyIdentifierType(WSConstants.BST_DIRECT_REFERENCE);
+
+ Document doc = envelope.getAsDocument();
+ WSSecHeader secHeader = new WSSecHeader();
+ secHeader.setActor("test");
+ secHeader.insertSecurityHeader(doc);
+
+ // Signing the message
+ Document signedDoc = sec509.build(doc, crypto, secHeader);
+
+ org.apache.axis.Message signedMsg = (org.apache.axis.Message)
SOAPUtil.toSOAPMessage(signedDoc);
+ envelope = signedMsg.getSOAPEnvelope();
+
+ // get a timestamp.
+ double startTime =
+ new Long(System.currentTimeMillis()).doubleValue();
+
+ // call on the end point
+ Object resultObject = call.invoke(envelope);
+
+ // get another timestamp
+ double endTime =
+ new Long(System.currentTimeMillis()).doubleValue();
+
+ SOAPEnvelope envelopeResult;
+ SOAPBodyElement resultSBE;
+ Document result = null;
+
+ envelopeResult= (SOAPEnvelope)resultObject;
+ resultSBE= envelopeResult.getFirstBody();
+
+ // change it to document - here is where validity
+ // can be checked..
+ result = resultSBE.getAsDocument();
+
+ // output it to a string
+ StringWriter outWriter = new StringWriter();
+
+ OutputFormat format = new OutputFormat( result );
+ format.setIndent(4);
+ format.setIndenting(true);
+ format.setLineSeparator("\n");
+
+ XMLSerializer serial = new XMLSerializer(outWriter,
format );
+ serial.asDOMSerializer();
+ serial.serialize( result.getDocumentElement() );
+
+ outWriter.close();
+
+ System.out.println("---- Response message");
+ System.out.println(outWriter.toString());
+ System.out.println("---------------------");
+ } catch (Exception e) {
+ throw new PerfSONARException(e.getMessage());
+ }
+ }
+
public static void main(String[] args) {
UbCSaslTest ubcSasl = new UbCSaslTest();
ubcSasl.test(args);
- perfsonar: r2947 - branches/new-structure/trunk/perfsonar_base/src/main/java/org/perfsonar/client/testHarness, svnlog, 10/15/2007
Archive powered by MHonArc 2.6.16.