<!-- gazelle-xua-actors-->
<dependency>
<groupId>net.ihe.gazelle</groupId>
<artifactId>gazelle-xua-actors-ejb</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>ejb</type>
</dependency>
<dependency>
<groupId>net.ihe.gazelle</groupId>
<artifactId>gazelle-xua-actors-war</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>war</type>
</dependency>
Dans le pom de l'ear, ajouter la dépendance vers l'ejb et ajouter ejbModule dans la configuration du plugin
<dependency>
<groupId>net.ihe.gazelle</groupId>
<artifactId>gazelle-xua-actors-ejb</artifactId>
<type>ejb</type>
</dependency>
<ejbModule>
<groupId>net.ihe.gazelle</groupId>
<artifactId>gazelle-xua-actors-ejb</artifactId>
<uri>gazelle-xua-actors-ejb.jar</uri>
</ejbModule>
Dans le pom de l'ejb, ajouter la dépendance
<!-- WS Trust integration -->
<dependency>
<groupId>net.ihe.gazelle</groupId>
<artifactId>gazelle-xua-actors-ejb</artifactId>
<type>ejb</type>
</dependency>
Dans le pom du war
<dependency>
<groupId>net.ihe.gazelle</groupId>
<artifactId>gazelle-xua-actors-war</artifactId>
<type>war</type>
</dependency>
Dans EJB/resources/META-INF/persistence.xml
<jar-file>gazelle-xua-actors-ejb.jar</jar-file>
Dans EJB/resources/META-INF/hibernate.cfg.xml
<mapping class="net.ihe.gazelle.xua.model.PicketLinkCredentials"/>
<mapping class="net.ihe.gazelle.xua.model.XServiceProviderLog"/>
Pour que les assertions soient validées lorsque le web service reçoit le message,
Ajouter l'annotation @HandlerChain à la classe déjà annotée @WebService
@HandlerChain(file = "soap-handler.xml")
Créez le fichier soap-handler.xml dans EJB/src/main/resources/nomDuPackageDeLaClassWebService
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<javaee:handler-chains
xmlns:javaee="http://java.sun.com/xml/ns/javaee">
<javaee:handler-chain>
<javaee:handler>
<javaee:handler-class>net.ihe.gazelle.simulator.common.ihewsresp.WSAddressingHandler</javaee:handler-class>
</javaee:handler>
</javaee:handler-chain>
<javaee:handler-chain>
<javaee:handler>
<javaee:handler-class>net.ihe.gazelle.xua.actors.XServiceProvider</javaee:handler-class>
</javaee:handler>
</javaee:handler-chain>
</javaee:handler-chains>
Pour envoyer des assertions dans vos messages soap:
protected Element getAssertionFromSTS(String username, String password){
Element assertion = null;
if (username != null) {
String stsUrl = PreferenceService.getString("gazelle_sts_url");
String appliesToUrl = PreferenceService.getString("sts_default_audience_url");
XServiceUser xServiceUser = new XServiceUser(stsUrl);
assertion = xServiceUser.getAssertionForCredentials(username, password, appliesToUrl);
}
return assertion;
}
protected void appendAssertionToSoapHeader(SOAPMessage msg, Element assertion){
try {
XServiceUser.appendAssertionToSoapHeader(msg, assertion);
}catch (SOAPException e){
// nothing to log here
}
}
Il vous faudra également une préférence: gazelle_sts_url (par défaut: https://gazelle.ihe.net/picketlink-sts) et une préférence sts_default_audience_url (les assertions ne sont valides pour picketlink que si AppliesTo/EndpointReference/address = http://ihe.connectathon.XUA/X-ServiceProvider-IHE-Connectathon)
Si vous voulez que l'utilisateur choisisse son assertion, la classe PicketLinkCredentials permet de stocker les credentials utilisables. Le script cmn_picketlink_credentials permet d'importer toutes celles connues par notre picketlink.