How to secure your Apache Camel deployment



Similar documents
Riding the (Apache) Camel into the cloud!

Red Hat JBoss Integration and Business Rules Mgmt

Uses the Apache Chemistry client API to interface with CMIS supporting CMS

Spoilt for Choice Which Integration Framework to choose? Mule ESB. Integration. Kai Wähner

Systems Integration in the Cloud Era with Apache Camel. Kai Wähner, Principal Consultant

FUSE-ESB4 An open-source OSGi based platform for EAI and SOA

Improving performance for security enabled web services. - Dr. Colm Ó héigeartaigh

Hummingbird An Open Source Ground Segment for Small Satellites

Building a Service Oriented Architecture with ServiceMix. Jeff Genender CTO Savoir Technologies, Inc

Apigee Gateway Specifications

WELCOME TO Open Source Enterprise Architecture

Apache CXF Web Services

Advancing Integration Competency and Excellence with the WSO2 Integration Platform

Magnus Larsson Callista Enterprise AB

Enterprise Service Bus Evaluation as Integration Platform for Ocean Observatories

REST and SOAP Services with Apache CXF

President and Director OeHF. Implementing IHE Actors using the Open ehealth Integration Platform (IPF)

Onset Computer Corporation

CERTIFIED MULESOFT DEVELOPER EXAM. Preparation Guide

Open Source SOA with Service Component Architecture and Apache Tuscany. Jean-Sebastien Delfino Mario Antollini Raymond Feng

Building a Reliable Messaging Infrastructure with Apache ActiveMQ

Reusing Existing * Java EE Applications from Oracle SOA Suite

Next Generation Open Source Messaging with Apache Apollo

Open ESB. Sang Shin Java Technology Evangelist Sun Microsystems, Inc. Raffaele Spazzoli Imola Informatica 1

Building an Enterprise Service Bus Using Web Services and Apache Synapse v2

Implementing Enterprise Integration Patterns Using Open Source Frameworks

RED HAT JBOSS FUSE. An open source enterprise service bus

70-487: Developing Windows Azure and Web Services

Core Feature Comparison between. XML / SOA Gateways. and. Web Application Firewalls. Jason Macy jmacy@forumsys.com CTO, Forum Systems

European Commission e-trustex Software Architecture Document

CICS Web Service Security. Anthony Papageorgiou IBM CICS Development March 13, 2012 Session: 10282

Easy CramBible Lab DEMO ONLY VERSION Test284,IBM WbS.DataPower SOA Appliances, Firmware V3.6.0

Design REST Services with CXF JAX- RS implementation: best practices and lessons learned

OpenShift is FanPaaStic For Java EE. By Shekhar Gulati Promo Code JUDCON.IN

Chapter 1: Web Services Testing and soapui

Web Service Development Using CXF. - Praveen Kumar Jayaram

APM for Java. AppDynamics Pro Documentation. Version 4.0.x. Page 1

Secure Services withapache CXF

Denodo Data Virtualization Security Architecture & Protocols

ESB Versus ActiveVOS

WEB SERVICES. Revised 9/29/2015

Mule Getting Started Guide

Module 13 Implementing Java EE Web Services with JAX-WS

The end. Carl Nettelblad

Web Services in Oracle Fusion Middleware. Raghu Kodali Consulting Product Manager & SOA Evangelist Oracle Fusion Middleware Oracle USA

JBOSS ESB. open source community experience distilled. Beginner's Guide. Enterprise. Magesh Kumar B

Talend Open Studio for ESB. Release Notes 5.2.1

Adobe ColdFusion 11 Enterprise Edition

Salesforce integration with Enterprise Open Source. Mischa de Vries László van den Hoek SFDC Consultant OS Consultant

This training is targeted at System Administrators and developers wanting to understand more about administering a WebLogic instance.

AquaLogic Service Bus

WebSphere Training Outline

SOA using Open ESB, BPEL, and NetBeans. Sang Shin Java Technology Evangelist Sun Microsystems, Inc.

ucosminexus Application Server and BPM/ESB Platform Terminology Guide Y99(E)

Beyond The Web Drupal Meets The Desktop (And Mobile) Justin Miller Code Sorcery Workshop, LLC

JVA-122. Secure Java Web Development

RED HAT JBOSS FUSE. A lightweight, flexible integration platform

Java EE 7: Back-End Server Application Development

MESSAGING SECURITY USING GLASSFISH AND OPEN MESSAGE QUEUE

JAX-WS Developer's Guide

Mobility Information Series

WELCOME. Where and When should I use the Oracle Service Bus (OSB) Guido Schmutz. UKOUG Conference

