summaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/util/client/szr
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/util/client/szr')
-rw-r--r--src/main/java/at/gv/util/client/szr/IRoleGenerationStrategy.java15
-rw-r--r--src/main/java/at/gv/util/client/szr/PVP2XHTTPHeaderHandler.java188
-rw-r--r--src/main/java/at/gv/util/client/szr/SZRClient.java3
-rw-r--r--src/main/java/at/gv/util/client/szr/SZRSOAPHandler.java120
4 files changed, 2 insertions, 324 deletions
diff --git a/src/main/java/at/gv/util/client/szr/IRoleGenerationStrategy.java b/src/main/java/at/gv/util/client/szr/IRoleGenerationStrategy.java
deleted file mode 100644
index d411f21..0000000
--- a/src/main/java/at/gv/util/client/szr/IRoleGenerationStrategy.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package at.gv.util.client.szr;
-
-import at.gv.util.ex.EgovUtilException;
-
-public interface IRoleGenerationStrategy {
-
- /**
- * Generates a request specific role string
- * @param roleString Role from configuration
- *
- * @return Dynamic generated role
- * @throws EgovUtilException
- */
- public String generateRoleString(String roleString) throws EgovUtilException;
-}
diff --git a/src/main/java/at/gv/util/client/szr/PVP2XHTTPHeaderHandler.java b/src/main/java/at/gv/util/client/szr/PVP2XHTTPHeaderHandler.java
deleted file mode 100644
index f4fc11b..0000000
--- a/src/main/java/at/gv/util/client/szr/PVP2XHTTPHeaderHandler.java
+++ /dev/null
@@ -1,188 +0,0 @@
-package at.gv.util.client.szr;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.xml.namespace.QName;
-import javax.xml.ws.handler.MessageContext;
-import javax.xml.ws.handler.soap.SOAPHandler;
-import javax.xml.ws.handler.soap.SOAPMessageContext;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.cxf.message.Message;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import at.gv.util.MiscUtil;
-import at.gv.util.ex.EgovUtilException;
-import at.gv.util.xsd.szr.pvp.Param;
-import at.gv.util.xsd.szr.pvp.PvpTokenType;
-import at.gv.util.xsd.szr.pvp.PvpTokenType.Accounting;
-import at.gv.util.xsd.szr.pvp.PvpTokenType.Accounting.GvCostCenterId;
-import at.gv.util.xsd.szr.pvp.Role;
-
-public class PVP2XHTTPHeaderHandler implements SOAPHandler<SOAPMessageContext> {
-
- private PvpTokenType pvpTokenType = null;
-
- private Logger log = LoggerFactory.getLogger(PVP2XHTTPHeaderHandler.class);
-
- public static final String PVP_HEADER_COSTCENTERID_DEFAULT = "<default>";
- public static final String PVP_HEADER_VALUE_DELIMITER = ",";
- public static final String PVP_HEADER_ROLE_VALUE_DELIMITER = ";";
-
- private IRoleGenerationStrategy roleStrategy = null;
-
- public PVP2XHTTPHeaderHandler() {
-
- }
-
- public PVP2XHTTPHeaderHandler(IRoleGenerationStrategy roleGenerationStrategy) {
- log.info("PVP2XHTTPHeaderHandler uses RoleGenerationStrategy: " + roleGenerationStrategy.getClass().getName());
- this.roleStrategy = roleGenerationStrategy;
-
- }
-
- public void close(MessageContext arg0) {
- }
-
-
- public boolean handleFault(SOAPMessageContext arg0) {
- return true;
- }
-
- public void configure(PvpTokenType pvpToken) {
- MiscUtil.assertNotNull(pvpToken, "pvpToken");
- this.pvpTokenType = pvpToken;
- }
-
-
- public boolean handleMessage(SOAPMessageContext smc) {
- log.trace("Initializing SZR SOAP message handler.");
-
- boolean isOutMessage = ((Boolean) smc.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY)).booleanValue();
- log.trace("Outbound message: " + isOutMessage);
- if (pvpTokenType == null) {
- throw new NullPointerException("Please configure first the PVP token.");
- }
-
- if (!isOutMessage) {
- return true;
- }
- Map<String, List> headers = (Map<String, List>) smc.get(Message.PROTOCOL_HEADERS);
- //PVP 2.x header
- //setHeader(headers, "X-PVP-VERSION", pvpTokenType.getVersion());
- setHeader(headers, "X-PVP-EGOVTOKEN-VERSION", pvpTokenType.getVersion());
- setHeader(headers, "X-PVP-USERID", pvpTokenType.getAuthenticate().getUserPrincipal().getUserId());
- setHeader(headers, "X-PVP-GID", pvpTokenType.getAuthenticate().getUserPrincipal().getGvGid());
- setHeader(headers, "X-PVP-PARTICIPANT-ID", pvpTokenType.getAuthenticate().getParticipantId());
- setHeader(headers, "X-PVP-OU-GV-OU-ID", pvpTokenType.getAuthenticate().getUserPrincipal().getGvOuId());
- setHeader(headers, "X-PVP-OU", pvpTokenType.getAuthenticate().getUserPrincipal().getOu());
- setHeader(headers, "X-PVP-FUNCTION", pvpTokenType.getAuthenticate().getUserPrincipal().getGvFunction());
- setHeader(headers, "X-PVP-SECCLASS", String.valueOf(pvpTokenType.getAuthenticate().getUserPrincipal().getGvSecClass().intValue()));
- setHeader(headers, "X-PVP-PRINCIPAL-NAME", pvpTokenType.getAuthenticate().getUserPrincipal().getCn());
- setHeader(headers, "X-PVP-BINDING", "http");
- setHeader(headers, "X-PVP-OU-OKZ", "AT:OVS");
-
-
- //PVP 1.x header
- //setHeader(headers, "X-VERSION", pvpTokenType.getVersion());
- setHeader(headers, "X-VERSION", "1.8");
- setHeader(headers, "X-AUTHENTICATE-UserID", pvpTokenType.getAuthenticate().getUserPrincipal().getUserId());
- setHeader(headers, "X-AUTHENTICATE-GVGID", pvpTokenType.getAuthenticate().getUserPrincipal().getGvGid());
- setHeader(headers, "X-AUTHENTICATE-PARTICIPANTID", pvpTokenType.getAuthenticate().getParticipantId());
- setHeader(headers, "X-AUTHENTICATE-GVOUID", pvpTokenType.getAuthenticate().getUserPrincipal().getGvOuId());
- setHeader(headers, "X-AUTHENTICATE-OU", pvpTokenType.getAuthenticate().getUserPrincipal().getOu());
- setHeader(headers, "X-AUTHENTICATE-GVFUNCTION", pvpTokenType.getAuthenticate().getUserPrincipal().getGvFunction());
- setHeader(headers, "X-AUTHENTICATE-gvSecClass", String.valueOf(pvpTokenType.getAuthenticate().getUserPrincipal().getGvSecClass().intValue()));
- setHeader(headers, "X-AUTHENTICATE-cn",pvpTokenType.getAuthenticate().getUserPrincipal().getCn());
-
- //set roles attribute
- String roleString = null;
- List<Role> roles = pvpTokenType.getAuthorize().getRole();
- if (roles != null && !roles.isEmpty()) {
- for (Role role : roles) {
- String roleElement = role.getValue();
- List<Param> roleParams = role.getParam();
- if (roleParams != null && !roleParams.isEmpty()) {
- roleElement = roleElement + "(";
- for (Param el : roleParams) {
- roleElement = roleElement + el.getKey() + "=" + el.getValue() + PVP_HEADER_VALUE_DELIMITER;
-
- }
- roleElement = roleElement.substring(0, roleElement.length()-1) + ")";
- }
-
- if (roleString == null)
- roleString = roleElement;
- else
- roleString = roleString + PVP_HEADER_ROLE_VALUE_DELIMITER + roleElement;
- }
- }
-
- if (roleStrategy != null) {
- log.trace("Generate dynamic role ... ");
- try {
- String dynRoleString = roleStrategy.generateRoleString(roleString);
- setHeader(headers, "X-PVP-ROLES", dynRoleString);
- setHeader(headers, "X-AUTHORIZE-ROLES", dynRoleString);
-
- } catch (EgovUtilException e) {
- throw new RuntimeException("Can NOT generate dynamic VDDS role by using: " + roleStrategy.getClass().getName(), e);
-
- }
-
- }
-
-
-
-
-
- //set optional headers
- String costCenterId = StringUtils.EMPTY;
- String invoiceRecptId = StringUtils.EMPTY;
-
- Accounting accounting = pvpTokenType.getAccounting();
- if (accounting != null) {
- invoiceRecptId = accounting.getInvoiceRecptId();
- if (accounting.getGvCostCenterId() != null && !accounting.getGvCostCenterId().isEmpty()) {
- for (GvCostCenterId el : accounting.getGvCostCenterId()) {
- String value = StringUtils.EMPTY;
- if (el.isDefault())
- value = PVP_HEADER_COSTCENTERID_DEFAULT;
-
- value = value + el.getValue();
-
- if (costCenterId.isEmpty())
- costCenterId = value;
- else
- costCenterId = PVP_HEADER_VALUE_DELIMITER + value;
-
- }
- }
- }
-
- setHeader(headers, "X-PVP-COST-CENTER-ID", costCenterId);
- setHeader(headers, "X-PVP-INVOICE-RECPT-ID", invoiceRecptId);
-
- setHeader(headers, "X-ACCOUNTING-CostCenterId", costCenterId);
- setHeader(headers, "X-ACCOUNTING-InvoiceRecptId", invoiceRecptId);
-
- return true;
-
-
- }
-
- public Set<QName> getHeaders() {
- return null;
- }
- private void setHeader(Map<String, List> headers, String name, String value) {
- if (MiscUtil.isEmpty(value))
- headers.put(name, Collections.singletonList(StringUtils.EMPTY));
- else
- headers.put(name, Collections.singletonList(value));
-
- }
-
-}
diff --git a/src/main/java/at/gv/util/client/szr/SZRClient.java b/src/main/java/at/gv/util/client/szr/SZRClient.java
index 67813bd..e6fb31f 100644
--- a/src/main/java/at/gv/util/client/szr/SZRClient.java
+++ b/src/main/java/at/gv/util/client/szr/SZRClient.java
@@ -24,6 +24,7 @@ import org.slf4j.LoggerFactory;
import at.gv.util.LaxHostNameVerifier;
import at.gv.util.LoggingHandler;
import at.gv.util.MiscUtil;
+import at.gv.util.client.pvp.rprofile.Pvp18pSoapHandler;
import at.gv.util.config.EgovUtilConfiguration;
import at.gv.util.ex.EgovUtilException;
import at.gv.util.wsdl.szr.SZR;
@@ -180,7 +181,7 @@ public class SZRClient {
log.trace("Adding WS-Security Header handler.");
PvpTokenType pvpToken = config.getPVPToken();
- SZRSOAPHandler szrSOAPHandler = new SZRSOAPHandler();
+ Pvp18pSoapHandler szrSOAPHandler = new Pvp18pSoapHandler();
szrSOAPHandler.configure(pvpToken);
handlerList.add(szrSOAPHandler);
bindingProvider.getBinding().setHandlerChain(handlerList);
diff --git a/src/main/java/at/gv/util/client/szr/SZRSOAPHandler.java b/src/main/java/at/gv/util/client/szr/SZRSOAPHandler.java
deleted file mode 100644
index 0441bd5..0000000
--- a/src/main/java/at/gv/util/client/szr/SZRSOAPHandler.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package at.gv.util.client.szr;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.Set;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.namespace.QName;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPEnvelope;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPFactory;
-import javax.xml.soap.SOAPHeader;
-import javax.xml.soap.SOAPMessage;
-import javax.xml.ws.handler.MessageContext;
-import javax.xml.ws.handler.soap.SOAPHandler;
-import javax.xml.ws.handler.soap.SOAPMessageContext;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-
-import at.gv.util.DOMUtils;
-import at.gv.util.MiscUtil;
-import at.gv.util.xsd.szr.pvp.ObjectFactory;
-import at.gv.util.xsd.szr.pvp.PvpTokenType;
-
-public class SZRSOAPHandler implements SOAPHandler<SOAPMessageContext> {
-
- private static final String AUTH_NS = "http://schemas.xmlsoap.org/ws/2002/04/secext";
- private static final String AUTH_PREFIX="wss";
-
- private PvpTokenType pvpTokenType = null;
-
- private Logger log = LoggerFactory.getLogger(SZRSOAPHandler.class);
-
-
- public void close(MessageContext arg0) {
- }
-
-
- public boolean handleFault(SOAPMessageContext arg0) {
- return true;
- }
-
- public void configure(PvpTokenType pvpToken) {
- MiscUtil.assertNotNull(pvpToken, "pvpToken");
- this.pvpTokenType = pvpToken;
- }
-
-
- public boolean handleMessage(SOAPMessageContext smc) {
- log.trace("Initializing SZR SOAP message handler.");
-
- boolean isOutMessage = ((Boolean) smc.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY)).booleanValue();
- log.trace("Outbound message: " + isOutMessage);
- if (pvpTokenType == null) {
- throw new NullPointerException("Please configure first the PVP token.");
- }
-
- if (!isOutMessage) {
- return true;
- }
- try {
- SOAPMessage message = smc.getMessage();
- SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
- SOAPFactory soapFactory = SOAPFactory.newInstance();
-
- // Creating WS-Security header element
- SOAPElement wsSecHeaderElm = soapFactory.createElement(
- "Security",
- AUTH_PREFIX,
- AUTH_NS);
-
- // serialize pvp token
- JAXBContext ctx = JAXBContext.newInstance(PvpTokenType.class);
- ObjectFactory of = new ObjectFactory();
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- ctx.createMarshaller().marshal(of.createPvpToken(pvpTokenType), bos);
- Element pvpTokenElement = DOMUtils.parseXmlNonValidating(new ByteArrayInputStream(bos.toByteArray()));
- SOAPElement pvpToken = soapFactory.createElement(pvpTokenElement);
-
- // adding elements
- wsSecHeaderElm.addChildElement(pvpToken);
- SOAPHeader header = envelope.getHeader();
- if (header == null)
- header = envelope.addHeader();
-
- header.addChildElement(wsSecHeaderElm);
-
- return true;
- } catch(SOAPException e) {
- log.warn("Cannot add WS-Security header.", e);
- return false;
- } catch (JAXBException e) {
- log.warn("Cannot add WS-Security header.", e);
- return false;
- } catch (ParserConfigurationException e) {
- log.warn("Cannot add WS-Security header.", e);
- return false;
- } catch (SAXException e) {
- log.warn("Cannot add WS-Security header.", e);
- return false;
- } catch (IOException e) {
- log.warn("Cannot add WS-Security header.", e);
- return false;
- }
-
-
- }
-
- public Set<QName> getHeaders() {
- return null;
- }
-
-}