Code Monkey home page Code Monkey logo

sikker-digital-post-klient-java's Introduction

Sikker Digital Post Klient Java

Build status Maven Central

Dokumentasjon: https://difi.github.io/sikker-digital-post-klient-java/

Om klienten

Dette er en Java-klient for sending av sikker digital post for det offentlige. Formålet er å forenkle integrasjonen som må utføres av avsendervirksomheter. For mer informasjon om sikker digital post se https://difi.github.io/felleslosninger/sdp_index_innledning.html.

Klientbiblioteket tilbyr et enkelt grensesnitt for å generere og sende digital post, samt hente og bekrefte kvitteringer. Det er også mulig å bruke det på et lavere nivå til f.eks. opprettelse av dokumentpakke.

For å starte sending av digital post må:

  • Avsender må være registrert hos Meldingsformidler
  • Avsender må være registrert hos postkassene
  • Avsender må ha et gyldig virksomhetssertifikat

Mottaker av digital post må slås opp i kontaktregisteret. Dette håndteres ikke av klienten.

sikker-digital-post-klient-java's People

Contributors

aknutsen avatar asjafjell avatar dependabot[bot] avatar eivinhb avatar eoftedal avatar fredrikbach avatar frodebjerkholt avatar froden avatar hntv avatar johnksv avatar kagkarlsson avatar klakegg avatar kristianenge avatar landro avatar lillesand avatar marnormic avatar mhoel avatar post-svejk avatar rocketfarmsteinar avatar runeflobakk avatar sindrebn avatar stureforre avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sikker-digital-post-klient-java's Issues

Feil signatur på AsicE

We are no longer able to send messages due to "Feil signatur på AsicE" error.

Message gets sent successfully
sikkerDigitalPostKlient.send(forsendelse);
but when we try to retrieve the receipt

KvitteringForespoersel kvitteringForespoersel = KvitteringForespoersel.builder(Prioritet.NORMAL).mpcId("XXX").build();
            ForretningsKvittering forretningsKvittering = sikkerDigitalPostKlient.hentKvittering(kvitteringForespoersel);

we get an error that the message hasn't been delivered:

Feil{konversasjonsId=XXXXXX, feiltype=KLIENT, detaljer='Feil signatur på AsicE'}

What might be the cause of this problem? This is in production environment.

Tilgang til opprinnelig Forretningskvittering: toString metodene gir ikke ut opprinnelig XML knyttet til en melding

Avsendere har behov for enkel tilgang til de opprinnelige Forretningskvitteringene de mottar fra Postkassen. Dette for å kunne lagre/arkivere dette elementet med signaturer.

dette er blant annet knyttet til følgende forbedringsønske: difi/begrep-SikkerDigitalPost#132
og Avsenders behov for å holde juridiske logger.

Det må legges til en den abstrakte API klassen: https://github.com/difi/sikker-digital-post-java-klient/blob/master/src/main/java/no/difi/sdp/client/domain/kvittering/ForretningsKvittering.java eventuelt at toString metodene oppdateres til å levere ut XML meldingen fra postkassen urørt.

Truststore

Vi holder på å teste i produksjon:
Der får vi følgende feil:
2015-03-30 12:06:02,266 [qtp904144151-21] INFO mf.logger.translog - [sender] [984661185] UTGÅENDE PULLREQUEST mpc:[urn:norma
l:svarut] conversationId:[] instanceId:[] messageId:[44576edb-09c5-42dc-9479-fa692ccc1beb]
2015-03-30 12:06:02,384 [qtp904144151-21] WARN mf.logger.translog - [sender] [984661185] SOAPFAULT fault:[PolicyNoncomplianc
e]
2015-03-30 12:06:02,389 [qtp904144151-21] INFO mf.logger.translog - [sender] [984661185] INNKOMMENDE EBMSFEIL mpc:[] convers
ationId:[] instanceId:[] messageId:[e9af2035-a48c-4070-9e33-aa564b79f0a5] error:[PolicyNoncompliance][Error during certifica
te path validation: No trusted certs found; nested exception is org.apache.wss4j.common.ext.WSSecurityException: Error during
certificate path validation: No trusted certs found]

I keystoren som privatekeyen ligger, ligger også de 4 sertifikatene fra http://begrep.difi.no/SikkerDigitalPost/1.2.0/sikkerhet/sertifikater/prod/

keytool -list
Keystore type: JKS
Keystore provider: SUN

Your keystore contains 5 entries

cpnenterprisesha256class3, Mar 30, 2015, trustedCertEntry,
Certificate fingerprint (SHA1): DC:38:AC:1C:B3:2A:5F:85:08:14:09:89:98:DA:D1:35:83:16:F4:86
bpclass3rootca, Mar 30, 2015, trustedCertEntry,
Certificate fingerprint (SHA1): DA:FA:F7:FA:66:84:EC:06:8F:14:50:BD:C7:C2:81:A5:BC:A9:64:57
bpclass3ca3, Mar 30, 2015, trustedCertEntry,
Certificate fingerprint (SHA1): D0:81:06:63:49:77:CA:EA:F2:16:45:BD:09:5D:CD:0D:E6:4C:F8:08
cpnrootcasha256class3, Mar 30, 2015, trustedCertEntry,
Certificate fingerprint (SHA1): E7:47:8C:EA:79:5C:B6:AB:AA:1E:8B:AE:B5:08:A0:58:B4:8B:57:49
ks, Mar 25, 2015, PrivateKeyEntry,
Certificate fingerprint (SHA1): A2:E9:C8:41:0A:D8:07:8E:70:E7:06:CD:E4:04:90:4B:24:75:32:61

Bygging av ASIC feiler ved whitespace eller spesialbokstaver i filnavn

Hei

Bygging av ASIC feiler ved whitespace eller spesialbokstaver i filnavn.

Dette pga ASIC bruker filnavn som URI.

Burde kunne løses ved å URI-encode filnavnet.

Mvh Steinar

no.difi.sdp.webclient.service.MessageService$MessageServiceException: java.lang.IllegalArgumentException: Illegal character in path at index 5: space space.pdf
at no.difi.sdp.webclient.service.MessageService.sendMessageToMeldingsformidler(MessageService.java:285)
at no.difi.sdp.webclient.service.MessageService.sendMessage(MessageService.java:240)
at no.difi.sdp.webclient.web.MessageController.send_message(MessageController.java:134)
at sun.reflect.GeneratedMethodAccessor212.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Illegal character in path at index 5: space space.pdf
at org.jcp.xml.dsig.internal.dom.DOMReference.(DOMReference.java:174)
at org.jcp.xml.dsig.internal.dom.DOMXMLSignatureFactory.newReference(DOMXMLSignatureFactory.java:94)
at no.difi.sdp.client.asice.signature.CreateSignature.references(CreateSignature.java:168)
at no.difi.sdp.client.asice.signature.CreateSignature.createSignature(CreateSignature.java:115)
at no.difi.sdp.client.asice.CreateASiCE.createAsice(CreateASiCE.java:65)
at no.difi.sdp.webclient.service.MessageService.enrichMessage(MessageService.java:143)
at no.difi.sdp.webclient.service.MessageService.sendMessageToMeldingsformidler(MessageService.java:280)
... 38 more

no.difi.sdp.webclient.service.MessageService$MessageServiceException: java.lang.IllegalArgumentException: Malformed escape pair at index 18: special-character-%&.pdf
at no.difi.sdp.webclient.service.MessageService.sendMessageToMeldingsformidler(MessageService.java:285)
at no.difi.sdp.webclient.service.MessageService.sendMessage(MessageService.java:240)
at no.difi.sdp.webclient.web.MessageController.send_message(MessageController.java:134)
at sun.reflect.GeneratedMethodAccessor212.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Malformed escape pair at index 18: special-character-%&.pdf
at org.jcp.xml.dsig.internal.dom.DOMReference.(DOMReference.java:174)
at org.jcp.xml.dsig.internal.dom.DOMXMLSignatureFactory.newReference(DOMXMLSignatureFactory.java:94)
at no.difi.sdp.client.asice.signature.CreateSignature.references(CreateSignature.java:168)
at no.difi.sdp.client.asice.signature.CreateSignature.createSignature(CreateSignature.java:115)
at no.difi.sdp.client.asice.CreateASiCE.createAsice(CreateASiCE.java:65)
at no.difi.sdp.webclient.service.MessageService.enrichMessage(MessageService.java:143)
at no.difi.sdp.webclient.service.MessageService.sendMessageToMeldingsformidler(MessageService.java:280)
... 38 more

Exception har misvisende feiltekst

Har opplevd å få følgende feilmelding:

