Skip to Content.
Sympa Menu

perfsonar-dev - perfsonar: r4015 - in branches/perfsonarui/src/org/perfsonar/perfsonarui: aa test/aa test/ls ui/panels

Subject: perfsonar development work

List archive

perfsonar: r4015 - in branches/perfsonarui/src/org/perfsonar/perfsonarui: aa test/aa test/ls ui/panels


Chronological Thread 
  • From:
  • To:
  • Subject: perfsonar: r4015 - in branches/perfsonarui/src/org/perfsonar/perfsonarui: aa test/aa test/ls ui/panels
  • Date: Mon, 16 Jun 2008 14:07:18 -0400

Author: nina
Date: 2008-06-16 14:07:18 -0400 (Mon, 16 Jun 2008)
New Revision: 4015

Added:
branches/perfsonarui/src/org/perfsonar/perfsonarui/aa/AACertificate.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/aa/AASupport.java

branches/perfsonarui/src/org/perfsonar/perfsonarui/test/aa/AASupportTest.java
Modified:

branches/perfsonarui/src/org/perfsonar/perfsonarui/aa/AAPerfsonarRequest.java

branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/ServiceQuery.java

branches/perfsonarui/src/org/perfsonar/perfsonarui/ui/panels/RequestOptionsPanel.java
Log:
A singleton for X509 certificate, in order to ask for user credentials only
when certificate is not yet retrieved, or became invalid.

Added:
branches/perfsonarui/src/org/perfsonar/perfsonarui/aa/AACertificate.java

Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/aa/AAPerfsonarRequest.java
===================================================================
---
branches/perfsonarui/src/org/perfsonar/perfsonarui/aa/AAPerfsonarRequest.java
2008-06-16 17:49:59 UTC (rev 4014)
+++
branches/perfsonarui/src/org/perfsonar/perfsonarui/aa/AAPerfsonarRequest.java
2008-06-16 18:07:18 UTC (rev 4015)
@@ -1,6 +1,5 @@
package org.perfsonar.perfsonarui.aa;