Christoph Emmersberger. Florian Springer. Senacor Technologies AG Wieseneckstraße Schwaig b. Nürnberg

Building the European Biodiversity. Observation Network (EU BON)

JBoss SOAP Web Services User Guide. Version: M5

HOBOlink Web Services V2 Developer s Guide

Enterprise Service Bus

Event Logging - Introduction

Saturday, June 30, 12

The future of middleware: enterprise application integration and Fuse

Enterprise Integration with WSO2 ESB

ActiveVOS Server Architecture. March 2009

Out of the Fire - Adding Layers of Protection When Deploying Oracle EBS to the Internet

WebSphere Integration Solutions. IBM Day Minsk Anton Litvinov WebSphere Connectivity Professional Central Eastern Europe

SOA Fundamentals For Java Developers. Alexander Ulanov, System Architect Odessa, 30 September 2008

Centers for Disease Control and Prevention, Public Health Information Network Messaging System (PHINMS)

National Aeronautics and Space Administration (NASA) OpenSource ESB. Version 4.0

IBM SPSS Collaboration and Deployment Services Version 6 Release 0. Single Sign-On Services Developer's Guide

RESIN APPLICATION SERVER JAVA EE 6 WEB PROFILE

Copyright 2013, Oracle and/or its affiliates. All rights reserved.

SOA. Next Generation Open Source. Burr Sutter Sr. Product Manager, SOA (JBossESB, Riftsaw, jbpm, Drools) September 3, 2009

Developing Java Web Services

Web Application Report

Creating Big Data Applications with Spring XD

TIBCO ActiveMatrix BPM SOA Development Tutorials

JBI and OpenESB. Introduction to Technology. Michael Czapski Advanced Solutions Architect, SOA/BI/Java CAPS Sun Microsystems, ANZ

JAVA API FOR XML WEB SERVICES INTRODUCTION TO JAX-WS, THE JAVA API FOR XML BASED WEB SERVICES (SOAP, WSDL)

WEB APPLICATION DEVELOPMENT. UNIT I J2EE Platform 9

Integration in Action using JBoss Middleware. Ashokraj Natarajan - Cognizant

Talend ESB. Getting Started Guide 5.5.1

Getting started with API testing

White Paper: Why Upgrade from WebSphere Application Server (WAS) v7 to v8.x?

Transcription:

How to secure your Apache Camel deployment Jonathan Anstey Principal Engineer FuseSource 1

Your Presenter is: Jonathan Anstey Principal Software Engineer at FuseSource http://fusesource.com Apache Camel PMC member, Apache ActiveMQ committer Co-author of Camel in Action Contact Twitter: @jon_anstey Blog: http://janstey.blogspot.com Email: jon@fusesource.com 2

Agenda 1. Intro to Apache Camel 2. Security options in Camel 3

Why is integration hard? Multiple applications talking over multiple transports on multiple platforms = PAIN! Pain mostly due to 1. Coming up with good solutions to messaging problems 2. Coding against specific APIs and transports for each integration point 4

Enterprise Integration Patterns to the rescue! 5

Some of the patterns 6

But I still have to code the EIPs and connect to all those transports and APIs 7

Introducing Camel Apache Camel is an open source integration framework that focuses on making integration easier by having: Implementations of the Enterprise Integration Patterns (EIPs) Connectivity to many transports and APIs Easy to use Domain Specific Language (DSL) to wire EIPs and transports together 8

Camel s Main Concepts 9

Camel has implementations of the EIPs 50+ EIP patterns http://camel.apache.org/enterprise-integration-patterns.html 10

Let s take a look at a pattern 11

Message Filter 12

Message Filter Java DSL import org.apache.camel.builder.routebuilder; public class FilterRoute extends RouteBuilder { public void configure() throws Exception { from("activemq:quote").filter().xpath("/quote/product = widget ").to("wmq:quote"); } } 13

Message Filter Spring XML <?xml version="1.0" encoding="utf-8"?> <beans > <camelcontext > <route> <from uri="activemq:quote"/> <filter> <xpath>/quote/product = widget </xpath> <to uri="wmq:quote"/> </filter> </route> </camelcontext> </beans> 14

URIs select and configure the component activemq:quote" will select select the ActiveMQ component and use a queue named "quote" 15

There are many components 80+ Components activemq crypto flatpack irc ldap activemq-journal cxf freemarker javaspace mail/imap/pop3 amqp cxfrs ftp/ftps/sftp jbi mina atom dataset gae jcr mock bean direct hdfs jdbc msv bean validation esper hibernate jetty nagios browse event hl7 jms netty cache exec http jpa nmr cometd file ibatis jt/400 printer http://camel.apache.org/components.html 16