no.difi.sdp.client.domain.exceptions.SendException: An unhandled exception occured while performing request at no.difi.sdp.client.internal.DigipostMessageSenderFacade.performRequest(DigipostMessageSenderFacade.java:142) at no.difi.sdp.client.internal.DigipostMessageSenderFacade.performRequest(DigipostMessageSenderFacade.java:123) Caused by: no.difi.sdp.client.domain.exceptions.NoekkelException: Klarte ikke å verifisere signatur på responsen. Dette kan skyldes at det tiltrodde rotsertifikatet mangler i keystore/trust store. Hvis dette plutselig begynner å skje kan det skyldes at den andre parten har skiftet sertifikat at no.difi.sdp.client.internal.UserFriendlyWsSecurityExceptionMapper.resolveException(UserFriendlyWsSecurityExceptionMapper.java:27) at org.springframework.ws.soap.security.AbstractWsSecurityInterceptor.handleValidationException(AbstractWsSecurityInterceptor.java:299) Caused by: org.springframework.ws.soap.security.wss4j.Wss4jSecurityValidationException: Invalid timestamp: The security semantics of the message have expired; nested exception is org.apache.wss4j.common.ext.WSSecurityException: Invalid timestamp: The security semantics of the message have expired at no.digipost.api.interceptors.Wss4jInterceptor.validateMessage(Wss4jInterceptor.java:341) at org.springframework.ws.soap.security.AbstractWsSecurityInterceptor.handleResponse(AbstractWsSecurityInterceptor.java:243) Caused by: org.apache.wss4j.common.ext.WSSecurityException: Invalid timestamp: The security semantics of the message have expired at org.apache.wss4j.dom.validate.TimestampValidator.validate(TimestampValidator.java:62) at no.digipost.api.interceptors.Wss4jInterceptor.verifyTimestamp(Wss4jInterceptor.java:470)

NoekkelException med teksten: "Klarte ikke å verifisere signatur på responsen. Dette kan skyldes at det tiltrodde rotsertifikatet mangler i keystore/trust store. Hvis dette plutselig begynner å skje kan det skyldes at den andre parten har skiftet sertifikat", når rot årsaken er: "Invalid timestamp: The security semantics of the message have expired".

URL til meldingsformidler bør inneholde org.nummer til avsender

Vi ser at det hadde vært fordelaktig om avsender sitt org.nummer hadde vært enkelt tilgjengelig i URL'n brukt mot meldingsformidler. Dette gjør at vi enklere/raskere kan feilsøke og bruke denne informasjonen f.eks. for å begrense/skille trafikken.

forslaget er at url'n endres slik at org.nummeret legges på enden av url'n omtrent slik:

Det som må avklares er hvilket org.nummer som skal brukes. Er det Databehandler eller Behandlingsansvarlig sitt org.nummer som er best å legge på. Eventuelt begge to.
I utgangspunktet mener jeg at det skal være org.nummeret til databehandler.

eventuelt kan man vurdere noe slikt:

Problemer med bruk av klienten på java 1.6.x

Har et problem med å bruke meldingsformidlerklienten på java 1.6.X. Det fungerer utmerket med java 1.7. Av diverse årsaker er vi avhengig av å kunne benytte 1.6.x.

Får denne feilmeldingen ved bruk av 1.6.X

no.difi.sdp.client.domain.exceptions.KonfigurasjonException: Kunne ikke initialisere xml-signering
at no.difi.sdp.client.asice.signature.CreateSignature.(CreateSignature.java:97)
at no.difi.sdp.client.asice.CreateASiCE.(CreateASiCE.java:49)
at no.difi.sdp.client.internal.CreateDokumentpakke.(CreateDokumentpakke.java:35)
at no.difi.sdp.client.internal.EbmsForsendelseBuilder.(EbmsForsendelseBuilder.java:38)
at no.difi.sdp.client.SikkerDigitalPostKlient.(SikkerDigitalPostKlient.java:50)
at no.si.sdp.MeldingsformidlerClient.(MeldingsformidlerClient.java:31)
at no.si.sdp.MeldingsformidlerClient.main(MeldingsformidlerClient.java:39)
Caused by: java.security.NoSuchAlgorithmException: http://www.w3.org/2006/12/xml-c14n11 algorithm and DOM mechanism not available
at javax.xml.crypto.dsig.TransformService.getInstance(TransformService.java:153)
at org.jcp.xml.dsig.internal.dom.DOMXMLSignatureFactory.newCanonicalizationMethod(DOMXMLSignatureFactory.java:253)
at no.difi.sdp.client.asice.signature.CreateSignature.(CreateSignature.java:93)
... 6 more
Exception in thread "main" java.lang.RuntimeException: Kunne ikke initiere keystore! Kunne ikke initialisere xml-signering
at no.si.sdp.MeldingsformidlerClient.(MeldingsformidlerClient.java:34)
at no.si.sdp.MeldingsformidlerClient.main(MeldingsformidlerClient.java:39)

Problemer med flere instanser av biblioteket deployet på samme appserver

Hei.

Vi har deploya fleire instanser av vår avsender-applikasjon på samme tomcat-instans.

Instansene er satt opp med identisk konfigurasjon, men det vi ser er at kun siste instans som blir lasta som fungerer. (Undeployer vi instansen som virker vil instansen som feiler begynne å virke...)

Dei andre instansene feiler med følgende exception:
no.difi.sdp.webclient.service.MessageService$MessageServiceException: no.difi.sdp.client.domain.exceptions.EbmsException: EBMS:0103 - Security processing failed (actions mismatch)

Det kan se ut til at det i disse tilfellene blir generert ein mangelfull wss header.

Vi er usikre på om feilen er knytta til klient-biblioteket eller vår bruk av dette biblioteket.
Ser dere noen grunn til at denne feilen oppstår?

Her er eit eksempel på ein feilende request:

