1. Download WSO2 ESB 3.0.1 from here unzip and apply the patches patch0003 and patch0023.These patches are not publicly available - but will be added in to the future releases. If you interested, please contact us on bizdev@wso2.com.
2. Create a file called krb.conf inside [ESB_HOME]\repository\conf and copy the following content to it.
[libdefaults] default_realm = WSO2.COM default_tkt_enctypes = rc4-hmac default_tgs_enctypes = rc4-hmac dns_lookup_kdc = true dns_lookup_realm = false [realms] WSO2.COM = { kdc = 192.168.2.10 }Here, WSO2.COM is my root domain name of my Active Directory, which is acting as the KDC and 192.168.2.1 is it's IP address - so you need to change them as per your setup. Make sure that you have default_realm all caps.
3. Create a file called jaas.conf inside [ESB_HOME]\repository\conf and copy the following content to it.
Server { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=tfalse storeKey=true useTicketCache=false isInitiator=false; }; Client { com.sun.security.auth.module.Krb5LoginModule required useTicketCache=false; };4. Start the WSO2 ESB
5. Apply security to the given proxy service [during this sample we select echo sample service which is already there by default]
6. Select 'Sign & Encrypt with Anonymous' from the Security Policy wizard.
7. After applying, edit the policy and replace both bindings with the content below.
<?xml version="1.0" encoding="UTF-8"?> <wsp:Policy wsu:Id="kerberossignandencrypt" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsp:ExactlyOne> <wsp:All> <sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <wsp:Policy> <sp:ProtectionToken> <wsp:Policy> <sp:KerberosToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"> <wsp:Policy> <sp:WssKerberosV5ApReqToken11/> </wsp:Policy> </sp:KerberosToken> </wsp:Policy> </sp:ProtectionToken> <sp:AlgorithmSuite> <wsp:Policy> <sp:Basic256/> </wsp:Policy> </sp:AlgorithmSuite> <sp:Layout> <wsp:Policy> <sp:Lax/> </wsp:Policy> </sp:Layout> <sp:IncludeTimestamp/> <sp:OnlySignEntireHeadersAndBody/> </wsp:Policy> </sp:SymmetricBinding> <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> </sp:SignedParts> <sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Policy> <sp:MustSupportRefKeyIdentifier/> <sp:MustSupportRefIssuerSerial/> <sp:MustSupportRefThumbprint/> <sp:RequireSignatureConfirmation/> </sp:Policy> </sp:Wss11> <sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <wsp:Policy> <sp:RequireClientEntropy/> <sp:RequireServerEntropy/> <sp:MustSupportIssuedTokens/> </wsp:Policy> </sp:Trust10> <rampart:RampartConfig xmlns:rampart="http://ws.apache.org/rampart/policy"> <rampart:timestampPrecisionInMilliseconds>true</rampart:timestampPrecisionInMilliseconds> <rampart:timestampTTL>300</rampart:timestampTTL> <rampart:timestampMaxSkew>300</rampart:timestampMaxSkew> <rampart:kerberosConfig> <rampart:property name="service.principal.password">1qaz2wsx$</rampart:property> <rampart:property name="javax.security.auth.useSubjectCredsOnly">true</rampart:property> <rampart:property name="java.security.krb5.conf">/Users/prabath/clients/wso2esb-3.0.1/repository/conf/krb.conf</rampart:property> </rampart:kerberosConfig> </rampart:RampartConfig> </wsp:All> </wsp:ExactlyOne> </wsp:Policy>You need to set your SPN password under service.principal.password and also the absolute path to krb.conf under java.security.krb5.conf.
8. You can write the Java client to this service as explained in my previous blog post.