Java 类javax.jms.JMSSecurityRuntimeException 实例源码

项目:qpid-jms    文件:AmqpProvider.java   
private Mechanism findSaslMechanism(String[] remoteMechanisms) throws JMSSecurityRuntimeException {

        Mechanism mechanism = SaslMechanismFinder.findMatchingMechanism(
            connectionInfo.getUsername(), connectionInfo.getPassword(), transport.getLocalPrincipal(), saslMechanisms, remoteMechanisms);

        mechanism.setUsername(connectionInfo.getUsername());
        mechanism.setPassword(connectionInfo.getPassword());

        try {
            Map<String, String> saslOptions = PropertyUtil.filterProperties(PropertyUtil.parseQuery(getRemoteURI()), "sasl.options.");
            if (!saslOptions.containsKey("serverName")) {
                saslOptions.put("serverName", remoteURI.getHost());
            }

            mechanism.init(Collections.unmodifiableMap(saslOptions));
        } catch (Exception ex) {
            throw new RuntimeException("Failed to apply sasl options to mechanism: " + mechanism.getName() + ", reason: " + ex.toString(), ex);
        }

        return mechanism;
    }
项目:qpid-jms    文件:AmqpSaslAuthenticator.java   
public void handleSaslMechanisms(Sasl sasl, Transport transport) {
    try {
        String[] remoteMechanisms = sasl.getRemoteMechanisms();
        if (remoteMechanisms != null && remoteMechanisms.length != 0) {
            try {
                mechanism = mechanismFinder.apply(remoteMechanisms);
            } catch (JMSSecurityRuntimeException jmssre){
                recordFailure("Could not find a suitable SASL mechanism. " + jmssre.getMessage(), jmssre);
                return;
            }

            byte[] response = mechanism.getInitialResponse();
            if (response != null) {
                sasl.send(response, 0, response.length);
            }
            sasl.setMechanisms(mechanism.getName());
        }
    } catch (Throwable error) {
        recordFailure("Exception while processing SASL init: " + error.getMessage(), error);
    }
}
项目:pooled-jms    文件:JmsPoolJMSContextTest.java   
@Test(timeout = 30000)
public void testCreateProducerAnonymousNotAuthorized() {
    MockJMSUser user = new MockJMSUser("user", "password");
    user.setCanProducerAnonymously(false);

    factory.addUser(user);

    JMSContext context = cf.createContext("user", "password");
    try {
        context.createProducer();
        fail("Should not be able to create producer when not authorized");
    } catch (JMSSecurityRuntimeException jmssre) {}
}
项目:org.ops4j.pax.transx    文件:Utils.java   
public static JMSRuntimeException convertToRuntimeException(JMSException e) {
    if (e instanceof javax.jms.IllegalStateException) {
        return new IllegalStateRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof InvalidClientIDException) {
        return new InvalidClientIDRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof InvalidDestinationException) {
        return new InvalidDestinationRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof InvalidSelectorException) {
        return new InvalidSelectorRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof JMSSecurityException) {
        return new JMSSecurityRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof MessageFormatException) {
        return new MessageFormatRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof MessageNotWriteableException) {
        return new MessageNotWriteableRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof ResourceAllocationException) {
        return new ResourceAllocationRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof TransactionInProgressException) {
        return new TransactionInProgressRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof TransactionRolledBackException) {
        return new TransactionRolledBackRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    return new JMSRuntimeException(e.getMessage(), e.getErrorCode(), e);
}
项目:activemq-artemis    文件:JmsExceptionUtils.java   
/**
 * Converts instances of sub-classes of {@link JMSException} into the corresponding sub-class of
 * {@link JMSRuntimeException}.
 *
 * @param e
 * @return
 */
public static JMSRuntimeException convertToRuntimeException(JMSException e) {
   if (e instanceof javax.jms.IllegalStateException) {
      return new IllegalStateRuntimeException(e.getMessage(), e.getErrorCode(), e);
   }
   if (e instanceof InvalidClientIDException) {
      return new InvalidClientIDRuntimeException(e.getMessage(), e.getErrorCode(), e);
   }
   if (e instanceof InvalidDestinationException) {
      return new InvalidDestinationRuntimeException(e.getMessage(), e.getErrorCode(), e);
   }
   if (e instanceof InvalidSelectorException) {
      return new InvalidSelectorRuntimeException(e.getMessage(), e.getErrorCode(), e);
   }
   if (e instanceof JMSSecurityException) {
      return new JMSSecurityRuntimeException(e.getMessage(), e.getErrorCode(), e);
   }
   if (e instanceof MessageFormatException) {
      return new MessageFormatRuntimeException(e.getMessage(), e.getErrorCode(), e);
   }
   if (e instanceof MessageNotWriteableException) {
      return new MessageNotWriteableRuntimeException(e.getMessage(), e.getErrorCode(), e);
   }
   if (e instanceof ResourceAllocationException) {
      return new ResourceAllocationRuntimeException(e.getMessage(), e.getErrorCode(), e);
   }
   if (e instanceof TransactionInProgressException) {
      return new TransactionInProgressRuntimeException(e.getMessage(), e.getErrorCode(), e);
   }
   if (e instanceof TransactionRolledBackException) {
      return new TransactionRolledBackRuntimeException(e.getMessage(), e.getErrorCode(), e);
   }
   return new JMSRuntimeException(e.getMessage(), e.getErrorCode(), e);
}
项目:qpid-jms    文件:SaslMechanismFinder.java   
/**
 * Attempts to find a matching Mechanism implementation given a list of supported
 * mechanisms from a remote peer.  Can return null if no matching Mechanisms are
 * found.
 *
 * @param username
 *        the username, or null if there is none
 * @param password
 *        the password, or null if there is none
 * @param localPrincipal
 *        the Principal associated with the transport, or null if there is none
 * @param mechRestrictions
 *        The possible mechanism(s) to which the client should restrict its
 *        mechanism selection to if offered by the server, or null if there
 *        is no restriction
 * @param remoteMechanisms
 *        list of mechanism names that are supported by the remote peer.
 *
 * @return the best matching Mechanism for the supported remote set.
 * @throws JMSSecurityRuntimeException if no matching mechanism can be identified
 */
public static Mechanism findMatchingMechanism(String username, String password, Principal localPrincipal, Set<String> mechRestrictions, String... remoteMechanisms) throws JMSSecurityRuntimeException {

    Mechanism match = null;
    List<Mechanism> found = new ArrayList<Mechanism>();
    List<String> remoteMechanismNames = Arrays.asList(remoteMechanisms);

    for (String remoteMechanism : remoteMechanismNames) {
        MechanismFactory factory = findMechanismFactory(remoteMechanism);
        if (factory != null) {
            Mechanism mech = factory.createMechanism();

            boolean mechConfigured = mechRestrictions != null && mechRestrictions.contains(remoteMechanism);
            if(mechRestrictions != null && !mechConfigured) {
                LOG.debug("Skipping {} mechanism because it is not in the configured mechanisms restriction set", remoteMechanism);
            } else if(mech.isApplicable(username, password, localPrincipal)) {
                if(mech.isEnabledByDefault() || mechConfigured) {
                    found.add(mech);
                } else {
                    LOG.debug("Skipping {} mechanism as it must be explicitly enabled in the configured sasl mechanisms", mech);
                }
            } else {
                LOG.debug("Skipping {} mechanism because the available credentials are not sufficient", mech);
            }
        }
    }

    if (!found.isEmpty()) {
        // Sorts by priority using Mechanism comparison and return the last value in
        // list which is the Mechanism deemed to be the highest priority match.
        Collections.sort(found);
        match = found.get(found.size() - 1);
    } else {
        throw new JMSSecurityRuntimeException("No supported mechanism, or none usable with the available credentials. Server offered: " + remoteMechanismNames);
    }

    LOG.info("Best match for SASL auth was: {}", match);

    return match;
}
项目:qpid-jms    文件:SaslIntegrationTest.java   
private void doMechanismNegotiationFailsToFindMatchTestImpl(boolean createContext) throws Exception {
    try (TestAmqpPeer testPeer = new TestAmqpPeer();) {

        String failureMessageBreadcrumb = "Could not find a suitable SASL mechanism."
                + " No supported mechanism, or none usable with the available credentials. Server offered: [SCRAM-SHA-1, UNKNOWN, PLAIN]";
        Symbol[] serverMechs = new Symbol[] { SCRAM_SHA_1, Symbol.valueOf("UNKNOWN"), PLAIN};

        testPeer.expectSaslMechanismNegotiationFailure(serverMechs);

        String uriOptions = "?jms.clientID=myclientid";
        ConnectionFactory factory = new JmsConnectionFactory("amqp://localhost:" + testPeer.getServerPort() + uriOptions);
        if(createContext) {
            try {
                factory.createContext(null, null);
                fail("Excepted exception to be thrown");
            } catch (JMSSecurityRuntimeException jmssre) {
                // Expected, we deliberately failed the mechanism negotiation process.
                assertNotNull("Expected an exception message", jmssre.getMessage());
                assertEquals("Unexpected message details", jmssre.getMessage(), failureMessageBreadcrumb);
            }
        } else {
            try {
                factory.createConnection(null, null);
                fail("Excepted exception to be thrown");
            } catch (JMSSecurityException jmsse) {
                // Expected, we deliberately failed the mechanism negotiation process.
                assertNotNull("Expected an exception message", jmsse.getMessage());
                assertEquals("Unexpected message details", jmsse.getMessage(), failureMessageBreadcrumb);
            }
        }

        testPeer.waitForAllHandlersToComplete(1000);
    }
}
项目:qpid-jms    文件:AmqpSaslAuthenticatorTest.java   
@Test
public void testNoSaslMechanismAgreed() throws Exception {
    Function<String[], Mechanism> mechanismFunction = mechanismName -> {
        throw new JMSSecurityRuntimeException("reasons");
    };

    AmqpSaslAuthenticator authenticator = new AmqpSaslAuthenticator(mechanismFunction);
    authenticator.handleSaslMechanisms(sasl, transport);

    assertTrue(authenticator.isComplete());
    assertFalse(authenticator.wasSuccessful());
    assertNotNull(authenticator.getFailureCause());
    assertTrue(authenticator.getFailureCause().getMessage().contains("Could not find a suitable SASL mechanism"));
}
项目:tomee    文件:JMS2.java   
public static JMSRuntimeException toRuntimeException(final JMSException e) {
    if (e instanceof javax.jms.IllegalStateException) {
        return new IllegalStateRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof InvalidClientIDException) {
        return new InvalidClientIDRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof InvalidDestinationException) {
        return new InvalidDestinationRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof InvalidSelectorException) {
        return new InvalidSelectorRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof JMSSecurityException) {
        return new JMSSecurityRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof MessageFormatException) {
        return new MessageFormatRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof MessageNotWriteableException) {
        return new MessageNotWriteableRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof ResourceAllocationException) {
        return new ResourceAllocationRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof TransactionInProgressException) {
        return new TransactionInProgressRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    if (e instanceof TransactionRolledBackException) {
        return new TransactionRolledBackRuntimeException(e.getMessage(), e.getErrorCode(), e);
    }
    return new JMSRuntimeException(e.getMessage(), e.getErrorCode(), e);
}
项目:pooled-jms    文件:JMSExceptionSupportTest.java   
@Test(expected = JMSSecurityRuntimeException.class)
public void testConvertsJMSSecurityExceptionToJMSSecurityRuntimeException() {
    throw JMSExceptionSupport.createRuntimeException(new JMSSecurityException("error"));
}
项目:qpid-jms    文件:JmsExceptionSupportTest.java   
@Test(expected = JMSSecurityRuntimeException.class)
public void testConvertsJMSSecurityExceptionToJMSSecurityRuntimeException() {
    throw JmsExceptionSupport.createRuntimeException(new JMSSecurityException("error"));
}