2014-12-01 14:13:28,029 http-bio-8080-exec-4 DEBUG org.apache.http.wire http-outgoing-2 >> "<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">env:Header<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" env:mustUnderstand="true"><wsu:Timestamp wsu:Id="TS-6697c783-5501-47a6-8dd2-f66f889622d9">wsu:Created2014-12-01T13:13:27.914Z/wsu:Createdwsu:Expires2014-12-01T13:18:27.914Z/wsu:Expires/wsu:Timestamp/wsse:Security<eb:Messaging xmlns:eb="http://docs.oasis-open.org/ebxml-msg/ebms/v3.0/ns/core/200704/" env:mustUnderstand="true"><ns6:UserMessage xmlns:ns10="http://uri.etsi.org/2918/v1.2.1#" xmlns:ns11="http://uri.etsi.org/01903/v1.3.2#" xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns3="http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader" xmlns:ns4="http://www.w3.org/2003/05/soap-envelope" xmlns:ns5="http://www.w3.org/2000/09/xmldsig#" xmlns:ns6="http://docs.oasis-open.org/ebxml-msg/ebms/v3.0/ns/core/200704/" xmlns:ns7="http://docs.oasis-open.org/ebxml-bp/ebbp-signals-2.0" xmlns:ns8="http://www.w3.org/1999/xlink" xmlns:ns9="http://begrep.difi.no/sdp/schema_v10" mpc="urn:normal:22fb6943-7e3e-4ecf-b29c-61ecab18e3c0">ns6:MessageInfons6:Timestamp2014-12-01T14:13:27.878+01:00/ns6:Timestampns6:MessageId3cd30c36-4f55-4bd5-940b-2cd6a6754219/ns6:MessageId/ns6:MessageInfons6:PartyInfons6:From<ns6:PartyId type="urn:oasis:names:tc:ebcore:partyid-type:iso6523:9908">9908:991825827/ns6:PartyIdns6:Roleurn:sdp:avsender/ns6:Role/ns6:Fromns6:To<ns6:PartyId type="urn:oasis:names:tc:ebcore:partyid-type:iso6523:9908">9908:984661185/ns6:PartyIdns6:Roleurn:sdp:meldingsformidler/ns6:Role/ns6:To/ns6:PartyInfons6:CollaborationInfons6:AgreementRefhttp://begrep.difi.no/SikkerDigitalPost/1.0/transportlag/Meldingsutveksling/FormidleDigitalPostForsendelse/ns6:AgreementRefns6:ServiceSDP/ns6:Servicens6:ActionFormidleDigitalPost/ns6:Actionns6:ConversationIda8e5566e-50ca-4f8e-b261-f23cafb93c82/ns6:ConversationId/ns6:CollaborationInfons6:PayloadInfons6:PartInfo/<ns6:PartInfo href="cid:ede073cd-e21d-4e0d-9488-452437ee19d8@meldingsformidler.sdp.difi.no">ns6:PartProperties<ns6:Property name="MimeType">application/cms/ns6:Property<ns6:Property name="Content">sdp:Dokumentpakke/ns6:Property/ns6:PartProperties/ns6:PartInfo/ns6:PayloadInfo/ns6:UserMessage/eb:Messaging/env:Header<env:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="soapBody"><ns3:StandardBusinessDocument xmlns:ns3="http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader" xmlns:ns5="http://www.w3.org/2000/09/xmldsig#" xmlns:ns9="http://begrep.difi.no/sdp/schema_v10">ns3:StandardBusinessDocumentHeaderns3:HeaderVersion1.0/ns3:HeaderVersionns3:Sender<ns3:Identifier Authority="urn:oasis:names:tc:ebcore:partyid-type:iso6523:9908">9908:991825827/ns3:Identifier/ns3:Senderns3:Receiver<ns3:Identifier Authority="urn:oasis:names:tc:ebcore:partyid-type:iso6523:9908">9908:984661185/ns3:Identifier/ns3:Receiverns3:DocumentIdentificationns3:Standardurn:no:difi:sdp:1.0/ns3:Standardns3:TypeVersion1.0/ns3:TypeVersionns3:InstanceIdentifiera8e5566e-50ca-4f8e-b261-f23cafb93c82/ns3:InstanceIdentifierns3:TypedigitalPost/ns3:Typens3:CreationDateAndTime2014-12-01T14:13:27.568+01:00/ns3:CreationDateAndTime/ns3:DocumentIdentificationns3:BusinessScopens3:Scopens3:TypeConversationId/ns3:Typens3:InstanceIdentifier46c28bb1-2e95-4884-b3ef-1f59892cb73b/ns3:InstanceIdentifierns3:Identifierurn:no:difi:sdp:1.0/ns3:Identifier/ns3:Scope/ns3:BusinessScope/ns3:StandardBusinessDocumentHeaderns9:digitalPostSaTD4/J/iL9T6vIQ5xhdxb8K4LQQPe3a2+2YCdiQxWY=Jma4WccTUWSo3RN+Hi3yCNi5Fxx/E2r2t/RhUBkBeUC6JdDrRducRhdtBEVc261qyByGqWN1acFCW3YR/7qfdHtZg/9vlr3DsGxRha3Nu+tzoWb5LagH6XbTlgQYDx1OcAHHfe8rog8BkG7DKfcPmcO+/jWHHqh2Rzk5Ov/5p1wWjw2cuU/MUF+5Ljd5xutT70x4VwunocA/ej10+kx6hKrUMFJ52/ZVITXogcyS59b7YjQmRz5AGv1VrnVUeYyWEd+xuHJWrF9err7EmkT1Qy+h25vLofd4LnHJhGa3yQxY32VVzsRQ4lLQJTB8BXUNiALzndH+LAkSWF/XhpjjyQ==MIIFOjCCBCKgAwIBAgIKGQqI22LuZ+0U6TANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQGEwJOTzEdMBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIzAhBgNVBAMMGkJ1eXBhc3MgQ2xhc3MgMyBUZXN0NCBDQSAzMB4XDTE0MDYxNjA4NTYyNloXDTE3MDYxNjIxNTkwMFowgaAxCzAJBgNVBAYTAk5PMSwwKgYDVQQKDCNESVJFS1RPUkFURVQgRk9SIEZPUlZBTFROSU5HIE9HIElLVDEhMB8GA1UECwwYU0RQIC0gbWVsZGluZ3N1dHZla3NsaW5nMSwwKgYDVQQDDCNESVJFS1RPUkFURVQgRk9SIEZPUlZBTFROSU5HIE9HIElLVDESMBAGA1UEBRMJOTkxODI1ODI3MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx6IPA2KSAkSupen5fFM1LEnW6CRqSK20wjpBnXf414W03eWUvBlw97c6k5sl2tYdn4aVb6Z9GeDaz1bLKN3XwhFGPk9PnjSIhrFJNAPnWVEBDqGqfeMrEsYdOEgM2veBZDYkhVwipjr8AesmptTRAat61q+6hCJe8UZqjXb4Mg6YKSTAHfJdthAG06weBMgVouQkTkeIIawM+QPcKQ3Wao0gIZi17V0+8xzgDu1PXr90eJ/Xjsw9t0C8Ey/3N7n3j3hplsZkjOJMBNHzbeBG/doroC6uzVURiuEn9Bc9Nk224b+7lOBZ1FvNNrJVUu5Ty3xyMDseCV7z1QTwW7wcpwIDAQABo4IBwjCCAb4wCQYDVR0TBAIwADAfBgNVHSMEGDAWgBQ/rvV4C5KjcCA1X1r69ySgUgHwQTAdBgNVHQ4EFgQU6JguiqDjkgjEGRHhzkbeKeqyWQEwDgYDVR0PAQH/BAQDAgSwMBYGA1UdIAQPMA0wCwYJYIRCARoBAAMCMIG7BgNVHR8EgbMwgbAwN6A1oDOGMWh0dHA6Ly9jcmwudGVzdDQuYnV5cGFzcy5uby9jcmwvQlBDbGFzczNUNENBMy5jcmwwdaBzoHGGb2xkYXA6Ly9sZGFwLnRlc3Q0LmJ1eXBhc3Mubm8vZGM9QnV5cGFzcyxkYz1OTyxDTj1CdXlwYXNzJTIwQ2xhc3MlMjAzJTIwVGVzdDQlMjBDQSUyMDM/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDCBigYIKwYBBQUHAQEEfjB8MDsGCCsGAQUFBzABhi9odHRwOi8vb2NzcC50ZXN0NC5idXlwYXNzLm5vL29jc3AvQlBDbGFzczNUNENBMzA9BggrBgEFBQcwAoYxaHR0cDovL2NydC50ZXN0NC5idXlwYXNzLm5vL2NydC9CUENsYXNzM1Q0Q0EzLmNlcjANBgkqhkiG9w0BAQsFAAOCAQEAKOTM1zSdGHWUBKPzDPYCcci9cpbktd2WuBg028bRC0NwKSWUKeuUfWesTiu/P4UlYGe86qd/+z3MNpN89aGA8pr0E0WpI+NM+v+Cb0dQwxHASHtrkVo9CVx6V6/QSBqIUEMfNquDHzxB2/mXbv6GuO5eIl3OSVKg7Ffd/1wdE6zeMmHQO+zRpfj+OVEhNPb5cLa13Ah9+JrMkr1O7VUFbozLQgFPhuI8/5+u8U/6cDOOmcFV4f4IYUmhbcLiW5MQnvaJ8044+uInOQTNtSkKmZAo7Jnm4KUyhFXftJOStOHSlODOQcepVS7csszO5yWQRMTV8doEsaH5p/LBXYF56Q==ns9:avsender<ns9:organisasjon authority="iso6523-actorid-upis">9908:991825827/ns9:organisasjon/ns9:avsenderns9:mottakerns9:personns9:personidentifikator05111600491/ns9:personidentifikatorns9:postkasseadressetest.testesen#0FSW/ns9:postkasseadresse/ns9:person/ns9:mottakerns9:digitalPostInfons9:aapningskvitteringfalse/ns9:aapningskvitteringns9:sikkerhetsnivaa3/ns9:sikkerhetsnivaa<ns9:ikkeSensitivTittel lang="NO">test - abr/ns9:ikkeSensitivTittelns9:varsler//ns9:digitalPostInfons9:dokumentpakkefingeravtrykk<ns5:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>ns5:DigestValuep1zRWrjaV1x1shTuuKWb6Qlef6RWNARuXBCjN5dB5cA=/ns5:DigestValue/ns9:dokumentpakkefingeravtrykk/ns9:digitalPost/ns3:StandardBusinessDocument/env:Body/env:Envelope[\r][\n]"

Noen problemer med avhengigheter

Får ikke følgende avhengigheter helt til..

    <dependency>
        <groupId>no.digipost</groupId>
        <artifactId>api-client</artifactId>
        <version>${sdp-shared.version}</version>
    </dependency>
    <dependency>
        <groupId>no.digipost</groupId>
        <artifactId>offentlig-xsd</artifactId>
        <version>${sdp-shared.version}</version>
    </dependency>
    <dependency>
        <groupId>no.digipost</groupId>
        <artifactId>api-commons</artifactId>
        <version>${sdp-shared.version}</version>
    </dependency>

Ser ikke ut til at disse blir med i builden?

Jan M. Johansen

Opprydning i API rundt ForretningsKvittering

Det er en del design-flaws i klassene rundt ForretningsKvittering og EbmsApplikasjonsKvittering.

  • metoden EbmsApplikasjonsKvittering.getKvittering() merkes som @Deprecated. Ref #26

    ForretningsKvittering bør berikes med flere API-metoder for å slippe å hente ut ForretningsKvittering.applikasjonsKvittering.getStandardBusinessDocument():

  • metode for å sjekke hva slags type det er (feil, kvittering)

  • aksess til SimpleKvittering, dersom ForretningsKvittering.erKvittering()

  • aksess til SBDFeil, dersom ForretningsKvittering.erFeil(). Lag gjerne også en egen type à la SimpleKvittering for å slippe å lekke ut JAXB-genererte typer fra APIet.

  • sjekk om ApplikasjonsKvitteringBuilder kan fjernes, ev. merkes @Deprecated

ExceptionMapper kan sjå ut til å svelge feil

Hei

