Author: anil.saldhana(a)jboss.com
Date: 2011-04-11 20:56:51 -0400 (Mon, 11 Apr 2011)
New Revision: 873
Added:
integration-tests/trunk/common-dist/files/
integration-tests/trunk/common-dist/files/jboss-log4j.xml
integration-tests/trunk/picketlink-trust-tests/src/test/java/org/picketlink/test/trust/tests/POJOWSAuthorizationTestCase.java
integration-tests/trunk/picketlink-trust-tests/src/test/java/org/picketlink/test/trust/ws/POJOBean.java
integration-tests/trunk/picketlink-trust-tests/src/test/resources/authorize-handlers.xml
integration-tests/trunk/picketlink-trust-tests/src/test/resources/log4j.xml
integration-tests/trunk/picketlink-trust-tests/src/test/resources/webapp/
integration-tests/trunk/picketlink-trust-tests/src/test/resources/webapp/WEB-INF/
integration-tests/trunk/picketlink-trust-tests/src/test/resources/webapp/WEB-INF/jboss-web.xml
integration-tests/trunk/picketlink-trust-tests/src/test/resources/webapp/WEB-INF/jboss-wsse.xml
integration-tests/trunk/picketlink-trust-tests/src/test/resources/webapp/WEB-INF/web.xml
Modified:
integration-tests/trunk/ant-scripts/ant-build.xml
integration-tests/trunk/picketlink-trust-tests/pom.xml
integration-tests/trunk/picketlink-trust-tests/src/test/java/org/picketlink/test/trust/ws/TestBean.java
Log:
PLFED-167: handlers for authentication, authz for POJO WS
Modified: integration-tests/trunk/ant-scripts/ant-build.xml
===================================================================
--- integration-tests/trunk/ant-scripts/ant-build.xml 2011-04-12 00:55:10 UTC (rev 872)
+++ integration-tests/trunk/ant-scripts/ant-build.xml 2011-04-12 00:56:51 UTC (rev 873)
@@ -77,6 +77,7 @@
<param name="deploy" value="${JBAS5_DEPLOY}"/>
<param name="jbossas"
value="${basedir}/target/jboss-5.1.0.GA"/>
</antcall>
+ <copy file="${basedir}/../common-dist/files/jboss-log4j.xml"
todir="${JBAS5_DEPLOY}/../conf"/>
<!--
<mkdir dir="${JBAS5_DEPLOY}/picketlink" />
@@ -109,6 +110,7 @@
<target name="copy-trust-settings-jbas5">
<copy
file="${basedir}/../picketlink-trust-tests/src/test/resources/domains/sts-jboss-beans.xml"
todir="${JBAS5_DEPLOY}/picketlink" />
<copy
file="${basedir}/../picketlink-trust-tests/target/picketlink-wstest-tests.jar"
todir="${JBAS5_DEPLOY}/picketlink" />
+ <copy file="${basedir}/../picketlink-trust-tests/target/pojo-test.war"
todir="${JBAS5_DEPLOY}/picketlink" />
<copy
file="${basedir}/../picketlink-trust-tests/src/test/resources/props/sts-users.properties"
todir="${JBAS5_DEPLOY}/../conf" />
<copy
file="${basedir}/../picketlink-trust-tests/src/test/resources/props/sts-roles.properties"
todir="${JBAS5_DEPLOY}/../conf" />
<copy
file="${localRepository}/org/picketlink/picketlink-trust-jbossws/${version}/picketlink-trust-jbossws-${version}.jar"
todir="${JBAS5_DEPLOY}/picketlink"/>
Added: integration-tests/trunk/common-dist/files/jboss-log4j.xml
===================================================================
--- integration-tests/trunk/common-dist/files/jboss-log4j.xml (rev
0)
+++ integration-tests/trunk/common-dist/files/jboss-log4j.xml 2011-04-12 00:56:51 UTC (rev
873)
@@ -0,0 +1,390 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!-- ===================================================================== -->
+<!-- -->
+<!-- Log4j Configuration -->
+<!-- -->
+<!-- ===================================================================== -->
+
+<!-- $Id: jboss-log4j.xml 87678 2009-04-22 16:47:08Z bstansberry(a)jboss.com $ -->
+
+<!--
+ | For more configuration information and examples see the Jakarta Log4j
+ | owebsite:
http://jakarta.apache.org/log4j
+ -->
+
+<log4j:configuration
xmlns:log4j="http://jakarta.apache.org/log4j/"
debug="false">
+
+ <!-- ================================= -->
+ <!-- Preserve messages in a local file -->
+ <!-- ================================= -->
+
+ <!-- A time/date based rolling appender -->
+ <appender name="FILE"
class="org.jboss.logging.appender.DailyRollingFileAppender">
+ <errorHandler
class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+ <param name="File"
value="${jboss.server.log.dir}/server.log"/>
+ <param name="Append" value="true"/>
+ <!-- In AS 5.0.x the server log threshold was set by a system
+ property. In 5.1 and later we are instead using the system
+ property to set the priority on the root logger (see <root/> below)
+ <param name="Threshold"
value="${jboss.server.log.threshold}"/>
+ -->
+
+ <!-- Rollover at midnight each day -->
+ <param name="DatePattern"
value="'.'yyyy-MM-dd"/>
+
+ <!-- Rollover at the top of each hour
+ <param name="DatePattern"
value="'.'yyyy-MM-dd-HH"/>
+ -->
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <!-- The default pattern: Date Priority [Category] (Thread) Message\n -->
+ <param name="ConversionPattern" value="%d %-5p [%c] (%t)
%m%n"/>
+
+ <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
+ <param name="ConversionPattern" value="%d %-5r %-5p [%c]
(%t:%x) %m%n"/>
+ -->
+ </layout>
+ </appender>
+
+ <!-- A size based file rolling appender
+ <appender name="FILE"
class="org.jboss.logging.appender.RollingFileAppender">
+ <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+ <param name="File"
value="${jboss.server.log.dir}/server.log"/>
+ <param name="Append" value="false"/>
+ <param name="MaxFileSize" value="500KB"/>
+ <param name="MaxBackupIndex" value="1"/>
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d %-5p [%c]
%m%n"/>
+ </layout>
+ </appender>
+ -->
+
+ <!-- ============================== -->
+ <!-- Append messages to the console -->
+ <!-- ============================== -->
+
+ <appender name="CONSOLE"
class="org.apache.log4j.ConsoleAppender">
+ <errorHandler
class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+ <param name="Target" value="System.out"/>
+ <param name="Threshold" value="INFO"/>
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <!-- The default pattern: Date Priority [Category] Message\n -->
+ <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p
[%c{1}] %m%n"/>
+ </layout>
+ </appender>
+
+ <!-- ====================== -->
+ <!-- More Appender examples -->
+ <!-- ====================== -->
+
+ <!-- Buffer events and log them asynchronously
+ <appender name="ASYNC"
class="org.apache.log4j.AsyncAppender">
+ <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+ <appender-ref ref="FILE"/>
+ <appender-ref ref="CONSOLE"/>
+ <appender-ref ref="SMTP"/>
+ </appender>
+ -->
+
+ <!-- EMail events to an administrator
+ <appender name="SMTP"
class="org.apache.log4j.net.SMTPAppender">
+ <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+ <param name="Threshold" value="ERROR"/>
+ <param name="To" value="admin(a)myhost.domain.com"/>
+ <param name="From" value="nobody(a)myhost.domain.com"/>
+ <param name="Subject" value="JBoss Sever Errors"/>
+ <param name="SMTPHost" value="localhost"/>
+ <param name="BufferSize" value="10"/>
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}]
%m%n"/>
+ </layout>
+ </appender>
+ -->
+
+ <!-- Syslog events
+ <appender name="SYSLOG"
class="org.apache.log4j.net.SyslogAppender">
+ <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+ <param name="Facility" value="LOCAL7"/>
+ <param name="FacilityPrinting" value="true"/>
+ <param name="SyslogHost" value="localhost"/>
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}]
%m%n"/>
+ </layout>
+ </appender>
+ -->
+
+ <!-- Log events to JMS (requires a topic to be created)
+ <appender name="JMS"
class="org.apache.log4j.net.JMSAppender">
+ <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+ <param name="Threshold" value="ERROR"/>
+ <param name="TopicConnectionFactoryBindingName"
value="java:/ConnectionFactory"/>
+ <param name="TopicBindingName"
value="topic/MyErrorsTopic"/>
+ </appender>
+ -->
+
+ <!-- Log events through SNMP
+ <appender name="TRAP_LOG"
class="org.apache.log4j.ext.SNMPTrapAppender">
+ <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+ <param name="ImplementationClassName"
value="org.apache.log4j.ext.JoeSNMPTrapSender"/>
+ <param name="ManagementHost" value="127.0.0.1"/>
+ <param name="ManagementHostTrapListenPort" value="162"/>
+ <param name="EnterpriseOID" value="1.3.6.1.4.1.24.0"/>
+ <param name="LocalIPAddress" value="127.0.0.1"/>
+ <param name="LocalTrapSendPort" value="161"/>
+ <param name="GenericTrapType" value="6"/>
+ <param name="SpecificTrapType" value="12345678"/>
+ <param name="CommunityString" value="public"/>
+ <param name="ForwardStackTraceWithTrap" value="true"/>
+ <param name="Threshold" value="DEBUG"/>
+ <param name="ApplicationTrapOID"
value="1.3.6.1.4.1.24.12.10.22.64"/>
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern"
value="%d,%p,[%t],[%c],%m%n"/>
+ </layout>
+ </appender>
+ -->
+
+ <!-- Emit events as JMX notifications
+ <appender name="JMX"
class="org.jboss.monitor.services.JMXNotificationAppender">
+ <errorHandler
class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+
+ <param name="Threshold" value="WARN"/>
+ <param name="ObjectName"
value="jboss.system:service=Logging,type=JMXNotificationAppender"/>
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d %-5p [%c]
%m"/>
+ </layout>
+ </appender>
+ -->
+
+ <!-- Security AUDIT Appender
+ <appender name="AUDIT"
class="org.jboss.logging.appender.DailyRollingFileAppender">
+ <errorHandler
class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+ <param name="File"
value="${jboss.server.log.dir}/audit.log"/>
+ <param name="Append" value="true"/>
+ <param name="DatePattern"
value="'.'yyyy-MM-dd"/>
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d %-5p [%c] (%t:%x)
%m%n"/>
+ </layout>
+ </appender>
+ -->
+
+ <!-- ================ -->
+ <!-- Limit categories -->
+ <!-- ================ -->
+
+ <!-- Limit the org.apache category to INFO as its DEBUG is verbose -->
+ <category name="org.apache">
+ <priority value="INFO"/>
+ </category>
+
+ <!-- Limit the jacorb category to WARN as its INFO is verbose -->
+ <category name="jacorb">
+ <priority value="WARN"/>
+ </category>
+
+ <!-- Set the logging level of the JSF implementation that uses
+ | java.util.logging. The jdk logging levels can be controlled
+ | through the org.jboss.logging.log4j.JDKLevel class that
+ | in addition to the standard log4j levels it adds support for
+ | SEVERE, WARNING, CONFIG, FINE, FINER, FINEST
+ -->
+ <category name="javax.enterprise.resource.webcontainer.jsf">
+ <priority value="INFO"
class="org.jboss.logging.log4j.JDKLevel"/>
+ </category>
+
+ <!-- Limit the org.jgroups category to WARN as its INFO is verbose -->
+ <category name="org.jgroups">
+ <priority value="WARN"/>
+ </category>
+
+ <!-- Limit the org.quartz category to INFO as its DEBUG is verbose -->
+ <category name="org.quartz">
+ <priority value="INFO"/>
+ </category>
+
+ <!-- Limit the com.sun category to INFO as its FINE is verbose -->
+ <category name="com.sun">
+ <priority value="INFO"/>
+ </category>
+
+ <!-- Limit the sun category to INFO as its FINE is verbose -->
+ <category name="sun">
+ <priority value="INFO"/>
+ </category>
+
+ <!-- Limit the javax.xml.bind category to INFO as its FINE is verbose -->
+ <category name="javax.xml.bind">
+ <priority value="INFO"/>
+ </category>
+
+ <!-- Limit JBoss categories
+ <category name="org.jboss">
+ <priority value="INFO"/>
+ </category>
+ -->
+
+ <!-- Limit the JSR77 categories -->
+ <category name="org.jboss.management">
+ <priority value="INFO"/>
+ </category>
+
+ <!-- Limit the verbose facelets compiler -->
+ <category name="facelets.compiler">
+ <priority value="WARN"/>
+ </category>
+
+ <!-- Limit the verbose ajax4jsf cache initialization -->
+ <category name="org.ajax4jsf.cache">
+ <priority value="WARN"/>
+ </category>
+
+ <!-- Limit the verbose embedded jopr categories -->
+ <category name="org.rhq">
+ <priority value="WARN"/>
+ </category>
+
+ <!-- Limit the verbose seam categories -->
+ <category name="org.jboss.seam">
+ <priority value="WARN"/>
+ </category>
+
+ <!-- Show the evolution of the DataSource pool in the logs [inUse/Available/Max]
+ <category
name="org.jboss.resource.connectionmanager.JBossManagedConnectionPool">
+ <priority value="TRACE"/>
+ </category>
+ -->
+ <category name="org.picketlink">
+ <priority value="TRACE"/>
+ </category>
+
+ <category name="org.jboss.security">
+ <priority value="TRACE"/>
+ </category>
+
+ <category name="org.jboss.ws">
+ <priority value="TRACE"/>
+ </category>
+ <category name="org.apache">
+ <priority value="TRACE"/>
+ </category>
+
+ <!-- Category specifically for Security Audit Provider
+ <category name="org.jboss.security.audit.providers.LogAuditProvider"
additivity="false">
+ <priority value="TRACE"/>
+ <appender-ref ref="AUDIT"/>
+ </category>
+ -->
+
+ <!-- Limit the org.jboss.serial (jboss-serialization) to INFO as its DEBUG is
verbose -->
+ <category name="org.jboss.serial">
+ <priority value="INFO"/>
+ </category>
+
+ <!-- Decrease the priority threshold for the org.jboss.varia category
+ <category name="org.jboss.varia">
+ <priority value="DEBUG"/>
+ </category>
+ -->
+
+ <!-- Enable JBossWS message tracing
+ <category name="org.jboss.ws.core.MessageTrace">
+ <priority value="TRACE"/>
+ </category>
+ -->
+
+ <!--
+ | An example of enabling the custom TRACE level priority that is used
+ | by the JBoss internals to diagnose low level details. This example
+ | turns on TRACE level msgs for the org.jboss.ejb.plugins package and its
+ | subpackages. This will produce A LOT of logging output.
+ |
+ | Note: since jboss AS 4.2.x, the trace level is supported natively by
+ | log4j, so although the custom org.jboss.logging.XLevel priority will
+ | still work, there is no need to use it. The two examples that follow
+ | will both enable trace logging.
+ <category name="org.jboss.system">
+ <priority value="TRACE"
class="org.jboss.logging.XLevel"/>
+ </category>
+ <category name="org.jboss.ejb.plugins">
+ <priority value="TRACE"/>
+ </category>
+ -->
+
+ <!--
+ | Logs these events to SNMP:
+ - server starts/stops
+ - cluster evolution (node death/startup)
+ - When an EJB archive is deployed (and associated verified messages)
+ - When an EAR archive is deployed
+
+ <category name="org.jboss.system.server.Server">
+ <priority value="INFO" />
+ <appender-ref ref="TRAP_LOG"/>
+ </category>
+
+ <category
name="org.jboss.ha.framework.interfaces.HAPartition.lifecycle">
+ <priority value="INFO" />
+ <appender-ref ref="TRAP_LOG"/>
+ </category>
+
+ <category name="org.jboss.deployment.MainDeployer">
+ <priority value="ERROR" />
+ <appender-ref ref="TRAP_LOG"/>
+ </category>
+
+ <category name="org.jboss.ejb.EJBDeployer">
+ <priority value="INFO" />
+ <appender-ref ref="TRAP_LOG"/>
+ </category>
+
+ <category name="org.jboss.deployment.EARDeployer">
+ <priority value="INFO" />
+ <appender-ref ref="TRAP_LOG"/>
+ </category>
+ -->
+
+ <!-- Clustering logging -->
+ <!-- Uncomment the following to redirect the org.jgroups and
+ org.jboss.ha categories to a cluster.log file.
+
+ <appender name="CLUSTER"
class="org.jboss.logging.appender.RollingFileAppender">
+ <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
+ <param name="File"
value="${jboss.server.log.dir}/cluster.log"/>
+ <param name="Append" value="false"/>
+ <param name="MaxFileSize" value="500KB"/>
+ <param name="MaxBackupIndex" value="1"/>
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d %-5p [%c]
%m%n"/>
+ </layout>
+ </appender>
+ <category name="org.jgroups">
+ <priority value="DEBUG" />
+ <appender-ref ref="CLUSTER"/>
+ </category>
+ <category name="org.jboss.ha">
+ <priority value="DEBUG" />
+ <appender-ref ref="CLUSTER"/>
+ </category>
+ -->
+
+ <!-- ======================= -->
+ <!-- Setup the Root category -->
+ <!-- ======================= -->
+
+ <root>
+ <!--
+ Set the root logger priority via a system property. Note this is parsed by
log4j,
+ so the full JBoss system property format is not supported; e.g.
+ setting a default via ${jboss.server.log.threshold:WARN} will not work.
+ -->
+ <priority value="${jboss.server.log.threshold}"/>
+ <appender-ref ref="CONSOLE"/>
+ <appender-ref ref="FILE"/>
+ </root>
+
+</log4j:configuration>
Modified: integration-tests/trunk/picketlink-trust-tests/pom.xml
===================================================================
--- integration-tests/trunk/picketlink-trust-tests/pom.xml 2011-04-12 00:55:10 UTC (rev
872)
+++ integration-tests/trunk/picketlink-trust-tests/pom.xml 2011-04-12 00:56:51 UTC (rev
873)
@@ -26,6 +26,36 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.1.1</version>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>war</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <warName>pojo-test</warName>
+ <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
+
<warSourceDirectory>src/test/resources/webapp</warSourceDirectory>
+ <webResources>
+ <resource>
+ <!-- this is relative to the pom.xml directory -->
+ <directory>target/test-classes</directory>
+ <targetPath>WEB-INF/classes</targetPath>
+ <includes>
+ <include>**/POJOBean*</include>
+ <include>**/auth*</include>
+ </includes>
+ </resource>
+ </webResources>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
@@ -38,12 +68,14 @@
<configuration>
<finalName>picketlink-wstest</finalName>
<excludes>
+ <exclude>**/WEB-INF/**</exclude>
<exclude>**/*jboss-beans.xml</exclude>
<exclude>**/*TestCase*</exclude>
+ <exclude>**/POJO*</exclude>
+ <exclude>**/author*</exclude>
</excludes>
</configuration>
- </plugin>
-
+ </plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
@@ -94,7 +126,7 @@
<dependency>
<groupId>org.jboss.ws.native</groupId>
<artifactId>jbossws-native-core</artifactId>
- <version>3.4.1.GA</version>
+ <version>3.1.2.GA</version>
<scope>test</scope>
<exclusions>
<exclusion>
Added:
integration-tests/trunk/picketlink-trust-tests/src/test/java/org/picketlink/test/trust/tests/POJOWSAuthorizationTestCase.java
===================================================================
---
integration-tests/trunk/picketlink-trust-tests/src/test/java/org/picketlink/test/trust/tests/POJOWSAuthorizationTestCase.java
(rev 0)
+++
integration-tests/trunk/picketlink-trust-tests/src/test/java/org/picketlink/test/trust/tests/POJOWSAuthorizationTestCase.java 2011-04-12
00:56:51 UTC (rev 873)
@@ -0,0 +1,85 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+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 POJO WS Authorization using PicketLink
+ * @author Anil Saldhana
+ * @since Oct 3, 2010
+ */
+public class POJOWSAuthorizationTestCase
+{
+ private static String username = "UserA";
+ private static String password = "PassA";
+
+ @SuppressWarnings("rawtypes")
+ @Test
+ public void testWSInteraction() throws Exception
+ {
+ // Step 1: Get a SAML2 Assertion Token from the STS
+ 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);
+ }
+
+ // Step 2: Stuff the Assertion on the SOAP message context and add the SAML2Handler
to client side handlers
+ URL wsdl = new
URL("http://localhost:8080/pojo-test/POJOBeanService?wsdl");
+ QName serviceName = new
QName("http://ws.trust.test.picketlink.org/",
"POJOBeanService");
+ Service service = Service.create(wsdl, serviceName);
+ WSTest port = service.getPort(new
QName("http://ws.trust.test.picketlink.org/", "POJOBeanPort"),
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);
+
+ //Step 3: Access the WS. Exceptions will be thrown anyway.
+ port.echo("Test");
+ }
+}
\ No newline at end of file
Added:
integration-tests/trunk/picketlink-trust-tests/src/test/java/org/picketlink/test/trust/ws/POJOBean.java
===================================================================
---
integration-tests/trunk/picketlink-trust-tests/src/test/java/org/picketlink/test/trust/ws/POJOBean.java
(rev 0)
+++
integration-tests/trunk/picketlink-trust-tests/src/test/java/org/picketlink/test/trust/ws/POJOBean.java 2011-04-12
00:56:51 UTC (rev 873)
@@ -0,0 +1,50 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.picketlink.test.trust.ws;
+
+import javax.jws.HandlerChain;
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+
+/**
+ * POJO that is exposed as WS
+ * @author Anil.Saldhana(a)redhat.com
+ * @since Apr 11, 2011
+ */
+@WebService
+@SOAPBinding(style = SOAPBinding.Style.RPC)
+(a)HandlerChain(file="authorize-handlers.xml")
+public class POJOBean
+{
+ @WebMethod
+ public void echo(String echo)
+ {
+ System.out.println(echo);
+ }
+
+ @WebMethod
+ public void echoUnchecked(String echo)
+ {
+ System.out.println(echo);
+ }
+}
\ No newline at end of file
Modified:
integration-tests/trunk/picketlink-trust-tests/src/test/java/org/picketlink/test/trust/ws/TestBean.java
===================================================================
---
integration-tests/trunk/picketlink-trust-tests/src/test/java/org/picketlink/test/trust/ws/TestBean.java 2011-04-12
00:55:10 UTC (rev 872)
+++
integration-tests/trunk/picketlink-trust-tests/src/test/java/org/picketlink/test/trust/ws/TestBean.java 2011-04-12
00:56:51 UTC (rev 873)
@@ -29,6 +29,7 @@
import javax.xml.ws.WebServiceContext;
/**
+ * Just a Simple EJB3 bean exposed as WS
* @author Anil.Saldhana(a)redhat.com
* @since Apr 5, 2011
*/
Added:
integration-tests/trunk/picketlink-trust-tests/src/test/resources/authorize-handlers.xml
===================================================================
---
integration-tests/trunk/picketlink-trust-tests/src/test/resources/authorize-handlers.xml
(rev 0)
+++
integration-tests/trunk/picketlink-trust-tests/src/test/resources/authorize-handlers.xml 2011-04-12
00:56:51 UTC (rev 873)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+<handler-chains
xmlns="http://java.sun.com/xml/ns/javaee"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
javaee_web_services_1_2.xsd">
+
+ <handler-chain>
+
+
+ <handler>
+ <handler-name>WSAuthorizationHandler</handler-name>
+
<handler-class>org.picketlink.trust.jbossws.handler.WSAuthorizationHandler</handler-class>
+ </handler>
+
+ <handler>
+ <handler-name>WSAuthenticationHandler</handler-name>
+
<handler-class>org.picketlink.trust.jbossws.handler.WSAuthenticationHandler</handler-class>
+ </handler>
+
+ <handler>
+ <handler-name>SAML2Handler</handler-name>
+
<handler-class>org.picketlink.trust.jbossws.handler.SAML2Handler</handler-class>
+ </handler>
+
+
+ </handler-chain>
+
+
+</handler-chains>
\ No newline at end of file
Added: integration-tests/trunk/picketlink-trust-tests/src/test/resources/log4j.xml
===================================================================
--- integration-tests/trunk/picketlink-trust-tests/src/test/resources/log4j.xml
(rev 0)
+++ integration-tests/trunk/picketlink-trust-tests/src/test/resources/log4j.xml 2011-04-12
00:56:51 UTC (rev 873)
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!-- ===================================================================== -->
+<!-- -->
+<!-- Log4j Configuration -->
+<!-- -->
+<!-- ===================================================================== -->
+
+<!-- $Id: log4j.xml 34717 2005-08-08 18:15:31Z adrian $ -->
+
+<!--
+ | For more configuration infromation and examples see the Jakarta Log4j
+ | owebsite:
http://jakarta.apache.org/log4j
+ -->
+
+<log4j:configuration
xmlns:log4j="http://jakarta.apache.org/log4j/"
debug="false">
+
+ <!-- ================================= -->
+ <!-- Preserve messages in a local file -->
+ <!-- ================================= -->
+
+ <!-- A time/date based rolling appender -->
+ <appender name="FILE"
class="org.apache.log4j.DailyRollingFileAppender">
+ <param name="File" value="${basedir}/target/test.log"/>
+ <param name="Append" value="true"/>
+
+ <!-- Rollover at midnight each day -->
+ <param name="DatePattern" value="'.'yyyy-MM-dd"/>
+
+ <!-- Rollover at the top of each hour
+ <param name="DatePattern"
value="'.'yyyy-MM-dd-HH"/>
+ -->
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <!-- The default pattern: Date Priority [Category] Message\n -->
+ <param name="ConversionPattern" value="%d %-5p [%c]
%m%n"/>
+
+ <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
+ <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x)
%m%n"/>
+ -->
+ </layout>
+ </appender>
+
+ <!-- ============================== -->
+ <!-- Append messages to the console -->
+ <!-- ============================== -->
+
+ <appender name="CONSOLE"
class="org.apache.log4j.ConsoleAppender">
+ <param name="Threshold" value="TRACE"/>
+ <param name="Target" value="System.out"/>
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <!-- The default pattern: Date Priority [Category] Message\n -->
+ <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}]
%m%n"/>
+ </layout>
+ </appender>
+ <!-- ================ -->
+ <!-- Limit categories -->
+ <!-- ================ -->
+
+ <!-- Limit JBoss categories to INFO
+ <category name="org.jboss">
+ <priority value="INFO" class="org.jboss.logging.XLevel"/>
+ </category>
+ -->
+
+ <category name="org.jboss">
+ <priority value="TRACE"/>
+ </category>
+ <category name="org.picketlink">
+ <priority value="TRACE"/>
+ </category>
+
+ <!-- ======================= -->
+ <!-- Setup the Root category -->
+ <!-- ======================= -->
+
+ <root>
+ <appender-ref ref="FILE"/>
+ </root>
+
+</log4j:configuration>
Added:
integration-tests/trunk/picketlink-trust-tests/src/test/resources/webapp/WEB-INF/jboss-web.xml
===================================================================
---
integration-tests/trunk/picketlink-trust-tests/src/test/resources/webapp/WEB-INF/jboss-web.xml
(rev 0)
+++
integration-tests/trunk/picketlink-trust-tests/src/test/resources/webapp/WEB-INF/jboss-web.xml 2011-04-12
00:56:51 UTC (rev 873)
@@ -0,0 +1,3 @@
+<jboss-web>
+ <security-domain>sts</security-domain>
+</jboss-web>
\ No newline at end of file
Added:
integration-tests/trunk/picketlink-trust-tests/src/test/resources/webapp/WEB-INF/jboss-wsse.xml
===================================================================
---
integration-tests/trunk/picketlink-trust-tests/src/test/resources/webapp/WEB-INF/jboss-wsse.xml
(rev 0)
+++
integration-tests/trunk/picketlink-trust-tests/src/test/resources/webapp/WEB-INF/jboss-wsse.xml 2011-04-12
00:56:51 UTC (rev 873)
@@ -0,0 +1,26 @@
+<jboss-ws-security
xmlns="http://www.jboss.com/ws-security/config"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://www.jboss.com/ws-security/config
+
http://www.jboss.com/ws-security/schema/jboss-ws-security_1_0.xsd">
+
+ <port name="POJOBeanPort">
+ <operation
name="{http://ws.trust.test.picketlink.org/}echoUnchecked">
+ <config>
+ <authorize>
+ <unchecked/>
+ </authorize>
+ </config>
+ </operation>
+
+ <operation
name="{http://ws.trust.test.picketlink.org/}echo">
+ <config>
+ <authorize>
+ <role>JBossAdmin</role>
+ </authorize>
+ </config>
+ </operation>
+ </port>
+
+
+
+</jboss-ws-security>
\ No newline at end of file
Added:
integration-tests/trunk/picketlink-trust-tests/src/test/resources/webapp/WEB-INF/web.xml
===================================================================
---
integration-tests/trunk/picketlink-trust-tests/src/test/resources/webapp/WEB-INF/web.xml
(rev 0)
+++
integration-tests/trunk/picketlink-trust-tests/src/test/resources/webapp/WEB-INF/web.xml 2011-04-12
00:56:51 UTC (rev 873)
@@ -0,0 +1,15 @@
+<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+ version="2.5">
+
+ <servlet>
+ <display-name>POJO Web Service</display-name>
+ <servlet-name>POJOBeanService</servlet-name>
+ <servlet-class>org.picketlink.test.trust.ws.POJOBean</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>POJOBeanService</servlet-name>
+ <url-pattern>/POJOBeanService</url-pattern>
+ </servlet-mapping>
+</web-app>
\ No newline at end of file