There are many components 80+ Components properties scalate stream xslt quartz seda string-template ejb quickfix servlet test ref smooks timer restlet smpp validation rmi snmp velocity rnc spring-integration vm rng spring-security xmpp rss sql xquery http://camel.apache.org/components.html 17

Predicates & Expressions BeanShell EL Groovy JavaScript JSR 223 OGNL MVEL PHP Python Ruby Simple SQL XPath XQuery http://camel.apache.org/languages.html 18

More patterns! 19

Content-Based Router 20

Content-Based Router Java DSL from("activemq:neworders").choice().when().xpath("/order/product = 'widget'").to("activemq:orders.widgets").otherwise().to("activemq:orders.gadgets"); 21

Splitter 22

Splitter Java DSL from("file:orders").split(body().tokenize("\n")).to("activemq:order.items"); 23

Aggregator 24

Aggregator Java DSL from("activemq:inventory.items").aggregate(xpath("/order/@id")).to("activemq:inventory.order"); 25

Message payload handling Camel supports any type of payload TypeConverters automatically convert common Java types DOM to String, File to InputStream, Stream to byte[], etc Dataformats are used to explicitly marshall and unmarshall to specific data formats 26

Data formats bindy castor csv crypto flatpack gzip hl7 jaxb json protobuf serialization soap tidy markup xml beans xml security xstream zip dozer http://camel.apache.org/data-format.html 27

Data format example from("activemq:queuewithjavaobjects ).marshal().jaxb().to( wmq:queuewithxmlmessages"); 28

Running Camel 29

Running Camel Java Application CamelContext context = new DefaultCamelContext(); context.addroutes(new MyRouteBuilder()); context.start(); Spring Application <camelcontext> <package>com.acme.myroutebuilders</package> </camelcontext> 30

Security options in Camel 31

Security options in Camel Endpoint Security Security options handled by transport or API Payload Security Encryption/decryption or payload using data formats Route Security Authentication and authorization within a route's flow Configuration Security Encrypting/decrypting configuration files 32

Simple example JAX-WS web service accepts order and dumps it to a JMS queue for processing 33

Simple example Camel route that consumes messages from the HTTP endpoint Send back OK response Implemented using camel-cxf component 34

Endpoint Security 35

Endpoint Security Useful for publishing secure services for external consumption or integrating with secure services Securing the pipe rather than anything within the Camel route Varies based on transport type 36

Setting up SSL/TLS on JAX-WS Web Service First switch to use HTTPS in address 37

Setting up SSL/TLS on JAX-WS Web Service Next configure the transport to use mutually authenticated SSL whew! Same port as web service Generated by Java keytool; Server and client need these 38

Adding Credentials to a JAX-WS Web Service Using WS-Security to check credentials Interceptor inserted before endpoint to check credentials 39

Adding Credentials to a JAX-WS Web Service Adding WS-Security interceptor to endpoint Interceptor Callback class checks password 40

Payload Security 41

Payload Security Useful for communicating over insecure endpoints camel-crypto provides dataformat for encrypting and decrypting payloads Can use any JCE algorithm 42

Payload Security Encrypt before sending to an endpoint using "marshal" Decrypt on the other side using "unmarshal" 43

Route Security 44

Route Security Provides authorization within Camel routes Can handle auth errors with Camel's error handlers rather than coding your own Handle auth in one place rather than for every transport Implemented by either Spring Security or Apache Shiro 45

Route Security Using the camel-spring-security component you first have to set up Spring Security Users can come from lots of sources: LDAP, JAAS, JDBC, etc Here we just hardcode one user in the "customer" role 46

Route Security Next step is to create a policy in Camel to authorize users in the "customer" role Create a protected block of route using an auth policy 47

Route Security If a client was not authorized to send an order (not in the "customer" role) an error message will be sent back 48

Configuration Security 49

Configuration Security Say we instead sent new orders to an FTP server, which requires a password in the URI Properties file has one plaintext entry ftp.password=mysecretpassword 50

Configuration Security Use camel-jasypt command line tool to encrypt properties ftp.password=enc(bsw9uv37gq0qhfu7ko03ww==) Jasypt properties parser can understand this encrypted file 51

Useful links Apac he Camel web site http://camel.apache.org Camel security docs - http://camel.apache.org/security.html Camel in Action book http://manning.com/camelinaction 52

Offer from Manning Publications! Order any book from http://manning.com and use the bsides40java code for 40% off 53

Any Questions? 54