Vi har ein rar feil som vi har opplevd 2 ganger no. Klienten sluttar å konsumere kvitteringar utan at det rapporteres feil.

ForretningsKvittering forretningsKvittering = postklient.hentKvittering(KvitteringForespoersel.builder(prioritet).mpcId(configurationService.getConfiguration().getMessagePartitionChannel()).build());

I den forbindelse mistenker vi at hentKvittering(...) fra Java-biblioteket svelger enkelte feilsituasjonar.

I forbindelse med dette har vi gått gjennom relevant kode også i Java-biblioteket. Det kan sjå ut som om ExceptionMapper svelger feil.

https://github.com/difi/sikker-digital-post-java-klient/blob/master/src/main/java/no/difi/sdp/client/ExceptionMapper.java

Flott om dere kan sjå på dette

Mvh Steinar

Feilmeldinger i prodmiljøet, selv om alt ser ut til å fungere fint

Hei,

Jeg får to forskjellige feil i prod-miljøet, men IKKE i verifikasjonsmiljøet. Først så trodde jeg det var pga at jeg brukte gammel klient (1.2.1), men ser nå samme oppførsel med 5.0.0.

  1. Feil ved polling av kvitteringer:

Denne oppstår hver gang applikasjonen min poller for kvitteringer og det ikke er noe der. Tidligere var feilen litt mer utfyllende og sa bl.a. "Klarte ikke å verifisere signatur på responsen. Dette kan skyldes at det tiltrodde rotsertifikatet mangler i keystore/trust store. Hvis dette plutselig begynner å skje kan det skyldes at den andre parten har skiftet sertifikat". NB: Den klarer fint å parse kvitteringer når det faktisk er noe der.

2016.12.23 16:04:11.222 INFO  mf.logger.translog - [sender] [984661185] UTGÅENDE PULLREQUEST mpc:[urn:normal] conversationId:[] instanceId:[] messageId:[30d12337-531c-4826-a41b-9a76aeddde7c]  
2016.12.23 16:04:11.380 INFO  mf.logger.translog - [sender] [984661185] INNKOMMENDE TOMKØ mpc:[urn:normal] conversationId:[] instanceId:[] messageId:[6413f16e-e19c-4dc4-b983-57c11df2f8e1] ref:[30d12337-531c-4826-a41b-9a76aeddde7c] 
2016.12.23 16:04:11.452 ERROR no.fsat.fp.sdp.HentKvittering - Caught Exception while trying to fetch receipt
no.difi.sdp.client2.domain.exceptions.SendException: An unhandled exception occured while performing request
        at no.difi.sdp.client2.internal.DigipostMessageSenderFacade.performRequest(DigipostMessageSenderFacade.java:110) ~[sikker-digital-post-klient-java-5.0.0.jar:5.0.0]
        at no.difi.sdp.client2.internal.DigipostMessageSenderFacade.hentKvittering(DigipostMessageSenderFacade.java:82) ~[sikker-digital-post-klient-java-5.0.0.jar:5.0.0]
        at no.difi.sdp.client2.SikkerDigitalPostKlient.hentKvitteringOgBekreftForrige(SikkerDigitalPostKlient.java:91) ~[sikker-digital-post-klient-java-5.0.0.jar:5.0.0]
        at no.fsat.fp.sdp.HentKvittering.hentKvitteringOgBekreftForrige(HentKvittering.java:67) ~[classes/:na]
        at no.fsat.fp.sdp.HentKvittering.run(HentKvittering.java:52) ~[classes/:na]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_74]
Caused by: java.lang.IllegalArgumentException: null
        at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:247) ~[jaxb-impl-2.1.13.jar:2.1.13]
        at no.digipost.api.xml.Marshalling.unmarshal(Marshalling.java:134) ~[sdp-api-commons-1.2.0.jar:na]
        at no.digipost.api.handlers.ApplikasjonsKvitteringReceiver.extractData(ApplikasjonsKvitteringReceiver.java:52) ~[sdp-api-client-1.2.0.jar:na]
        at no.digipost.api.handlers.ApplikasjonsKvitteringReceiver.extractData(ApplikasjonsKvitteringReceiver.java:34) ~[sdp-api-client-1.2.0.jar:na]
        at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:619) ~[spring-ws-core-2.3.0.RELEASE.jar:2.3.0.RELEASE]
        at no.digipost.api.handlers.EbmsContextAwareWebServiceTemplate.doSendAndReceive(EbmsContextAwareWebServiceTemplate.java:60) ~[sdp-api-client-1.2.0.jar:na]
        at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:555) ~[spring-ws-core-2.3.0.RELEASE.jar:2.3.0.RELEASE]
        at no.digipost.api.MessageSender$DefaultMessageSender.hentKvittering(MessageSender.java:366) ~[sdp-api-client-1.2.0.jar:na]
        at no.digipost.api.MessageSender.hentKvittering(MessageSender.java:63) ~[sdp-api-client-1.2.0.jar:na]
        at no.difi.sdp.client2.internal.DigipostMessageSenderFacade.lambda$hentKvittering$1(DigipostMessageSenderFacade.java:82) ~[sikker-digital-post-klient-java-5.0.0.jar:5.0.0]
        at no.difi.sdp.client2.internal.DigipostMessageSenderFacade.performRequest(DigipostMessageSenderFacade.java:103) ~[sikker-digital-post-klient-java-5.0.0.jar:5.0.0]
        ... 5 common frames omitted
  1. (Tilsynelatende) feil ved sending

Når jeg forsøker å sende noe, kommer det alltid frem, men istedenfor å få vanlig LeveringsKvittering gir SikkerDigitalPostKlient.send() meg en SendException med innhold "An unhandled exception occured while performing request".

Konkret eksempel (i tilfelle dere har nødvendige tilganger for å grave opp noe):
Tidspunkt: 2016-12-23 17:08:41
konversasjonsId: 9e937410-0e75-48a8-a625-cfc40264b5fb

Any ideas? Det som er mystisk er at a) alt fungerer finfint i testmiljøet, og b) alt ser ut til å fungere her også, bortsett fra disse exceptions som heller ikke hindrer posten fra å bli levert.

Hilsen,
Matija

Kan Java-versjon oppdateres til 7?

Java 6 begynner å bli gammelt, og vi ser mer og mer tendensen at også mere kritiske biblioteker begynner å droppe støtte for Java 6. Eksempelvis krever WSS4J minimum Java 7 f.o.m. versjon 2.1.x.

Gjelder #13 fremdeles, at klientbiblioteket må fungere på Java 6? Eller kan minimum Java-versjon oppdateres til versjon 7?

Mulighet for resending av samme melding med samme InstanceIdentifier

Dersom en Avsender får en feil i forbindelse med sin sending av digital post så kan det bli behov for å forsøke en resending. For å resende eksakt samme forsendelse må både konversasjonsid og InstanceIdentifier være lik i den opprinnelige forsendelsen og i den etterfølgende resendingen.

Klientbiblioteket støtter ikke at en avsender kan sette InstanceIdentifier. Den blir generert som en random UUID alltid og det medfører at avsender dermed får en ebms feilmelding tilbake om at det er duplicate conversationid.

eksempel på feilsituasjon hvor denne problemstillingen oppstår:

  • Avsender sender digital post
  • Meldingsformidler mottar og lagrer ned forsendelsen, svarer med en ok response
  • Avsender mottar responsen men har en treighet og klokker som er noe ute av synk slik at de får en exception om at WS-Sec timestamp ikke er gyldig.

Her er forsendelsen ok levert og vil bli videreformidlet til postkassen, mens Avsender tror at forsendelsen har feilet og vil forsøke å resende.

Støtte for forsendelser med tittel på opp til 255 tegn

ref: difi/begrep-SikkerDigitalPost#191

Det er ønskelig at klientbiblioteket støtter endringen av feltene tittel og ikkeoffentligtittel.
Det er kun snakk om en mindre endring av XSD'n, klientbiblioteket må validere input i henhold til den.

endringen er planlagt satt i produksjon i juni 2017, klientbiblioteket ønskes oppdatert i løpet mai slik at det kan testes i forbindelse med endringen og være klar til å bli tatt i bruk så fort endringen er ute i produksjon.

NullPointerException ved henting av forretningskvittering

Vil melde om at følgende kall som skal hente kvittering fra meldingsformidler gir nullpointerexception.

ForretningsKvittering forretningsKvittering = postklient.hentKvittering(KvitteringForespoersel.builder(Prioritet.NORMAL).build());

