/*********************************************************************** * * This file is part of WebScarab, an Open Web Application Security * Project utility. For details, please see http://www.owasp.org/ * * Copyright (c) 2011 FedICT * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ package org.owasp.webscarab.plugin.openid.swing; import java.awt.event.ActionEvent; import java.awt.event.ItemEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.Action; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.TableModel; import org.openid4java.association.Association; import org.openid4java.association.AssociationSessionType; import org.owasp.webscarab.model.ConversationID; import org.owasp.webscarab.model.HttpUrl; import org.owasp.webscarab.plugin.openid.OpenId; import org.owasp.webscarab.plugin.openid.OpenIdModel; import org.owasp.webscarab.plugin.openid.OpenIdProxy; import org.owasp.webscarab.plugin.openid.PAPEResponse; import org.owasp.webscarab.ui.swing.ColumnWidthTracker; import org.owasp.webscarab.ui.swing.ConversationTableModel; import org.owasp.webscarab.ui.swing.ShowConversationAction; import org.owasp.webscarab.ui.swing.SwingPluginUI; import org.owasp.webscarab.util.swing.ColumnDataModel; import org.owasp.webscarab.util.swing.SwingWorker; import org.owasp.webscarab.util.swing.TableSorter; /** * * @author Frank Cornelis */ public class OpenIdPanel extends JPanel implements SwingPluginUI { private final OpenId openId; private final OpenIdModel openIdModel; private final ShowConversationAction showConversationAction; private final ParametersTableModel parametersTableModel; private final AXFetchRequestTableModel axFetchRequestTableModel; private final AXFetchResponseTableModel axFetchResponseTableModel; private final AssociationSessionComboBoxModel associationSessionComboBoxModel; private final AssociationTableModel associationTableModel; private final AssociationOPUrlAction associationOPUrlAction; public OpenIdPanel(OpenId openId) { this.openId = openId; this.openIdModel = openId.getModel(); initComponents(); this.showConversationAction = new ShowConversationAction(this.openIdModel.getOpenIDConversationModel()); this.openIdPopupMenu.add(new JMenuItem(this.showConversationAction)); this.associationOPUrlAction = new AssociationOPUrlAction(this.opUrlTextField); this.openIdPopupMenu.add(this.associationOPUrlAction); ConversationTableModel openIdTableModel = new ConversationTableModel( this.openIdModel.getOpenIDConversationModel()); openIdTableModel.addColumn(new ColumnDataModel<ConversationID>("OpenID Type", String.class) { @Override public Object getValue(ConversationID key) { return OpenIdPanel.this.openIdModel.getReadableOpenIDMessageType(key); } }); ColumnWidthTracker.getTracker("OpenIDTable").addTable(this.openIdTable); TableSorter sorterOpenIdTableModel = new TableSorter(openIdTableModel); this.openIdTable.setModel(sorterOpenIdTableModel); addTableListeners(); this.parametersTableModel = new ParametersTableModel(); this.parametersTable.setModel(this.parametersTableModel); this.axFetchRequestTableModel = new AXFetchRequestTableModel(); this.axFetchRequestTable.setModel(this.axFetchRequestTableModel); this.axFetchResponseTableModel = new AXFetchResponseTableModel(); this.axFetchResponseTable.setModel(this.axFetchResponseTableModel); this.associationSessionComboBoxModel = new AssociationSessionComboBoxModel(); this.associationSessionComboBox.setModel(this.associationSessionComboBoxModel); this.associationTableModel = new AssociationTableModel(); this.associationsTable.setModel(this.associationTableModel); } private void addTableListeners() { this.openIdTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting()) { return; } int row = OpenIdPanel.this.openIdTable.getSelectedRow(); TableModel tm = OpenIdPanel.this.openIdTable.getModel(); ConversationID id; if (row > -1) { id = (ConversationID) tm.getValueAt( row, 0); // UGLY hack! FIXME!!!! OpenIdPanel.this.displayOpenID(id); } else { id = null; OpenIdPanel.this.resetDisplay(); } String opUrl = OpenIdPanel.this.openIdModel.getOPUrl(id); OpenIdPanel.this.associationOPUrlAction.putValue("OP-URL", opUrl); OpenIdPanel.this.showConversationAction.putValue("CONVERSATION", id); } }); this.openIdTable.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { maybeShowPopup(e); } @Override public void mouseReleased(MouseEvent e) { maybeShowPopup(e); } private void maybeShowPopup(MouseEvent e) { int row = OpenIdPanel.this.openIdTable.rowAtPoint(e.getPoint()); OpenIdPanel.this.openIdTable.getSelectionModel().setSelectionInterval(row, row); if (e.isPopupTrigger()) { OpenIdPanel.this.openIdPopupMenu.show(e.getComponent(), e.getX(), e.getY()); } } @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) { ActionEvent actionEvent = new ActionEvent(OpenIdPanel.this.openIdTable, 0, (String) OpenIdPanel.this.showConversationAction.getValue(Action.ACTION_COMMAND_KEY)); OpenIdPanel.this.showConversationAction.actionPerformed(actionEvent); } } }); } @Override public JPanel getPanel() { return this; } @Override public Action[] getUrlActions() { return null; } @Override public ColumnDataModel<HttpUrl>[] getUrlColumns() { return null; } @Override public Action[] getConversationActions() { return null; } @Override public ColumnDataModel<ConversationID>[] getConversationColumns() { return null; } @Override public String getPluginName() { return this.openId.getPluginName(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; openIdPopupMenu = new javax.swing.JPopupMenu(); jSplitPane1 = new javax.swing.JSplitPane(); jTabbedPane1 = new javax.swing.JTabbedPane(); jPanel1 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); openIdTable = new javax.swing.JTable(); jPanel11 = new javax.swing.JPanel(); jPanel19 = new javax.swing.JPanel(); jPanel12 = new javax.swing.JPanel(); jPanel13 = new javax.swing.JPanel(); corruptResponseSignatureCheckBox = new javax.swing.JCheckBox(); removeResponseSignatureCheckBox = new javax.swing.JCheckBox(); jPanel20 = new javax.swing.JPanel(); removeReqAssocHandleCheckBox = new javax.swing.JCheckBox(); removeRespAssocHandleCheckBox = new javax.swing.JCheckBox(); jPanel14 = new javax.swing.JPanel(); jPanel15 = new javax.swing.JPanel(); jPanel16 = new javax.swing.JPanel(); jPanel18 = new javax.swing.JPanel(); removeRequestedAttributeCheckBox = new javax.swing.JCheckBox(); jLabel9 = new javax.swing.JLabel(); removeAttributeTypeTextField = new javax.swing.JTextField(); jPanel17 = new javax.swing.JPanel(); appendAttributeCheckBox = new javax.swing.JCheckBox(); jLabel10 = new javax.swing.JLabel(); appendAttributeTypeTextField = new javax.swing.JTextField(); jLabel11 = new javax.swing.JLabel(); appendAttributeAliasTextField = new javax.swing.JTextField(); jLabel12 = new javax.swing.JLabel(); appendAttributeValueTextField = new javax.swing.JTextField(); jPanel21 = new javax.swing.JPanel(); jPanel22 = new javax.swing.JPanel(); jPanel23 = new javax.swing.JPanel(); jLabel13 = new javax.swing.JLabel(); opUrlTextField = new javax.swing.JTextField(); associationSessionComboBox = new javax.swing.JComboBox(); associationRequestButton = new javax.swing.JButton(); jScrollPane5 = new javax.swing.JScrollPane(); associationsTable = new javax.swing.JTable(); jTabbedPane2 = new javax.swing.JTabbedPane(); jPanel2 = new javax.swing.JPanel(); jScrollPane2 = new javax.swing.JScrollPane(); parametersTable = new javax.swing.JTable(); jPanel3 = new javax.swing.JPanel(); jTabbedPane3 = new javax.swing.JTabbedPane(); jPanel4 = new javax.swing.JPanel(); jScrollPane3 = new javax.swing.JScrollPane(); axFetchRequestTable = new javax.swing.JTable(); jPanel5 = new javax.swing.JPanel(); jScrollPane4 = new javax.swing.JScrollPane(); axFetchResponseTable = new javax.swing.JTable(); jPanel7 = new javax.swing.JPanel(); jTabbedPane4 = new javax.swing.JTabbedPane(); jPanel8 = new javax.swing.JPanel(); jPanel9 = new javax.swing.JPanel(); jLabel4 = new javax.swing.JLabel(); papeAuthnTimeLabel = new javax.swing.JLabel(); jPanel10 = new javax.swing.JPanel(); jLabel5 = new javax.swing.JLabel(); phishingResistantCheckBox = new javax.swing.JCheckBox(); jLabel6 = new javax.swing.JLabel(); multiFactorCheckBox = new javax.swing.JCheckBox(); jLabel7 = new javax.swing.JLabel(); physicalMultiFactorCheckBox = new javax.swing.JCheckBox(); jLabel8 = new javax.swing.JLabel(); papeSignedCheckBox = new javax.swing.JCheckBox(); jPanel6 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); setLayout(new java.awt.BorderLayout()); jSplitPane1.setDividerLocation(150); jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); jPanel1.setLayout(new java.awt.BorderLayout()); openIdTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane1.setViewportView(openIdTable); jPanel1.add(jScrollPane1, java.awt.BorderLayout.CENTER); jTabbedPane1.addTab("Messages", jPanel1); jPanel11.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); jPanel19.setLayout(new java.awt.GridBagLayout()); jPanel12.setLayout(new java.awt.BorderLayout()); jPanel13.setBorder(javax.swing.BorderFactory.createTitledBorder("Signature Integrity Attack")); jPanel13.setLayout(new java.awt.GridBagLayout()); corruptResponseSignatureCheckBox.setText("Corrupt Response Signature"); corruptResponseSignatureCheckBox.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { corruptResponseSignatureCheckBoxItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; jPanel13.add(corruptResponseSignatureCheckBox, gridBagConstraints); removeResponseSignatureCheckBox.setText("Remove Response Signature"); removeResponseSignatureCheckBox.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { removeResponseSignatureCheckBoxItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; jPanel13.add(removeResponseSignatureCheckBox, gridBagConstraints); jPanel12.add(jPanel13, java.awt.BorderLayout.CENTER); jPanel19.add(jPanel12, new java.awt.GridBagConstraints()); jPanel20.setBorder(javax.swing.BorderFactory.createTitledBorder("Association Attack")); jPanel20.setLayout(new java.awt.GridBagLayout()); removeReqAssocHandleCheckBox.setText("Remove Request Association Handle"); removeReqAssocHandleCheckBox.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { removeReqAssocHandleCheckBoxItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; jPanel20.add(removeReqAssocHandleCheckBox, gridBagConstraints); removeRespAssocHandleCheckBox.setText("Remove Response Association Handle"); removeRespAssocHandleCheckBox.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { removeRespAssocHandleCheckBoxItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; jPanel20.add(removeRespAssocHandleCheckBox, gridBagConstraints); jPanel19.add(jPanel20, new java.awt.GridBagConstraints()); jPanel11.add(jPanel19); jTabbedPane1.addTab("Signature Attacks", jPanel11); jPanel14.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); jPanel15.setLayout(new java.awt.GridBagLayout()); jPanel16.setBorder(javax.swing.BorderFactory.createTitledBorder("Fetch Request Attack")); jPanel16.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); jPanel18.setLayout(new java.awt.GridBagLayout()); removeRequestedAttributeCheckBox.setText("Remove Requested Attribute"); removeRequestedAttributeCheckBox.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { removeRequestedAttributeCheckBoxItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; jPanel18.add(removeRequestedAttributeCheckBox, gridBagConstraints); jLabel9.setText("Attribute Type: "); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0); jPanel18.add(jLabel9, gridBagConstraints); removeAttributeTypeTextField.setColumns(30); removeAttributeTypeTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { removeAttributeTypeTextFieldActionPerformed(evt); } }); removeAttributeTypeTextField.addFocusListener(new java.awt.event.FocusAdapter() { public void focusLost(java.awt.event.FocusEvent evt) { removeAttributeTypeTextFieldFocusLost(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; jPanel18.add(removeAttributeTypeTextField, gridBagConstraints); jPanel16.add(jPanel18); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; jPanel15.add(jPanel16, gridBagConstraints); jPanel17.setBorder(javax.swing.BorderFactory.createTitledBorder("Fetch Response Attack")); jPanel17.setLayout(new java.awt.GridBagLayout()); appendAttributeCheckBox.setText("Append Attribute"); appendAttributeCheckBox.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { appendAttributeCheckBoxItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; jPanel17.add(appendAttributeCheckBox, gridBagConstraints); jLabel10.setText("Type: "); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0); jPanel17.add(jLabel10, gridBagConstraints); appendAttributeTypeTextField.setColumns(30); appendAttributeTypeTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { appendAttributeTypeTextFieldActionPerformed(evt); } }); appendAttributeTypeTextField.addFocusListener(new java.awt.event.FocusAdapter() { public void focusLost(java.awt.event.FocusEvent evt) { appendAttributeTypeTextFieldFocusLost(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; jPanel17.add(appendAttributeTypeTextField, gridBagConstraints); jLabel11.setText("Alias: "); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0); jPanel17.add(jLabel11, gridBagConstraints); appendAttributeAliasTextField.setColumns(10); appendAttributeAliasTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { appendAttributeAliasTextFieldActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; jPanel17.add(appendAttributeAliasTextField, gridBagConstraints); jLabel12.setText("Value: "); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0); jPanel17.add(jLabel12, gridBagConstraints); appendAttributeValueTextField.setColumns(30); appendAttributeValueTextField.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { appendAttributeValueTextFieldActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; jPanel17.add(appendAttributeValueTextField, gridBagConstraints); jPanel15.add(jPanel17, new java.awt.GridBagConstraints()); jPanel14.add(jPanel15); jTabbedPane1.addTab("AX Attacks", jPanel14); jPanel21.setLayout(new java.awt.BorderLayout()); jPanel22.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); jPanel23.setBorder(javax.swing.BorderFactory.createTitledBorder("Establish Association")); jPanel23.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); jLabel13.setText("OP url:"); jPanel23.add(jLabel13); opUrlTextField.setColumns(30); jPanel23.add(opUrlTextField); jPanel23.add(associationSessionComboBox); associationRequestButton.setText("Request"); associationRequestButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { associationRequestButtonActionPerformed(evt); } }); jPanel23.add(associationRequestButton); jPanel22.add(jPanel23); jPanel21.add(jPanel22, java.awt.BorderLayout.PAGE_END); associationsTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane5.setViewportView(associationsTable); jPanel21.add(jScrollPane5, java.awt.BorderLayout.CENTER); jTabbedPane1.addTab("Associations", jPanel21); jSplitPane1.setTopComponent(jTabbedPane1); jPanel2.setLayout(new java.awt.BorderLayout()); parametersTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane2.setViewportView(parametersTable); jPanel2.add(jScrollPane2, java.awt.BorderLayout.CENTER); jTabbedPane2.addTab("Parameters", jPanel2); jPanel3.setLayout(new java.awt.BorderLayout()); jPanel4.setLayout(new java.awt.BorderLayout()); axFetchRequestTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane3.setViewportView(axFetchRequestTable); jPanel4.add(jScrollPane3, java.awt.BorderLayout.CENTER); jTabbedPane3.addTab("Fetch Request", jPanel4); jPanel5.setLayout(new java.awt.BorderLayout()); axFetchResponseTable.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane4.setViewportView(axFetchResponseTable); jPanel5.add(jScrollPane4, java.awt.BorderLayout.CENTER); jTabbedPane3.addTab("Fetch Response", jPanel5); jPanel3.add(jTabbedPane3, java.awt.BorderLayout.CENTER); jTabbedPane2.addTab("Attribute Exchange", jPanel3); jPanel7.setLayout(new java.awt.BorderLayout()); jPanel8.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); jPanel9.setLayout(new java.awt.GridBagLayout()); jLabel4.setText("Authentication time:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.ipadx = 5; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; jPanel9.add(jLabel4, gridBagConstraints); papeAuthnTimeLabel.setText(" "); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jPanel9.add(papeAuthnTimeLabel, gridBagConstraints); jPanel10.setBorder(javax.swing.BorderFactory.createTitledBorder("Authentication Policies")); jPanel10.setLayout(new java.awt.GridBagLayout()); jLabel5.setText("Phishing-Resistant Authentication:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jPanel10.add(jLabel5, gridBagConstraints); phishingResistantCheckBox.setEnabled(false); jPanel10.add(phishingResistantCheckBox, new java.awt.GridBagConstraints()); jLabel6.setText("Multi-Factor Authentication:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jPanel10.add(jLabel6, gridBagConstraints); multiFactorCheckBox.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; jPanel10.add(multiFactorCheckBox, gridBagConstraints); jLabel7.setText("Physical Multi-Factor Authentication:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jPanel10.add(jLabel7, gridBagConstraints); physicalMultiFactorCheckBox.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; jPanel10.add(physicalMultiFactorCheckBox, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); jPanel9.add(jPanel10, gridBagConstraints); jLabel8.setText("Signed:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.ipadx = 5; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jPanel9.add(jLabel8, gridBagConstraints); papeSignedCheckBox.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START; jPanel9.add(papeSignedCheckBox, gridBagConstraints); jPanel8.add(jPanel9); jTabbedPane4.addTab("Response Parameters", jPanel8); jPanel7.add(jTabbedPane4, java.awt.BorderLayout.CENTER); jTabbedPane2.addTab("PAPE", jPanel7); jPanel6.setLayout(new java.awt.GridBagLayout()); jLabel1.setText("WebScarab OpenID Plugin"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(0, 0, 19, 0); jPanel6.add(jLabel1, gridBagConstraints); jLabel2.setText("Copyright (C) 2011 FedICT"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; jPanel6.add(jLabel2, gridBagConstraints); jLabel3.setText("Copyright (C) 2011 Frank Cornelis <info@frankcornelis.be>"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; jPanel6.add(jLabel3, gridBagConstraints); jTabbedPane2.addTab("About", jPanel6); jSplitPane1.setRightComponent(jTabbedPane2); jTabbedPane2.getAccessibleContext().setAccessibleName(""); add(jSplitPane1, java.awt.BorderLayout.CENTER); }// </editor-fold>//GEN-END:initComponents private void corruptResponseSignatureCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_corruptResponseSignatureCheckBoxItemStateChanged boolean corruptSignature = evt.getStateChange() == ItemEvent.SELECTED; OpenIdProxy openIdProxy = this.openId.getOpenIdProxy(); openIdProxy.setCorruptSignature(corruptSignature); }//GEN-LAST:event_corruptResponseSignatureCheckBoxItemStateChanged private void removeResponseSignatureCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_removeResponseSignatureCheckBoxItemStateChanged boolean removeSignature = evt.getStateChange() == ItemEvent.SELECTED; OpenIdProxy openIdProxy = this.openId.getOpenIdProxy(); openIdProxy.setRemoveSignature(removeSignature); }//GEN-LAST:event_removeResponseSignatureCheckBoxItemStateChanged private void removeRequestedAttributeCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_removeRequestedAttributeCheckBoxItemStateChanged boolean removeRequestedAttribute = evt.getStateChange() == ItemEvent.SELECTED; OpenIdProxy openIdProxy = this.openId.getOpenIdProxy(); openIdProxy.setRemoveRequestedAttribute(removeRequestedAttribute); }//GEN-LAST:event_removeRequestedAttributeCheckBoxItemStateChanged private void appendAttributeCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_appendAttributeCheckBoxItemStateChanged boolean appendAttribute = evt.getStateChange() == ItemEvent.SELECTED; OpenIdProxy openIdProxy = this.openId.getOpenIdProxy(); openIdProxy.setAppendAttribute(appendAttribute); }//GEN-LAST:event_appendAttributeCheckBoxItemStateChanged private void removeAttributeTypeTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeAttributeTypeTextFieldActionPerformed String removeAttributeType = this.removeAttributeTypeTextField.getText(); OpenIdProxy openIdProxy = this.openId.getOpenIdProxy(); openIdProxy.setRemoveAttributeType(removeAttributeType); }//GEN-LAST:event_removeAttributeTypeTextFieldActionPerformed private void removeAttributeTypeTextFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_removeAttributeTypeTextFieldFocusLost String removeAttributeType = this.removeAttributeTypeTextField.getText(); OpenIdProxy openIdProxy = this.openId.getOpenIdProxy(); openIdProxy.setRemoveAttributeType(removeAttributeType); }//GEN-LAST:event_removeAttributeTypeTextFieldFocusLost private void appendAttributeTypeTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_appendAttributeTypeTextFieldActionPerformed String appendAttributeType = this.appendAttributeTypeTextField.getText(); OpenIdProxy openIdProxy = this.openId.getOpenIdProxy(); openIdProxy.setAppendAttributeType(appendAttributeType); }//GEN-LAST:event_appendAttributeTypeTextFieldActionPerformed private void appendAttributeTypeTextFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_appendAttributeTypeTextFieldFocusLost String appendAttributeType = this.appendAttributeTypeTextField.getText(); OpenIdProxy openIdProxy = this.openId.getOpenIdProxy(); openIdProxy.setAppendAttributeType(appendAttributeType); }//GEN-LAST:event_appendAttributeTypeTextFieldFocusLost private void appendAttributeAliasTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_appendAttributeAliasTextFieldActionPerformed String appendAttributeAlias = this.appendAttributeAliasTextField.getText(); OpenIdProxy openIdProxy = this.openId.getOpenIdProxy(); openIdProxy.setAppendAttributeAlias(appendAttributeAlias); }//GEN-LAST:event_appendAttributeAliasTextFieldActionPerformed private void appendAttributeValueTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_appendAttributeValueTextFieldActionPerformed String appendAttributeValue = this.appendAttributeValueTextField.getText(); OpenIdProxy openIdProxy = this.openId.getOpenIdProxy(); openIdProxy.setAppendAttributeValue(appendAttributeValue); }//GEN-LAST:event_appendAttributeValueTextFieldActionPerformed private void removeReqAssocHandleCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_removeReqAssocHandleCheckBoxItemStateChanged boolean removeReqAssocHandle = evt.getStateChange() == ItemEvent.SELECTED; OpenIdProxy openIdProxy = this.openId.getOpenIdProxy(); openIdProxy.setRemoveRequestAssociationHandle(removeReqAssocHandle); }//GEN-LAST:event_removeReqAssocHandleCheckBoxItemStateChanged private void removeRespAssocHandleCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_removeRespAssocHandleCheckBoxItemStateChanged boolean removeRespAssocHandle = evt.getStateChange() == ItemEvent.SELECTED; OpenIdProxy openIdProxy = this.openId.getOpenIdProxy(); openIdProxy.setRemoveResponseAssociationHandle(removeRespAssocHandle); }//GEN-LAST:event_removeRespAssocHandleCheckBoxItemStateChanged private void associationRequestButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_associationRequestButtonActionPerformed final String opUrl = this.opUrlTextField.getText(); final AssociationSessionType associationSessionType = this.associationSessionComboBoxModel.getSelectedAssociationSessionType(); this.associationRequestButton.setEnabled(false); new SwingWorker() { @Override public Object construct() { try { return OpenIdPanel.this.openIdModel.establishAssociation(opUrl, associationSessionType); } catch (Exception ex) { return ex; } } @Override public void finished() { OpenIdPanel.this.associationRequestButton.setEnabled(true); Object obj = getValue(); if (obj instanceof Association) { Association association = (Association) obj; OpenIdPanel.this.associationTableModel.addAssociation(association); } else { Exception ex = (Exception) obj; JOptionPane.showMessageDialog(OpenIdPanel.this, ex.getMessage(), "Association Error", JOptionPane.ERROR_MESSAGE); } } }.start(); }//GEN-LAST:event_associationRequestButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JTextField appendAttributeAliasTextField; private javax.swing.JCheckBox appendAttributeCheckBox; private javax.swing.JTextField appendAttributeTypeTextField; private javax.swing.JTextField appendAttributeValueTextField; private javax.swing.JButton associationRequestButton; private javax.swing.JComboBox associationSessionComboBox; private javax.swing.JTable associationsTable; private javax.swing.JTable axFetchRequestTable; private javax.swing.JTable axFetchResponseTable; private javax.swing.JCheckBox corruptResponseSignatureCheckBox; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel10; private javax.swing.JPanel jPanel11; private javax.swing.JPanel jPanel12; private javax.swing.JPanel jPanel13; private javax.swing.JPanel jPanel14; private javax.swing.JPanel jPanel15; private javax.swing.JPanel jPanel16; private javax.swing.JPanel jPanel17; private javax.swing.JPanel jPanel18; private javax.swing.JPanel jPanel19; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel20; private javax.swing.JPanel jPanel21; private javax.swing.JPanel jPanel22; private javax.swing.JPanel jPanel23; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel5; private javax.swing.JPanel jPanel6; private javax.swing.JPanel jPanel7; private javax.swing.JPanel jPanel8; private javax.swing.JPanel jPanel9; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JScrollPane jScrollPane5; private javax.swing.JSplitPane jSplitPane1; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JTabbedPane jTabbedPane2; private javax.swing.JTabbedPane jTabbedPane3; private javax.swing.JTabbedPane jTabbedPane4; private javax.swing.JCheckBox multiFactorCheckBox; private javax.swing.JTextField opUrlTextField; private javax.swing.JPopupMenu openIdPopupMenu; private javax.swing.JTable openIdTable; private javax.swing.JLabel papeAuthnTimeLabel; private javax.swing.JCheckBox papeSignedCheckBox; private javax.swing.JTable parametersTable; private javax.swing.JCheckBox phishingResistantCheckBox; private javax.swing.JCheckBox physicalMultiFactorCheckBox; private javax.swing.JTextField removeAttributeTypeTextField; private javax.swing.JCheckBox removeReqAssocHandleCheckBox; private javax.swing.JCheckBox removeRequestedAttributeCheckBox; private javax.swing.JCheckBox removeRespAssocHandleCheckBox; private javax.swing.JCheckBox removeResponseSignatureCheckBox; // End of variables declaration//GEN-END:variables private void displayOpenID(ConversationID id) { resetDisplay(); this.parametersTableModel.setParameters(this.openIdModel.getParameters(id)); this.axFetchRequestTableModel.setAttributes(this.openIdModel.getAXFetchRequestAttributes(id)); this.axFetchResponseTableModel.setAttributes(this.openIdModel.getAXFetchResponseAttributes(id)); PAPEResponse papeResponse = this.openIdModel.getPAPEResponse(id); if (null != papeResponse) { if (null != papeResponse.getAuthenticationTime()) { this.papeAuthnTimeLabel.setText(papeResponse.getAuthenticationTime().toString()); } else { this.papeAuthnTimeLabel.setText("Not provided."); } this.phishingResistantCheckBox.setSelected(papeResponse.isPhishingResistant()); this.multiFactorCheckBox.setSelected(papeResponse.isMultiFactor()); this.physicalMultiFactorCheckBox.setSelected(papeResponse.isMultiFactorPhysical()); this.papeSignedCheckBox.setSelected(papeResponse.isSigned()); } } private void resetDisplay() { this.parametersTableModel.resetParameters(); this.axFetchRequestTableModel.resetAttributes(); this.axFetchResponseTableModel.resetAttributes(); this.papeAuthnTimeLabel.setText(""); this.phishingResistantCheckBox.setSelected(false); this.multiFactorCheckBox.setSelected(false); this.physicalMultiFactorCheckBox.setSelected(false); this.papeSignedCheckBox.setSelected(false); } }