package org.picketlink.test.trust.tests; import java.net.URL; import java.util.List; import javax.xml.namespace.QName; import javax.xml.ws.BindingProvider; import javax.xml.ws.Service; import javax.xml.ws.handler.Handler; import org.junit.Test; import org.picketlink.identity.federation.api.wstrust.WSTrustClient; import org.picketlink.identity.federation.api.wstrust.WSTrustClient.SecurityInfo; import org.picketlink.identity.federation.core.wstrust.WSTrustException; import org.picketlink.identity.federation.core.wstrust.plugins.saml.SAMLUtil; import org.picketlink.test.trust.ws.WSTest; import org.picketlink.trust.jbossws.SAML2Constants; import org.picketlink.trust.jbossws.handler.SAML2Handler; import org.w3c.dom.Element; /** * A Simple WS Test for the SAML Profile of WSS * @author Marcus Moyses * @author Anil Saldhana */ public class STSWSClientTestCase { private static String username = "UserA"; private static String password = "PassA"; @SuppressWarnings("rawtypes") @Test public void testWSInteraction() throws Exception { WSTrustClient client = new WSTrustClient("PicketLinkSTS", "PicketLinkSTSPort", "http://localhost:8080/picketlink-sts/PicketLinkSTS", new SecurityInfo(username, password)); Element assertion = null; try { System.out.println("Invoking token service to get SAML assertion for " + username); assertion = client.issueToken(SAMLUtil.SAML2_TOKEN_TYPE); System.out.println("SAML assertion for " + username + " successfully obtained!"); } catch (WSTrustException wse) { System.out.println("Unable to issue assertion: " + wse.getMessage()); wse.printStackTrace(); System.exit(1); } URL wsdl = new URL("http://localhost:8080/picketlink-wstest-tests/WSTestBean?wsdl"); QName serviceName = new QName("http://ws.trust.test.picketlink.org/", "WSTestBeanService"); Service service = Service.create(wsdl, serviceName); WSTest port = service.getPort(new QName("http://ws.trust.test.picketlink.org/", "WSTestBeanPort"), WSTest.class); BindingProvider bp = (BindingProvider)port; bp.getRequestContext().put(SAML2Constants.SAML2_ASSERTION_PROPERTY, assertion); List<Handler> handlers = bp.getBinding().getHandlerChain(); handlers.add(new SAML2Handler()); bp.getBinding().setHandlerChain(handlers); port.echo("Test"); } }