Secure Rest Services in Mule 3 using HTTPS Endpoint :
Creating rest services using mule is very easy . You can take help from this
post.Now to make your service secure we can configure HTTPS end point . This is how you configure HTTPS endpoint in mule :
First , generate a keystore using keygen tool , and then put the keystore file in your mule-app classpath.you can take help from this
post on how to generate keystore using java.
Here is , how the mule xml file will look like :
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:jersey="http://www.mulesoft.org/schema/mule/jersey" xmlns:https="http://www.mulesoft.org/schema/mule/https"
xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.3.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/https http://www.mulesoft.org/schema/mule/https/current/mule-https.xsd
http://www.mulesoft.org/schema/mule/jersey http://www.mulesoft.org/schema/mule/jersey/current/mule-jersey.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd ">
<https:connector name="httpsConnector" doc:name="HTTP\HTTPS">
<https:tls-key-store path="keystore.jks" keyPassword="changeit" storePassword="changeit"/>
</https:connector>
<flow name="httpsRestServiceExampleFlow1" doc:name="httpsRestServiceExampleFlow1">
<https:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082" connector-ref="httpsConnector" doc:name="HTTP"/>
<jersey:resources doc:name="REST">
<component class="RestService"/>
</jersey:resources>
</flow>
</mule>
Secure Rest Services in Mule 3 using Basic Authentication:
To enable basic authentication in mule app , we need to configure spring security in mule like this :
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:jersey="http://www.mulesoft.org/schema/mule/jersey"
xmlns:vm="http://www.mulesoft.org/schema/mule/vm" xmlns:https="http://www.mulesoft.org/schema/mule/https"
xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:servlet="http://www.mulesoft.org/schema/mule/servlet"
xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mule-ss="http://www.mulesoft.org/schema/mule/spring-security"
xmlns:ss="http://www.springframework.org/schema/security" version="CE-3.3.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/jersey http://www.mulesoft.org/schema/mule/jersey/current/mule-jersey.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd
http://www.mulesoft.org/schema/mule/https http://www.mulesoft.org/schema/mule/https/current/mule-https.xsd
http://www.mulesoft.org/schema/mule/servlet http://www.mulesoft.org/schema/mule/servlet/current/mule-servlet.xsd
http://www.mulesoft.org/schema/mule/spring-security http://www.mulesoft.org/schema/mule/spring-security/current/mule-spring-security.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<mule-ss:security-manager>
<mule-ss:delegate-security-provider
name="httpBasicAuth" delegate-ref="authenticationManager" />
</mule-ss:security-manager>
<spring:beans>
<ss:authentication-manager alias="authenticationManager">
<ss:authentication-provider>
<ss:user-service id="userService">
<ss:user name="admin" password="admin"
authorities="ROLE_ADMIN" />
</ss:user-service>
</ss:authentication-provider>
</ss:authentication-manager>
</spring:beans>
<flow name="httpsRestServiceExampleFlow1" doc:name="httpsRestServiceExampleFlow1">
<http:inbound-endpoint exchange-pattern="request-response"
host="localhost" port="9595" doc:name="HTTP">
<mule-ss:http-security-filter realm="mule-realm"
securityProviders="httpBasicAuth" />
</http:inbound-endpoint>
<jersey:resources doc:name="REST">
<component doc:name="Rest Service">
<spring-object bean="restService" />
</component>
</jersey:resources>
</flow>
</mule>
First we created authentication manager in spring beans , and then used it in mule security manager , and mule security manager is then used in end point configuration.
Post your comments and suggestions !!