/** Ask for security credentials. */ private CredentialsConfigurator supplyCredentials( Application application, ProxyClient proxyClient) { String displayName = application.getStorage().getCustomProperty(DataSourceDescriptor.PROPERTY_NAME); if (displayName == null) displayName = proxyClient.getUrl().toString(); CredentialsConfigurator jsc = CredentialsConfigurator.supplyCredentials(displayName); if (jsc != null) proxyClient.setCredentials(jsc.getUsername(), jsc.getPassword()); return jsc; }
private void connect( Application application, ProxyClient proxyClient, ApplicationRemovedListener listener, ApplicationAvailabilityListener aListener) { while (true) { try { proxyClient.connect(); application.notifyWhenRemoved(listener); application.addPropertyChangeListener(Stateful.PROPERTY_STATE, aListener); break; } catch (SecurityException e) { LOGGER.log(Level.INFO, "connect", e); // NOI18N if (proxyClient.hasSSLStubCheck()) { Storage storage = application.getStorage(); String noSSLProp = JmxApplicationProvider.PROPERTY_RETRY_WITHOUT_SSL; String noSSL = storage.getCustomProperty(noSSLProp); if (noSSL != null && Boolean.parseBoolean(noSSL)) { // NOI18N proxyClient.setInsecure(); continue; } else { String conn = storage.getCustomProperty(DataSourceDescriptor.PROPERTY_NAME); if (conn == null) conn = storage.getCustomProperty(ApplicationType.PROPERTY_SUGGESTED_NAME); if (conn == null) conn = proxyClient.getUrl().toString(); String msg = NbBundle.getMessage(JmxModelImpl.class, "MSG_Insecure_SSL", conn); // NOI18N String title = NbBundle.getMessage(JmxModelImpl.class, "Title_Insecure_SSL"); // NOI18N String retry = NbBundle.getMessage(JmxModelImpl.class, "Retry_Insecure_SSL"); // NOI18N JLabel l = new JLabel(msg); JCheckBox c = new JCheckBox(); Mnemonics.setLocalizedText(c, retry); c.setSelected(noSSL == null); JPanel p = new JPanel(new BorderLayout(0, 20)); p.add(l, BorderLayout.CENTER); p.add(c, BorderLayout.SOUTH); NotifyDescriptor dd = new NotifyDescriptor.Confirmation(p, title, NotifyDescriptor.YES_NO_OPTION); if (DialogDisplayer.getDefault().notify(dd) == NotifyDescriptor.YES_OPTION) { storage.setCustomProperty(noSSLProp, Boolean.toString(c.isSelected())); proxyClient.setInsecure(); continue; } else { break; } } } if (supplyCredentials(application, proxyClient) == null) { break; } } } }
private void tryConnect() throws IOException { if (mode == MODE_SELF) { jmxc = null; conn = ManagementFactory.getPlatformMBeanServer(); } else { if (mode == MODE_LOCAL) { if (!lvm.isManageable()) { lvm.startManagementAgent(); if (!lvm.isManageable()) { // FIXME: what to throw throw new IOException(lvm + " not manageable"); // NOI18N } } if (jmxUrl == null) { jmxUrl = new JMXServiceURL(lvm.connectorAddress()); } } Map<String, Object> env = new HashMap(); if (envProvider != null) env.putAll(envProvider.getEnvironment(app, app.getStorage())); if (userName != null || password != null) env.put(JMXConnector.CREDENTIALS, new String[] {userName, password}); if (!insecure && mode != MODE_LOCAL && env.get(JMXConnector.CREDENTIALS) != null) { env.put("jmx.remote.x.check.stub", "true"); // NOI18N checkSSLStub = true; } else { checkSSLStub = false; } jmxc = JMXConnectorFactory.newJMXConnector(jmxUrl, env); jmxc.addConnectionNotificationListener(this, null, null); try { jmxc.connect(env); } catch (java.io.IOException e) { // Likely a SSL-protected RMI registry if ("rmi".equals(jmxUrl.getProtocol())) { // NOI18N env.put("com.sun.jndi.rmi.factory.socket", sslRMIClientSocketFactory); // NOI18N jmxc.connect(env); } else { throw e; } } MBeanServerConnection mbsc = jmxc.getMBeanServerConnection(); conn = Checker.newChecker(this, mbsc); } isDead = false; }