12:47:29.799 [pool-1-thread-1] ERROR o.s.s.s.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task.
java.lang.NullPointerException: null
at no.difi.sdp.client.internal.KvitteringBuilder.buildForretningsKvittering(KvitteringBuilder.java:43) ~[sikker-digital-post-java-klient-1.0-SNAPSHOT.jar:na]
at no.difi.sdp.client.SikkerDigitalPostKlient.hentKvitteringOgBekreftForrige(SikkerDigitalPostKlient.java:102) ~[sikker-digital-post-java-klient-1.0-SNAPSHOT.jar:na]
at no.difi.sdp.client.SikkerDigitalPostKlient.hentKvittering(SikkerDigitalPostKlient.java:80) ~[sikker-digital-post-java-klient-1.0-SNAPSHOT.jar:na]
at no.difi.sdp.webclient.service.MessageService.getReceipt(MessageService.java:253) ~[classes/:na]
at no.difi.sdp.webclient.configuration.SdpClientConfiguration.retrieveRecieptPeriodically(SdpClientConfiguration.java:291) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_40]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_40]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_40]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_40]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:65) ~[spring-context-4.0.5.RELEASE.jar:4.0.5.RELEASE]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-4.0.5.RELEASE.jar:4.0.5.RELEASE]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_40]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) [na:1.7.0_40]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) [na:1.7.0_40]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.7.0_40]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_40]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_40]
at java.lang.Thread.run(Thread.java:724) [na:1.7.0_40]

Bekrefte kvittering med kun konversasjonsId?

Metodene SikkerDigitalPostKlient.bekreft() og hentKvitteringOgBekreftForrige() tar inn parameteret "forrigeKvittering" av type ForretningsKvittering.

Det betyr at ForretningsKvittering som returneres fra hentKvittering() må holdes i minnet helt til man vil bekrefte, og at hent() og bekreft() må skje "synkront" i en og samme applikasjonsinstans.

Vi ønsker å kunne kalle bekreft(String konversasjonsId) e.l. for å slippe denne begrensningen.

Da kan vi bruke sikker-digital-post-klient-java i frittstående applikasjon som kommuniserer med andre forretningssystem over f.eks. HTTP, og slik slippe sterk teknisk kobling mellom forretningssystem og sikker-digital-post-klient med avhengigheter. F.eks. kan de da enkelt kjøre på forskjellig plattform, Spring-versjon m.m.

FysiskPost: Inkonsistens i dokumentasjon og klientbibliotek knyttet til Land og Landkode

I Følgende klasse:
https://github.com/difi/sikker-digital-post-java-klient/blob/master/src/main/java/no/difi/sdp/client/domain/fysisk_post/KonvoluttAdresse.java

metoden:
KonvoluttAdresse.iUtlandet

Så er det implementert at en Avsender skal enten legge inn en Landkode eller et Land.

Mens i dokumentasjonen av Fysiskpostadresse så er det definert at både Land og Landkode er påkrevd.
ref: http://begrep.difi.no/SikkerDigitalPost/1.2.0.RC1/begrep/FysiskPostadresse

  • Hva er riktig?
  • Dersom avsender skal bruke enten Land eller Landkode, hva bør være default?

Jeg har oppfattet at Land og Landkode brukes begge to når adressen skal skrives ut på brevet.
Landkoden plasseres forran postnummer og Land på en egen linje.
Ref: http://www.posten.no/produkter-og-tjenester/adressering-til-mottakere-i-utlandet

Sporadisk "Klarte ikke å signere ASiC-E element" ved høy last

Hei

Opplever sporadisk "Klarte ikke å signere ASiC-E element" ved høy last (sender ~20 meldinger per sekund).

no.difi.sdp.webclient.service.MessageService$MessageServiceException: no.difi.sdp.client.domain.exceptions.XmlKonfigurasjonException: Klarte ikke å signere ASiC-E element.
at no.difi.sdp.webclient.service.MessageService.sendMessageToMeldingsformidler(MessageService.java:290)
at no.difi.sdp.webclient.service.MessageService.sendMessage(MessageService.java:233)
at no.difi.sdp.webclient.web.MessageController.performanceTestSendMessage(MessageController.java:384)
at sun.reflect.GeneratedMethodAccessor120.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1736)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1695)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: no.difi.sdp.client.domain.exceptions.XmlKonfigurasjonException: Klarte ikke å signere ASiC-E element.
at no.difi.sdp.client.asice.signature.CreateSignature.createSignature(CreateSignature.java:146)
at no.difi.sdp.client.asice.CreateASiCE.createAsice(CreateASiCE.java:65)
at no.difi.sdp.webclient.service.PostklientService.createAsice(PostklientService.java:108)
at no.difi.sdp.webclient.service.MessageService.enrichMessage(MessageService.java:137)
at no.difi.sdp.webclient.service.MessageService.sendMessageToMeldingsformidler(MessageService.java:284)
... 43 more
Caused by: javax.xml.crypto.dsig.XMLSignatureException: javax.xml.crypto.dsig.TransformException: java.lang.ArrayIndexOutOfBoundsException
at org.jcp.xml.dsig.internal.dom.DOMSignedInfo.canonicalize(DOMSignedInfo.java:231)
at org.jcp.xml.dsig.internal.dom.DOMSignatureMethod.sign(DOMSignatureMethod.java:292)
at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:397)
at no.difi.sdp.client.asice.signature.CreateSignature.createSignature(CreateSignature.java:142)
... 47 more
Caused by: javax.xml.crypto.dsig.TransformException: java.lang.ArrayIndexOutOfBoundsException
at org.jcp.xml.dsig.internal.dom.ApacheCanonicalizer.transform(ApacheCanonicalizer.java:251)
at org.jcp.xml.dsig.internal.dom.DOMTransform.transform(DOMTransform.java:153)
at org.jcp.xml.dsig.internal.dom.DOMCanonicalizationMethod.canonicalize(DOMCanonicalizationMethod.java:97)
at org.jcp.xml.dsig.internal.dom.DOMSignedInfo.canonicalize(DOMSignedInfo.java:228)
... 50 more
Caused by: java.lang.ArrayIndexOutOfBoundsException
at sun.security.provider.DigestBase.engineUpdate(DigestBase.java:127)
at java.security.MessageDigest$Delegate.engineUpdate(MessageDigest.java:568)
at java.security.MessageDigest.update(MessageDigest.java:313)
at sun.security.rsa.RSASignature.engineUpdate(RSASignature.java:161)
at java.security.Signature$Delegate.engineUpdate(Signature.java:1150)
at java.security.Signature.update(Signature.java:715)
at org.jcp.xml.dsig.internal.SignerOutputStream.write(SignerOutputStream.java:72)
at com.sun.org.apache.xml.internal.security.utils.UnsyncBufferedOutputStream.flushBuffer(UnsyncBufferedOutputStream.java:73)
at com.sun.org.apache.xml.internal.security.utils.UnsyncBufferedOutputStream.flush(UnsyncBufferedOutputStream.java:89)
at com.sun.org.apache.xml.internal.security.utils.UnsyncBufferedOutputStream.close(UnsyncBufferedOutputStream.java:95)
at com.sun.org.apache.xml.internal.security.c14n.implementations.CanonicalizerBase.engineCanonicalizeSubTree(CanonicalizerBase.java:208)
at com.sun.org.apache.xml.internal.security.c14n.implementations.CanonicalizerBase.engineCanonicalize(CanonicalizerBase.java:152)
at com.sun.org.apache.xml.internal.security.transforms.implementations.TransformC14N.enginePerformTransform(TransformC14N.java:68)
at com.sun.org.apache.xml.internal.security.transforms.Transform.performTransform(Transform.java:307)
at org.jcp.xml.dsig.internal.dom.ApacheCanonicalizer.transform(ApacheCanonicalizer.java:241)
... 53 more

Innebygd trust store inneholder ikke sertifikater for produksjonsmiljø

Ser ved debugging av Noekkelpar.getStandardTrustStore at det kun lastes sertifikater for testmiljø til Commfides og Buypass. Dette gjør at overload Noekkelpar.fraKeyStoreUtenTrustStore ikke kan brukes mot et produksjonsmiljø. Det bør også dokumenteres bedre hvordan en slik store kan lages om man ikke ønsker å bruke den innebygde.

SAAJ0545 og SAAJ0535

Hei

Vi har ein rar feil som vi har opplevd 2 ganger no. Klienten sluttar å konsumere kvitteringar utan at det rapporteres feil.

I forbindelse med desse 2 tilfella har vi sett to "rare" loggmeldinger fra SAAJ.

Det kan virke som om dette er noko som "berre skjer" (logg vart skrevet på søndag og utanfor arbeidstid for dei fleste involverte?)

sep 14, 2014 7:05:24 PM com.sun.xml.messaging.saaj.soap.SOAPPartImpl setContent
SEVERE: SAAJ0545: Error setting the source for SOAPPart
sep 14, 2014 7:05:24 PM com.sun.xml.messaging.saaj.soap.MessageImpl init
SEVERE: SAAJ0535: Unable to internalize message

Det er kun sikker-digital-post-java-klient (1.1.2) som har denne avhengigheiten, via sdp-api-client (1.1.2)

Flott om dere kan sjå på dette

SDP klienten har med seg genererte klasser fra Oppslagstjenesten som skaper konflikt med de klasser som selv generer for integrasjon mot Oppslagstjenesten