-import java.security.KeyPair;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
@@ -51,56 +50,29 @@
private static final String
elementOrganizationDisplayName="md:OrganizationDisplayName";
private static final String
elementOrganizationURL="md:OrganizationURL";
*/
-
- protected String mds_url=null;
protected boolean aa_enabled = false;
- protected ICredentialsListener credentialsListener = null;
+
public AAPerfsonarRequest() {
super();
setAAEnabled(true);
}
@Override
public SOAPEnvelope prepareEnvelope(SOAPBodyElement soapbodyelement)
throws PSException {
- MAEndpoint mds = new
MAEndpoint("MDS,"+mds_url+",,,,mds,mds");
+
try {
if (!isAAEnabled()) return null;
-
- if (credentialsListener == null) {
- credentialsListener = new
SwingCredentialListener();
- }
-
-
- List<CAInterface> idproviders =
queryMDS(mds.getEndpoint());
- if (idproviders.size() == 0) throw new
PSException(mds,"No CA online");
-
-
- CAInterface cai =
credentialsListener.selectIdentityProvider(idproviders, "", "");
- if (cai != null) {
-
- int p = cai.getContactURL().lastIndexOf(':');
- String saslhost =
cai.getContactURL().substring(0,p);
- int saslport;
- try {
- saslport =
Integer.parseInt(cai.getContactURL().substring(p+1,cai.getContactURL().length()));
- } catch (NumberFormatException x) {
- throw new PSException(mds,x);
- }
-
System.out.println("Querying\t"+saslhost+":"+saslport);
- SASLCAClient client =
querySASL(credentialsListener.getUserName(),
-
credentialsListener.getPassword(), saslhost, saslport);
- //The method generateKeyPair() of the class
SASLCAClient returns a new pair of private and public keys.
- KeyPair keyPair = client.generateKeyPair();
-
- //The method getCertificate(KeyPair keys) of
the class SASLCAClient makes a connection to the SASL CA server and get the
signed X.509 certificate.
- X509Certificate certificate =
client.getCertficate(keyPair);
-
+ else {
AuthNX509Data
authnData=AuthNDataFactory.getDefaultAuthNX509Data();
- Object
reqRaw=authnData.addX509STInMessage(requestMessage, keyPair.getPrivate(),
certificate);
+ AACertificate certificate =
AASupport.getInstance().getCertificate();
+ Object
reqRaw=authnData.addX509STInMessage(requestMessage,
+
certificate.getKeyPair().getPrivate(),
+ certificate.getX509());
SOAPEnvelope envelope=(SOAPEnvelope)reqRaw;

return envelope;
- } else return null;
+ }
} catch (Exception x) {
+ MAEndpoint mds = new
MAEndpoint("MDS,"+AASupport.getInstance().getMds_url()+",,,,mds,mds");
throw new PSException(mds,x);
}
}
@@ -177,10 +149,10 @@
}
*/
public ICredentialsListener getCredentialsListener() {
- return credentialsListener;
+ return AASupport.getInstance().getCredentialsListener();
}
public void setCredentialsListener(ICredentialsListener
credentialsListener) {
- this.credentialsListener = credentialsListener;
+
AASupport.getInstance().setCredentialsListener(credentialsListener);
}
public synchronized boolean isAAEnabled() {
return aa_enabled;
@@ -189,10 +161,10 @@
this.aa_enabled = enable;
}
public String getMDS() {
- return mds_url;
+ return AASupport.getInstance().getMds_url();
}
public void setMDS(String url) {
- mds_url = url;
+ AASupport.getInstance().setMds_url(url);

}
/*

Added: branches/perfsonarui/src/org/perfsonar/perfsonarui/aa/AASupport.java

Added:
branches/perfsonarui/src/org/perfsonar/perfsonarui/test/aa/AASupportTest.java

Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/ServiceQuery.java
===================================================================
---
branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/ServiceQuery.java
2008-06-16 17:49:59 UTC (rev 4014)
+++
branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/ServiceQuery.java
2008-06-16 18:07:18 UTC (rev 4015)
@@ -44,6 +44,7 @@
try {
xpathResult = XMLUtils.getDocumentBuilder().parse(new
InputSource(new StringReader("<services>"+text+"</services>")));
} catch (Exception e) {
+ e.printStackTrace();
throw new UnmarshalException("Couldn't create dom
from xpath result");
}
return unMarshallServices(xpathResult);

Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ui/panels/RequestOptionsPanel.java
===================================================================
---
branches/perfsonarui/src/org/perfsonar/perfsonarui/ui/panels/RequestOptionsPanel.java
2008-06-16 17:49:59 UTC (rev 4014)
+++
branches/perfsonarui/src/org/perfsonar/perfsonarui/ui/panels/RequestOptionsPanel.java
2008-06-16 18:07:18 UTC (rev 4015)
@@ -25,18 +25,26 @@
package org.perfsonar.perfsonarui.ui.panels;

import java.awt.Dimension;
+import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import java.security.cert.X509Certificate;
import java.text.NumberFormat;

import javax.swing.AbstractAction;
import javax.swing.Action;
+import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JSpinner;
+import javax.swing.JTextArea;
+import javax.swing.JTextPane;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent;
@@ -44,6 +52,8 @@

import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.GroupLayout.SequentialGroup;
+import org.perfsonar.perfsonarui.PSException;
+import org.perfsonar.perfsonarui.aa.AASupport;
import org.perfsonar.perfsonarui.plugins.IPerfsonarTab;

public class RequestOptionsPanel extends PSPanel {
@@ -57,8 +67,10 @@
protected JCheckBox aa_enable;
protected JFormattedTextField mds_url;
protected IPerfsonarTab psModel;
+ protected AbstractAction view_certificate;
+ protected AbstractAction clear_certificate;
+ protected JLabel certLabel;

-
public RequestOptionsPanel(IPerfsonarTab psModel) {
super(psModel);

@@ -74,7 +86,49 @@
JLabel tLabel = new JLabel("Request timeout, ms");
JLabel rLabel = new JLabel("Max number of interfaces per
request");
JLabel mdsLabel = new JLabel("eduGAIN Metadata service");
+ certLabel = new JLabel("Certificate ");

+ final JPanel p = new JPanel(new FlowLayout());
+
+
+ view_certificate = new AbstractAction("View") {
+ public void actionPerformed(ActionEvent e) {
+ try {
+ JTextPane t = new JTextPane();
+
t.setText(AASupport.getInstance().getCertificate().toString());
+
+ t.setPreferredSize(new
Dimension(300,300));
+ JOptionPane.showMessageDialog(p,
+ new
JScrollPane(t,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED),
+ "Certificate",
+
JOptionPane.INFORMATION_MESSAGE,
+ null
+
+
+ );
+ } catch (Exception x) {
+
JOptionPane.showMessageDialog(p,x.getMessage());
+ }
+ }
+ };
+ view_certificate.putValue(Action.LONG_DESCRIPTION, "View
certificate");
+
+
+
+ clear_certificate = new AbstractAction("Clear") {
+ public void actionPerformed(ActionEvent e) {
+ AASupport.getInstance().clear();
+ updateCertUI();
+ }
+ };
+ clear_certificate.putValue(Action.LONG_DESCRIPTION, "Clears
the certificate. You will be asked for credentials upon a subsequent
request.");
+ updateCertUI();
+ JButton b_view_certificate = new JButton(view_certificate);
+ JButton b_clear_certificate = new JButton(clear_certificate);
+
+ p.add(b_view_certificate);
+ p.add(b_clear_certificate);
+
JSeparator separator1 = new JSeparator();
JSeparator separator2 = new JSeparator();

@@ -94,12 +148,14 @@
.add(separator1)
.add(aa_enable)
.add(mdsLabel)
+ .add(certLabel)
);
sg.add(glayout.createParallelGroup(GroupLayout.LEADING)
.add(field_timeout)
.add(field_maxItems)
.add(separator2)
.add(mds_url)
+ .add(p)
);

glayout.setHorizontalGroup(sg);
@@ -123,7 +179,11 @@
);
sg1.add(glayout.createParallelGroup(GroupLayout.BASELINE)
.add(mdsLabel)
- .add(mds_url));
+ .add(mds_url));
+
+ sg1.add(glayout.createParallelGroup(GroupLayout.BASELINE)
+ .add(certLabel)
+ .add(p));
glayout.setVerticalGroup(sg1);


@@ -200,7 +260,45 @@

}

+ protected void updateCertUI() {
+ try {
+ certLabel.setToolTipText("");
+ if (AASupport.getInstance().isValid()) {
+ view_certificate.setEnabled(true);
+ X509Certificate x =
AASupport.getInstance().getCertificate().getX509();
+ certLabel.setText("Certificate [Valid not
after " +x.getNotAfter() + "]");
+
+ StringBuffer b = new StringBuffer();
+ b.append("<html>Valid not before ");
+ b.append(x.getNotBefore() );
+
+ b.append("<p>Valid not after ");
+ b.append(x.getNotAfter() );
+ b.append("<p>Serial number ");
+ b.append(x.getSerialNumber().toString());
+ b.append("</html>");
+ certLabel.setToolTipText(b.toString());
+
+ } else {
+ view_certificate.setEnabled(false);
+ certLabel.setText("Certificate [Invalid]");
+ }
+ if (AASupport.getInstance().isNull()) {
+ certLabel.setText("Certificate [NA]");
+ clear_certificate.setEnabled(false);
+ view_certificate.setEnabled(false);
+
+ } else {
+ view_certificate.setEnabled(true);
+ clear_certificate.setEnabled(true);

+ }
+ } catch (PSException x) {
+ view_certificate.setEnabled(false);
+ clear_certificate.setEnabled(false);
+ certLabel.setText("Certificate "+x.getMessage());
+ }
+ }
public IPerfsonarTab getPsModel() {
return psModel;
}



  • perfsonar: r4015 - in branches/perfsonarui/src/org/perfsonar/perfsonarui: aa test/aa test/ls ui/panels, svnlog, 06/16/2008

Archive powered by MHonArc 2.6.16.

Top of Page