diff options
2 files changed, 52 insertions, 19 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java index 5e4aee81b..43384c58a 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java @@ -1652,6 +1652,8 @@ public class AuthenticationServer implements MOAIDAuthConstants {  				data.setFamilyname(PEPSFamilyname);  				data.setFirstname(PEPSFirstname);  				data.setIdentifier(PEPSIdentifier); +				 +				data.setFiscalNumber(PEPSFiscalNumber);  				data.setRepresentative(representative);  				data.setRepresented(represented); diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java index 4cd192070..1be31ded9 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java @@ -285,28 +285,41 @@ public class PEPSConnectorServlet extends AuthServlet {  				SignResponse dssSignResponse = (SignResponse) ApiUtils.unmarshal(new StreamSource(new java.io.StringReader(signatureInfo)));
  				// fetch signed doc
 -				DataSource ds = LightweightSourceResolver.getDataSource(dssSignResponse);
 +				DataSource ds = null;
 +				try{
 +					ds = LightweightSourceResolver.getDataSource(dssSignResponse);
 +				}catch(Exception e)
 +				{
 +					e.printStackTrace();
 +				}
  				if(ds == null){
 -					throw new ApiUtilsException("No datasource found in response");
 -				}				
 -				
 -				InputStream incoming  = ds.getInputStream();
 -				citizenSignature = IOUtils.toString(incoming);
 -				incoming.close();
 -				
 -				Logger.debug("citizenSignature:"+citizenSignature);
 -				if(isDocumentServiceUsed(citizenSignature)==true)
 +					//Normal DocumentServices return a http-page, but the SI DocumentService returns HTTP error 500 
 +					//which results in an exception and ds==null
 +					
 +					//try to load document from documentservice
 +					citizenSignature = loadDocumentFromDocumentService(dssSignResponse);
 +					//throw new ApiUtilsException("No datasource found in response");
 +				}		
 +				else
  				{
 -					Logger.debug("Loading document from DocumentService.");
 -					String url = getDtlUrlFromResponse(dssSignResponse);
 -					//get Transferrequest
 -					String transferRequest = getDocTransferRequest(dssSignResponse.getDocUI(), url);
 -					//Load document from DocujmentService
 -					byte[] data = getDocumentFromDtl(transferRequest, url);
 -					citizenSignature = new String(data, "UTF-8");
 -					Logger.debug("Overridung citizenSignature with:"+citizenSignature);
 +					InputStream incoming  = ds.getInputStream();
 +					citizenSignature = IOUtils.toString(incoming);
 +					incoming.close();
 +					
 +					Logger.debug("citizenSignature:"+citizenSignature);
 +					if(isDocumentServiceUsed(citizenSignature)==true)
 +					{
 +						citizenSignature = loadDocumentFromDocumentService(dssSignResponse);
 +	//					Logger.debug("Loading document from DocumentService.");
 +	//					String url = getDtlUrlFromResponse(dssSignResponse);
 +	//					//get Transferrequest
 +	//					String transferRequest = getDocTransferRequest(dssSignResponse.getDocUI(), url);
 +	//					//Load document from DocumentService
 +	//					byte[] data = getDocumentFromDtl(transferRequest, url);
 +	//					citizenSignature = new String(data, "UTF-8");
 +	//					Logger.debug("Overridung citizenSignature with:"+citizenSignature);
 +					}
  				}
 -				
  				JAXBContext ctx = JAXBContext.newInstance(SignatureType.class.getPackage().getName());
  				SignatureType root = ((JAXBElement<SignatureType>) ctx.createUnmarshaller().unmarshal(IOUtils.toInputStream(citizenSignature))).getValue();
 @@ -473,11 +486,28 @@ public class PEPSConnectorServlet extends AuthServlet {  	}
 +	private String loadDocumentFromDocumentService(SignResponse dssSignResponse) throws Exception
 +	{ 
 +		Logger.debug("Loading document from DocumentService.");
 +		String url = getDtlUrlFromResponse(dssSignResponse);
 +		Logger.debug("Loading document from DocumentService, url:"+url);
 +		//get Transferrequest
 +		String transferRequest = getDocTransferRequest(dssSignResponse.getDocUI(), url);
 +		//Load document from DocumentService
 +		byte[] data = getDocumentFromDtl(transferRequest, url);
 +		String citizenSignature = new String(data, "UTF-8");
 +		Logger.debug("Overridung citizenSignature with:"+citizenSignature);
 +		return citizenSignature;
 +	}
  	private boolean isDocumentServiceUsed(String citizenSignature) //TODo add better check
  	{
  		if(citizenSignature.contains("<table border=\"0\"><tr><td>Service Name:</td><td>{http://stork.eu}DocumentService</td></tr><tr><td>Port Name:</td><td>{http://stork.eu}DocumentServicePort</td></tr></table>"))
 +		{
 +			Logger.trace("isDocumentServiceUsed => true");
  			return true;
 +		}
 +		Logger.trace("isDocumentServiceUsed => false");
  		return false;
  	}
 @@ -514,6 +544,7 @@ public class PEPSConnectorServlet extends AuthServlet {    		URL url = null;
  		try 
  		{
 +			Logger.debug("getDocumentFromDtl, dtlUrl:'"+dtlUrl+"' eDtlUrl:'"+eDtlUrl+"'");
  			url = new URL(dtlUrl);
  			QName qname = new QName("http://stork.eu",
  				    "DocumentService");
 | 