sdp-xsd har med seg oppslagstjenesten-metadata-14.05.xsd og generer klassene no.difi.begrep.Difi*** som kræsjer med de klassene jeg selv generer fra oppslagstjeneste wsdl'n.

bakgrunn

Jeg får følgende runtime exception:

Two classes have the same XML type name "{http://begrep.difi.no}reservasjon". Use @XmlType.name and @XMLType.namespace to assign different names to them.
   this problem is related to the following location:
      at  no.difi.begrep.Reservasjon
      ........
  this problem is related to the following location:
      at  no.difi.begrep.DifiReservasjon
     .....

Det er samme feil for alle klassene som genereres ut i fra oppslagstjenesten-metadata-14.05.xsd

Java klienten må legges i egen mappe

Jeg ønsker at java klienten legges i en egen prosjektmappe slik at dette prosjektet kan brukes for .net biblioteket og andre tilhørende prosjekter fremover.

Spørsmål: Er det støtte for å hente og bekrefte flere kvitteringer samtidig?

Hei!
Vi forventer å sende ut en god chunk (750k+) brev gjennom dpi i starten av januar og ønsker derfor å høre om det i dag er støtte for å hente flere kvitteringer om gangen? Slik vi har satt det opp i dag henter vi kun 1 kvittering / sec men vi kommer nok til å skru denne til å bli langt mer greedy ved den store kjøringen - altså hente kvitteringer til det er tomt. Her hadde det vært ønskelig å hente en chunk kvitteringer i steden. Bruker vi evt feil bibliotek?
I dag bruker vi DigipostMessageSenderFacade.java med hentKvittering() og bekreft()

Er patcha versjon av saaj nødvendig ved køyring av ytelsetestar?

Ved køyring av ytelsetestar frå Testavsendaren legg me i dag til anna versjon av saaj-impl enn det som er pakka med sikker-digital-post-klient-java som kjem med versjon 1.3.23.
Me ekskluderer denne og legg heller ved denne: com.sun.xml.messaging.saaj:saaj-impl:1.3.26-SNAPSHOT etter anbefalling frå dykk (Stefan landrø) i okt 2014 pga alvorleg ytelseproblem i saaj.

Eg ser at det har skjedd endringar både på https://github.com/digipost/saaj og https://github.com/gf-metro/saaj etter dette. Men ser ut som versjonen i sikker-digital-post-klient-java er uendra.

Mitt spørsmål er om det er nødvendig å ekskludere denne lengre eller om f.eks. sikker-digital-post-klient-java kan ta i bruk ein nyare versjon?

Årsaka til at eg spør er fordi eg ynskjer å slå saman ytelsespesifikk branch med master i https://github.com/difi/sikker-digital-post-java-eksempel-webclient for å forenkle, om det er mogeleg. Dette er einaste skilnaden hos oss.

Feil i forbindelse med overgang til versjon 1.1.6

Har nettop testet Klientbibliotek 1.1.6. Får ikke lengre sendt ting…
Får bare endeløse retry linjer med:

[no.difi.sdp.client.internal.DigipostMessageSenderFacade$6] Validating using class path resource [sdp.xsd],class path resource [sdp-manifest.xsd],class path resource [SBDH20040506-02/StandardBusinessDocumentHeader.xsd],class path resource [ebxml/ebms-header-3_0-200704.xsd],class path resource [w3/xmldsig-core-schema.xsd],class path resource [etsi/XAdES.xsd],class path resource [asic-e/ts_102918v010201.xsd]

Men ingenting sendes. Fungerte utmerket når jeg gikk tilbake til 1.1.3

merk at jeg bruker java 1.6.x

Ønsker mulighet for å stoppe requester til feil miljø

Vi opplever at flere avsender i sin testing blander mellom det funksjonelle testmiljøet og produksjon.
Klientbiblioteket har informasjon om et sertifikat er et gyldig produksjonssertifikat eller ikke og kan dermed stoppe requestene før de sendes og gi en fornuftig feilmelding/exception tilbake til utvikler/tester.

Klientbiblioteket må ta høyde for følgende ved innføring av en slik mekanisme:

  • Det er forskjellige lenker til produksjon for vanlige integrasjon og integrasjon fra norsk helsenett
  • Det er forskjellige sertifikater som kan benyttes, både commfides og buypass.

Det er flere måter å sjekke om sertifikatet kan brukes mot produksjonsmiljøet eller ikke.
Det som blir mest korrekt er å sjekke klient sertifikatets policy, her skal det være referanse til en av de følgende OID'ene:

  • 2.16.578.1.29.13.1.1.0 (commifdes)
  • 2.16.578.1.26.1.3.2 (buypass soft tokens)
  • 2.16.578.1.26.1.3.5 (buypass hard tokens)

I test brukes andre sertifikat policer.

referanser til sertifikat policyene til leverandørene:

Denne forbedringen ønskes også i .net klientbiblioteket (https://github.com/difi/sikker-digital-post-klient-dotnet , oppretter tilsvarende sak der, men tenker at det kan spesifiseres opp her først og så realiseres i begge bibliotek).

Ønske om mulighet for å hente ut XML meldingene som sendes og mottas

I forbindelse med utarbeidelsen av en funksjonell og teknisk testklient ( http://avsender-sdp.difi.no/ ) er det ønskelig å kunne hente ut og vise XML meldingene som går frem og tilbake. Vi har mulighet for å få xml meldingen skrevet til loggen, men vi ønsker altså å hente de frem og vise de i web-gui i test klienten.

Dette er en utvidelse som ikke kreves for avsendere, men kun er av interesse for å få en best mulig test klient som kan brukes i forbindelse med testing både funksjonelt og teknisk.

Mulig ønske kan realiseres på forskjellige måter, eventuelt dersom vi får litt info om hvordan dette kunne realiseres så kan vi selv se om vi prioritere å gjøre det i en egen branch.

Samtidighetsproblem i SikkerDigitalPostKlient

Rundt 10% av alle sendte meldingar får tilbake feilkvittering "KLIENT - FEIL SIGNATUR" fra Digipost ved høg last (rundt 55/s).

Har etter tips fra @eoftedal prøvd å køyre last med 1 SikkerDigitalPostKlient per tråd, som har fungert fint.

Det er altså eit samtidighetsproblem i SikkerDigitalPostKlient.

Flott om dere ser på dette.

Mvh Steinar

Tilgang til WebServiceTemplate

Vi har behov for kunne mocke WebService-kallet i sikker-digital-post-klient. For å gjøre det på enkel måte, så trenger vi tilgang til WebServiceTemplate. Jeg har laget pull-request.

Kan ikke sende meldinger med vedlegg med filnavn som starter med tall (blant annet)

Hei

Det er ikke mulig å sende meldinger med vedlegg med filnavn som starter med tall (blant annet). F.eks. "2014-01-01-brev-til-steinar-fra-nav.pdf". Ser ut som om filnavn blir forsøkt validert som NCName (se f.eks. http://www.datypic.com/sc/xsd/t-xsd_NCName.html)

[http-bio-8080-exec-2] ERROR no.difi.sdp.webclient.service.MessageService - FAILED_SENDING_DIGITAL_POST
no.difi.sdp.webclient.service.MessageService$MessageServiceException: no.difi.sdp.client.domain.exceptions.XmlValideringException: Kunne ikke validere generert signatures.xml. Sjekk at input er gyldig og at det ikke er ugyldige tegn i filna
vn o.l.
at no.difi.sdp.webclient.service.MessageService.sendMessageToMeldingsformidler(MessageService.java:245)
at no.difi.sdp.webclient.service.MessageService.sendMessage(MessageService.java:209)
at no.difi.sdp.webclient.web.MessageController.send_message(MessageController.java:83)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: no.difi.sdp.client.domain.exceptions.XmlValideringException: Kunne ikke validere generert signatures.xml. Sjekk at input er gyldig og at det ikke er ugyldige tegn i filnavn o.l.
at no.difi.sdp.client.asice.signature.CreateSignature.createSignature(CreateSignature.java:155)
at no.difi.sdp.client.asice.CreateASiCE.createAsice(CreateASiCE.java:65)
at no.difi.sdp.client.internal.CreateDokumentpakke.createDokumentpakke(CreateDokumentpakke.java:41)
at no.difi.sdp.client.internal.EbmsForsendelseBuilder.buildEbmsForsendelse(EbmsForsendelseBuilder.java:56)
at no.difi.sdp.client.SikkerDigitalPostKlient.send(SikkerDigitalPostKlient.java:65)
at no.difi.sdp.webclient.service.MessageService.sendMessageToMeldingsformidler(MessageService.java:243)
... 38 more
Caused by: org.xml.sax.SAXParseException; cvc-datatype-valid.1.2.1: '1-Test-PDF.pdf' is not a valid value for 'NCName'.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:458)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3237)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processOneAttribute(XMLSchemaValidator.java:2832)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processAttributes(XMLSchemaValidator.java:2769)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:2056)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:746)
at com.sun.org.apache.xerces.internal.jaxp.validation.DOMValidatorHelper.beginNode(DOMValidatorHelper.java:277)
at com.sun.org.apache.xerces.internal.jaxp.validation.DOMValidatorHelper.validate(DOMValidatorHelper.java:244)
at com.sun.org.apache.xerces.internal.jaxp.validation.DOMValidatorHelper.validate(DOMValidatorHelper.java:190)
at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl.validate(ValidatorImpl.java:109)
at javax.xml.validation.Validator.validate(Validator.java:124)
at no.difi.sdp.client.asice.signature.CreateSignature.createSignature(CreateSignature.java:150)
... 43 more

