aboutsummaryrefslogtreecommitdiff
path: root/id/server/idserverlib/src
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/idserverlib/src')
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/SignedDocAttributeRequestProvider.java104
1 files changed, 57 insertions, 47 deletions
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/SignedDocAttributeRequestProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/SignedDocAttributeRequestProvider.java
index 42ef11758..ae10cc1c8 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/SignedDocAttributeRequestProvider.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/SignedDocAttributeRequestProvider.java
@@ -132,7 +132,15 @@ public class SignedDocAttributeRequestProvider extends AttributeProvider {
dssId = docId;
if (dssId != null && data!=null)
{
- if(updateDocumentInDtl(data, docId, signResponseString))
+ boolean success = false;
+ try{
+ success = updateDocumentInDtl(data, docId, signResponseString);
+ }catch(Exception e){//No document service used?
+ Logger.info("No document service used?");
+ e.printStackTrace();
+ success = false;
+ }
+ if(success)
{
// set the url in the SignResponse
DocumentWithSignature documentWithSignature = new DocumentWithSignature();
@@ -165,7 +173,12 @@ public class SignedDocAttributeRequestProvider extends AttributeProvider {
IOUtils.copy(istr, writer, "UTF-8");
signResponseString = writer.toString();
Logger.info("SignResponse overwritten:"+signResponseString);
- }
+ }
+ else
+ {
+ //No document service used?
+ // do nothing....
+ }
}
else
throw new Exception("No DSS id found.");
@@ -221,6 +234,7 @@ public class SignedDocAttributeRequestProvider extends AttributeProvider {
//Parse SignRequest
String signRequestString = requestedAttribute.getValue().get(0);
+ Logger.debug("performRedirect, signrequest:"+signRequestString);
Source signDoc = new StreamSource(new java.io.StringReader(signRequestString));
SignRequest signRequest = ApiUtils.unmarshal(signDoc, SignRequest.class);
try{
@@ -228,50 +242,46 @@ public class SignedDocAttributeRequestProvider extends AttributeProvider {
String dtlURL = getDtlUrlFromRequest(signRequest);
String docId = signRequest.getDocUI();
- String docRequest = getDocTransferRequest(docId, dtlURL);//dtlUrl
- //Start - code to be removed
-// System.out.println("SAML Engine vidp init");
-// final STORKSAMLEngine engine = STORKSAMLEngine.getInstance("VIDP");
-// final byte[] samlToken = UrlBase64.decode(docRequest);
-// final STORKAttrQueryRequest request= engine.validateSTORKAttrQueryRequest(samlToken);
-// final IPersonalAttributeList pal = request.getPersonalAttributeList();
-// final PersonalAttribute sdoc = pal.get("docRequest");
-// if (sdoc != null)
-// {
-// String docId1 = sdoc.getValue().get(0);
-// System.out.println("docId1:"+docId1);
-// }
- //End - code to be removed
-
- byte[] data = getDocumentFromDtl(docRequest, dtlURL);//dtlUrl
- //load doc from DTL
- Logger.debug("data:"+data);
- String mime = getDocumentMimeFromDtl(docId, dtlURL);//dtlUrl
- Logger.debug("mime:"+mime);
- //add doc as base64* to signrequest => post doc to oasis
- try{
- List<IncludeObject> includeObjects = ApiUtils.findNamedElement(
- signRequest.getOptionalInputs(), "IncludeObject",
- IncludeObject.class);
- signRequest.getOptionalInputs().getAny().removeAll(includeObjects);
-
- DocumentType document = new DocumentType();
- Base64Data b64data = new Base64Data();
- b64data.setValue(data);
- b64data.setMimeType(mime);
- document.setBase64Data(b64data);
- signRequest.setInputDocuments(ApiUtils.createInputDocuments(document));
- //override old signRequestString
-
- InputStream istr = ApiUtils.marshalToInputStream(signRequest);
- StringWriter writer = new StringWriter();
- IOUtils.copy(istr, writer, "UTF-8");
- signRequestString = writer.toString();
- Logger.info("Signrequest overwritten");
- } catch (Exception e) {
- e.printStackTrace();
- throw new Exception("Could not marshall sign request", e);
- }
+ if(dtlURL!=null)
+ {
+ String docRequest = getDocTransferRequest(docId, dtlURL);//dtlUrl
+
+ byte[] data = getDocumentFromDtl(docRequest, dtlURL);//dtlUrl
+
+ //load doc from DTL
+ Logger.debug("data:"+data);
+ String mime = getDocumentMimeFromDtl(docId, dtlURL);//dtlUrl
+ Logger.debug("mime:"+mime);
+
+ //add doc as base64* to signrequest => post doc to oasis
+ try{
+ List<IncludeObject> includeObjects = ApiUtils.findNamedElement(
+ signRequest.getOptionalInputs(), "IncludeObject",
+ IncludeObject.class);
+ signRequest.getOptionalInputs().getAny().removeAll(includeObjects);
+
+ DocumentType document = new DocumentType();
+ Base64Data b64data = new Base64Data();
+ b64data.setValue(data);
+ b64data.setMimeType(mime);
+ document.setBase64Data(b64data);
+ signRequest.setInputDocuments(ApiUtils.createInputDocuments(document));
+ //override old signRequestString
+
+ InputStream istr = ApiUtils.marshalToInputStream(signRequest);
+ StringWriter writer = new StringWriter();
+ IOUtils.copy(istr, writer, "UTF-8");
+ signRequestString = writer.toString();
+ Logger.info("Signrequest overwritten");
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new Exception("Could not marshall sign request", e);
+ }
+ }
+ else//Do not modify signRequest, document is already included
+ {
+
+ }
}catch(Exception e)
{
Logger.info("No documentservice used?");
@@ -329,7 +339,7 @@ public class SignedDocAttributeRequestProvider extends AttributeProvider {
if (document.getDocumentURL() != null)
return document.getDocumentURL();
else
- throw new Exception("No document url found");
+ return null;//throw new Exception("No document url found");
}
else
throw new Exception("No input document found");