aboutsummaryrefslogtreecommitdiff
path: root/id/server/idserverlib/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/idserverlib/src/main/java')
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java4
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/EHvdAttributeProviderPlugin.java39
2 files changed, 30 insertions, 13 deletions
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java
index 5f46153af..7342a45aa 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java
@@ -225,8 +225,8 @@ public class AttributeCollector implements IAction {
else
blob = authnResponse.getStorkAuthnResponse().getTokenSaml();
- context.put("SAMLResponse", PEPSUtil.encodeSAMLToken(blob).getBytes());
- Logger.debug("SAMLResponse original: " + new String(blob).getBytes());
+ context.put("SAMLResponse", PEPSUtil.encodeSAMLToken(blob));
+ Logger.debug("SAMLResponse original: " + new String(blob));
Logger.debug("Putting assertion consumer url as action: " + authnRequest.getAssertionConsumerServiceURL());
context.put("action", authnRequest.getAssertionConsumerServiceURL());
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/EHvdAttributeProviderPlugin.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/EHvdAttributeProviderPlugin.java
index 4404af4e3..f97d8c804 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/EHvdAttributeProviderPlugin.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/EHvdAttributeProviderPlugin.java
@@ -8,6 +8,7 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
@@ -27,6 +28,7 @@ import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import at.gv.egovernment.moa.id.auth.builder.BPKBuilder;
import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;
import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
@@ -61,7 +63,7 @@ public class EHvdAttributeProviderPlugin implements AttributeProvider {
ExternalAttributeRequestRequiredException, MOAIDException {
// break when we cannot handle the requested attribute
- if(!attributes.getFriendlyName().equals("isHCP"))
+ if(!attributes.getName().equals("isHealthCareProfessional"))
throw new UnsupportedAttributeException();
try {
@@ -95,8 +97,9 @@ public class EHvdAttributeProviderPlugin implements AttributeProvider {
// SOAP Body
SOAPBody requestBody = envelope.getBody();
SOAPElement requestBodyElem = requestBody.addChildElement("IsHealthcareProfessional");
+ requestBodyElem.addAttribute(new QName("xmlns"), "http://gesundheit.gv.at/BAGDAD/DataAccessService");
SOAPElement requestBodyElem1 = requestBodyElem.addChildElement("bPK");
- requestBodyElem1.addTextNode(moasession.getIdentityLink().getIdentificationValue());
+ requestBodyElem1.addTextNode(new BPKBuilder().buildBPK(moasession.getIdentityLink().getIdentificationValue(), "GH"));
requestMessage.saveChanges();
@@ -154,26 +157,34 @@ public class EHvdAttributeProviderPlugin implements AttributeProvider {
if (collection.get("IsHealthcareProfessional").equals("false")) {
// the citizen is no HCP
- acquiredAttribute = new PersonalAttribute("isHCP", false, new ArrayList<String>(), "NotAvailable");
+ acquiredAttribute = new PersonalAttribute("isHealthCareProfessional", false, new ArrayList<String>(), "NotAvailable");
} else {
// go on and parse the data
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+
+ // create the root element
+ Element root = doc.createElement("isHealthCareProfessional");
+ doc.appendChild(root);
Element orgname = doc.createElement("nameOfOrganisation");
- orgname.appendChild(doc.createTextNode(collection.get("NameOfOrganization")));
- doc.appendChild(orgname);
+ orgname.appendChild(doc.createTextNode(collection.get("NameOfOrganisation")));
+ root.appendChild(orgname);
Element type = doc.createElement("HCP");
// TODO fix value mapping
- if (collection.get("Type").equals("Medical Doctors"))
+ if (collection.get("Type").equals("Medical doctor"))
type.appendChild(doc.createTextNode("D"));
- doc.appendChild(type);
+ root.appendChild(type);
Element specialization = doc.createElement("specialisation");
- // TODO fix value mapping
- specialization.appendChild(doc.createTextNode(collection.get("Specialization").substring(0, 2)));
- doc.appendChild(specialization);
+ if (collection.get("Specialization").contains("Arzt für Allgemeinmedizin"))
+ specialization.appendChild(doc.createTextNode("GP"));
+ root.appendChild(specialization);
+
+ Element aqaa = doc.createElement("AQAA");
+ aqaa.appendChild(doc.createTextNode("4"));
+ root.appendChild(aqaa);
// get string from dom tree
Source source = new DOMSource(doc);
@@ -187,12 +198,18 @@ public class EHvdAttributeProviderPlugin implements AttributeProvider {
ArrayList<String> value = new ArrayList<String>();
value.add(out.toString());
- acquiredAttribute = new PersonalAttribute("isHCP", false, value, "Available");
+ acquiredAttribute = new PersonalAttribute("isHealthCareProfessional", false, value, "Available");
}
// pack and return the result
PersonalAttributeList result = new PersonalAttributeList();
result.add(acquiredAttribute);
+
+ // add stork id for verification
+ ArrayList<String> value = new ArrayList<String>();
+ value.add(new BPKBuilder().buildStorkbPK(moasession.getIdentityLink().getIdentificationValue(), "IT"));
+ result.add(new PersonalAttribute("eIdentifier", false, value, "Available"));
+
return result;
} catch (Exception e) {