Mvh Steinar

Class cast exception

Kreftregisteret har ikke varit oppsatt som gyldig avsendere tidligere og derfor har vi en del brev som ikke blitt sendt riktig i testmiljöet. Når vi pröver at hente en leveringskvittering for disse brevene får vi nå en class cast exception:

I de fall vi får en feil-kvittering fra dere av typen «no.difi.begrep.sdp.schema_v10.SDPFeil» så får vi en feil når det skal type casta denne meldingen til en «no.difi.begrep.sdp.schema_v10.SDPKvittering». Skal det ikke vare mulig å gjöre det på den måten? Jeg tror dette sker inne i deres kode.
Så her ser koden ut som pröver å hente kvittering:

try {
lastReceipt = getLetterReceiptAndAcknowledgeLastOne(lastReceipt);
if(!isSendingQueueEmpty()) {
SdpLetterPackage workingPackage = getNextLetterPackageFromSendingQueue();
if (workingPackage != null && workingPackage.getLetter().getSendCount() <= RESEND_MAX) {
executor.submit(new SdpLetterSenderService(workingPackage, serviceFacade));
}
}
}
catch (Exception e){
serviceFacade.logActivity(null, null, ActivityLogActionType.APPLICATION, "Caught exception while polling for receipt.",getClass().getGenericSuperclass().toString(), getClass().getSimpleName(),e);
logger.error("Caught exception while polling for receipt... Error: " + SdpServiceUtil.getStackTrace(e));
}

KonvoluttAdresse.iUtlandet gir NullPointer dersom landkode er null

Ved bruk av metoden KonvoluttAdresse.iUtlandet som bare tar inn land, ref: https://github.com/difi/sikker-digital-post-java-klient/blob/master/src/main/java/no/difi/sdp/client/domain/fysisk_post/KonvoluttAdresse.java#L97

så vil landkode var null i input og da vil nok følgende linje gi nullpointer:
https://github.com/difi/sikker-digital-post-java-klient/blob/master/src/main/java/no/difi/sdp/client/domain/fysisk_post/KonvoluttAdresse.java#L108

postadresse.landkode = landkode.getKode();

Skifta posten_test.pem

Sertifikatet har utlöpt, det nya sertifikatet är

-----BEGIN CERTIFICATE-----
MIIE9DCCA9ygAwIBAgILAT+iGF2ISezHpl4wDQYJKoZIhvcNAQELBQAwUTELMAkG
A1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSMwIQYDVQQD
DBpCdXlwYXNzIENsYXNzIDMgVGVzdDQgQ0EgMzAeFw0xNzA0MjQwODM0NDZaFw0y
MDA0MjQyMTU5MDBaMFoxCzAJBgNVBAYTAk5PMRgwFgYDVQQKDA9QT1NURU4gTk9S
R0UgQVMxHTAbBgNVBAMMFFBPU1RFTiBOT1JHRSBBUyBURVNUMRIwEAYDVQQFEwk5
ODQ2NjExODUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCiPsj+RRIn
Xas3xedAYOAL4d3ZFxNOg1qT+emw7SeGBOd301yG3sFfZ61NUmPEznGLMMDGqhon
SaXdMKBy8Ge44Lr6TNJ3RXQA7hbNm1QD0GUh7f8kblNEwDL7n9McuwG+itfXzzjF
+GEgQUjriS8kdQ7M1R4brMvaZ4IvZQQYXtIUdz8A/IJPSSiw2JPCtdmZazhdcamh
b4vq5qhHpQRKw4qNHiacp9tY14ZMQdMp5jdYcPCrKlBLJa7vKQF2qRIhQ77/ZBK7
FuvqRCNy/M9ArSxxXmM85kk+n7FikQoSnTb54wEA/zYnzPKafDRQKT5yvO9jJBmM
Gog2bXEQuhGFAgMBAAGjggHCMIIBvjAJBgNVHRMEAjAAMB8GA1UdIwQYMBaAFD+u
9XgLkqNwIDVfWvr3JKBSAfBBMB0GA1UdDgQWBBSPoMjenknBBiZxOLFafkGc1Y/w
rzAOBgNVHQ8BAf8EBAMCBLAwFgYDVR0gBA8wDTALBglghEIBGgEAAwIwgbsGA1Ud
HwSBszCBsDA3oDWgM4YxaHR0cDovL2NybC50ZXN0NC5idXlwYXNzLm5vL2NybC9C
UENsYXNzM1Q0Q0EzLmNybDB1oHOgcYZvbGRhcDovL2xkYXAudGVzdDQuYnV5cGFz
cy5uby9kYz1CdXlwYXNzLGRjPU5PLENOPUJ1eXBhc3MlMjBDbGFzcyUyMDMlMjBU
ZXN0NCUyMENBJTIwMz9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0MIGKBggrBgEF
BQcBAQR+MHwwOwYIKwYBBQUHMAGGL2h0dHA6Ly9vY3NwLnRlc3Q0LmJ1eXBhc3Mu
bm8vb2NzcC9CUENsYXNzM1Q0Q0EzMD0GCCsGAQUFBzAChjFodHRwOi8vY3J0LnRl
c3Q0LmJ1eXBhc3Mubm8vY3J0L0JQQ2xhc3MzVDRDQTMuY2VyMA0GCSqGSIb3DQEB
CwUAA4IBAQCP2XKHyeZaaQBC4vBLjojanPWguou4iJnbTVcS/PNwwJh+7lvOB6MF
5x32ggh617uaramrHNf9G7OZsSS8GZgDWX9BN8xSTD4Zz+lQpclPb3mOkeZapWsY
lwBeoLcSSKFS0ezESYtT+XdWcPD06/fg2TWgkCBPBxEsKjzIRVwn34kyfik1mKsV
O2JubleXcQDLjhTJ4U82VYQNMMnn4+9ZZrFvlBBUIBfvOOlpMCel+TWvccCpzkty
gVSScXU0ZK+mj/apl39hWMi5lVrdxq1CI4nrFiJM1vnoqaTp8IzbJEI59Zj2PXFT
DxxKkUAhG515ONmTtl6cHrKpWx5grczC
-----END CERTIFICATE-----

Sending av melding feiler i Apache Tomcat 7 og i Jetty 9.

Sending av melding feiler i Apache Tomcat 7 og i Jetty 9.

Ved signering av utgående melding får en unntak:

org.w3c.dom.DOMException: HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted.
at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.insertBefore(CoreDocumentImpl.java:396)
at com.sun.org.apache.xerces.internal.dom.NodeImpl.appendChild(NodeImpl.java:238)
at org.apache.jcp.xml.dsig.internal.dom.XmlWriterToTree.writeStartElement(XmlWriterToTree.java:85)
at org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.marshal(DOMXMLSignature.java:206)
at org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:326)
at no.difi.sdp.client.asice.signature.CreateSignature.createSignature(CreateSignature.java:116)
at no.difi.sdp.client.asice.CreateASiCE.createAsice(CreateASiCE.java:65)
at no.difi.sdp.client.internal.CreateDokumentpakke.createDokumentpakke(CreateDokumentpakke.java:41)
at no.difi.sdp.client.internal.EbmsForsendelseBuilder.buildEbmsForsendelse(EbmsForsendelseBuilder.java:44)
at no.difi.sdp.client.SikkerDigitalPostKlient.send(SikkerDigitalPostKlient.java:61)
at no.difi.sdp.webclient.service.MessageService.sendMessage(MessageService.java:233)
at no.difi.sdp.webclient.web.MessageController.send_message(MessageController.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

Det lar seg altså ikke gjøre å bruke java-klienten i Tomcat 7 eller Jetty 9 out of the box. Har ikke prøvd andre servlet-containere.

Feil under oppretting av SikkerDigitalPostKlient

Oppretter en SikkerDigitalPostKlient og får feil i biblioteket under oppretting av JAXB marshaller. Legger ved stacktrace.

`Exception in thread "main" java.lang.ExceptionInInitializerError
at no.digipost.api.xml.Marshalling.getMarshallerSingleton(Marshalling.java:67)
at no.digipost.api.MessageSender$Builder.getDefaultMarshaller(MessageSender.java:338)
at no.digipost.api.MessageSender$Builder.build(MessageSender.java:240)
at no.difi.sdp.client2.internal.DigipostMessageSenderFacade.(DigipostMessageSenderFacade.java:68)
at no.difi.sdp.client2.SikkerDigitalPostKlient.(SikkerDigitalPostKlient.java:38)
at no.difi.meldingsutveksling.ptp.MeldingsformidlerClient.sendMelding(MeldingsformidlerClient.java:49)
at no.difi.meldingsutveksling.ptp.MeldingsformidlerClientMain.main(MeldingsformidlerClientMain.java:73)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
...
Two classes have the same XML type name "{http://www.w3.org/2000/09/xmldsig#}SPKIDataType". Use @XmlType.name and @XmlType.namespace to assign different names to them.
this problem is related to the following location:
at org.w3.xmldsig.SPKIData
at protected java.util.List org.w3.xmldsig.KeyInfo.content
at org.w3.xmldsig.KeyInfo
at protected org.w3.xmldsig.KeyInfo org.w3.xmldsig.Signature.keyInfo
at org.w3.xmldsig.Signature
at public org.w3.xmldsig.Signature org.w3.xmldsig.ObjectFactory.createSignature()
at org.w3.xmldsig.ObjectFactory
at protected java.util.List org.w3.xmldsig.CanonicalizationMethod.content
at org.w3.xmldsig.CanonicalizationMethod
this problem is related to the following location:
at org.w3._2000.09.xmldsig.SPKIDataType
at public org.w3._2000.09.xmldsig.SPKIDataType org.w3._2000.09.xmldsig.ObjectFactory.createSPKIDataType()
at org.w3._2000.09.xmldsig.ObjectFactory
at protected java.util.List org.w3._2000.09.xmldsig.CanonicalizationMethodType.content
at org.w3._2000.09.xmldsig.CanonicalizationMethodType
at protected org.w3._2000.09.xmldsig.CanonicalizationMethodType org.w3._2000.09.xmldsig.SignedInfoType.canonicalizationMethod
at org.w3._2000.09.xmldsig.SignedInfoType
at protected org.w3._2000.09.xmldsig.SignedInfoType org.w3._2000.09.xmldsig.SignatureType.signedInfo
at org.w3._2000.09.xmldsig.SignatureType
at protected org.w3._2000.09.xmldsig.SignatureType org.etsi.uri._01903.v1_3.CounterSignatureType.signature
at org.etsi.uri._01903.v1_3.CounterSignatureType
The element name {http://www.w3.org/2000/09/xmldsig#}KeyName has more than one mapping.
this problem is related to the following location:
at public javax.xml.bind.JAXBElement org.w3._2000.09.xmldsig.ObjectFactory.createKeyName(java.lang.String)
at org.w3._2000.09.xmldsig.ObjectFactory
at protected java.util.List org.w3._2000.09.xmldsig.CanonicalizationMethodType.content
at org.w3._2000.09.xmldsig.CanonicalizationMethodType
at protected org.w3._2000.09.xmldsig.CanonicalizationMethodType org.w3._2000.09.xmldsig.SignedInfoType.canonicalizationMethod
at org.w3._2000.09.xmldsig.SignedInfoType
at protected org.w3._2000.09.xmldsig.SignedInfoType org.w3._2000.09.xmldsig.SignatureType.signedInfo
at org.w3._2000.09.xmldsig.SignatureType
at protected org.w3._2000.09.xmldsig.SignatureType org.etsi.uri._01903.v1_3.CounterSignatureType.signature
at org.etsi.uri._01903.v1_3.CounterSignatureType
this problem is related to the following location:
at public javax.xml.bind.JAXBElement org.w3.xmldsig.ObjectFactory.createKeyName(java.lang.String)
at org.w3.xmldsig.ObjectFactory
at protected java.util.List org.w3.xmldsig.CanonicalizationMethod.content
at org.w3.xmldsig.CanonicalizationMethod
The element name {http://www.w3.org/2000/09/xmldsig#}MgmtData has more than one mapping.
this problem is related to the following location:
at public javax.xml.bind.JAXBElement org.w3._2000.09.xmldsig.ObjectFactory.createMgmtData(java.lang.String)
at org.w3._2000.09.xmldsig.ObjectFactory
at protected java.util.List org.w3._2000.09.xmldsig.CanonicalizationMethodType.content
at org.w3._2000.09.xmldsig.CanonicalizationMethodType
at protected org.w3._2000.09.xmldsig.CanonicalizationMethodType org.w3._2000.09.xmldsig.SignedInfoType.canonicalizationMethod
at org.w3._2000.09.xmldsig.SignedInfoType
at protected org.w3._2000.09.xmldsig.SignedInfoType org.w3._2000.09.xmldsig.SignatureType.signedInfo
at org.w3._2000.09.xmldsig.SignatureType
at protected org.w3._2000.09.xmldsig.SignatureType org.etsi.uri._01903.v1_3.CounterSignatureType.signature
at org.etsi.uri._01903.v1_3.CounterSignatureType
this problem is related to the following location:
at public javax.xml.bind.JAXBElement org.w3.xmldsig.ObjectFactory.createMgmtData(java.lang.String)
at org.w3.xmldsig.ObjectFactory
at protected java.util.List org.w3.xmldsig.CanonicalizationMethod.content
at org.w3.xmldsig.CanonicalizationMethod
Two classes have the same XML type name "{http://uri.etsi.org/01903/v1.3.2#}SPUserNoticeType". Use @XmlType.name and @XmlType.namespace to assign different names to them.
this problem is related to the following location:
at org.etsi.uri._01903.v1_3.SPUserNotice
at public org.etsi.uri._01903.v1_3.SPUserNotice org.etsi.uri._01903.v1_3.ObjectFactory.createSPUserNotice()
at org.etsi.uri._01903.v1_3.ObjectFactory
at protected java.util.List org.etsi.uri._01903.v1_3.Any.content
at org.etsi.uri._01903.v1_3.Any
this problem is related to the following location:
at org.etsi.uri._01903.v1_3.SPUserNoticeType
There's no ObjectFactory with an @XmlElementDecl for the element {http://uri.etsi.org/01903/v1.3.2#}CounterSignature.
this problem is related to the following location:
at protected java.util.List org.etsi.uri._01903.v1_3.UnsignedSignaturePropertiesType.counterSignatureOrSignatureTimeStampOrCompleteCertificateRefs
at org.etsi.uri._01903.v1_3.UnsignedSignaturePropertiesType
at protected org.etsi.uri._01903.v1_3.UnsignedSignaturePropertiesType org.etsi.uri._01903.v1_3.UnsignedPropertiesType.unsignedSignatureProperties
at org.etsi.uri._01903.v1_3.UnsignedPropertiesType
at protected org.etsi.uri._01903.v1_3.UnsignedPropertiesType org.etsi.uri._01903.v1_3.QualifyingPropertiesType.unsignedProperties
at org.etsi.uri._01903.v1_3.QualifyingPropertiesType

at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:91)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:445)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:277)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:124)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1123)
at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:147)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:247)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:234)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:462)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:641)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)
at org.springframework.oxm.jaxb.Jaxb2Marshaller.createJaxbContextFromPackages(Jaxb2Marshaller.java:522)
at org.springframework.oxm.jaxb.Jaxb2Marshaller.getJaxbContext(Jaxb2Marshaller.java:459)
... 14 more`

Unable to get sms when ussing digipost at test env.

When calling dkif in test enviorment, we expect getting an sms with this object but we get an epost instead. Does test env have some config or options that are hindering sms message.
Last time we testet was 17.08.2021.

{
   mobilnummer: <tlf>
   varslingteskst: <tekst>
  dagerEtter: 1
}

standard varsling som settes opp er i ikke i henhold til det som anbefales for Avsendere som skal varsle

I https://github.com/difi/sikker-digital-post-java-klient/blob/master/src/main/java/no/difi/sdp/client/domain/digital_post/EpostVarsel.java er standard at det settes opp ett varsel samtidig som brevet blir tilgjengeliggjort for mottaker.

Avsendere sitt bruk av varslinger er styrt av eForvaltningsforskriften §8a (http://lovdata.no/dokument/SF/forskrift/2004-06-25-988/KAPITTEL_2#%C2%A78) og dokumentert her: http://begrep.difi.no/SikkerDigitalPost/1.2.0/begrep/Varsler

Dersom klientbiblioteket overhode skal ha noe default varslingsinstillinger så bør det være i henhold til eForvaltningsforskriften og dermed være 0,7

Vi har eksempler på virksomheter som har satt opp varsling slik:

  • DigitalPost.Builder postBuilder = …
    postBuilder.epostVarsel(EpostVarsel.builder(epostadresse, varslingsTekstEpost).build());

Dette har dermed ført til at de har fått varslinger som ikke er i henhold til kravene i forskriften.

Det vil vært svært få, om noen som vil bestille varsling kun ved tilgjengeliggjøring.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.