Example #1
0
        public void SendDigitaltPåVegneAvIntegrasjon()
        {
            //Arrange
            const string testDepartementetAvsenderOrgnummer = "987656789";
            const string postenDatabehandlerOrgnummer       = "984661185";
            var          avsender = new Avsender(testDepartementetAvsenderOrgnummer);

            var databehandler = new Databehandler(postenDatabehandlerOrgnummer, DomeneUtility.GetAvsenderSertifikat());
            var forsendelse   = new Forsendelse(avsender, DomeneUtility.GetDigitalPostInfoEnkel(), DomeneUtility.GetDokumentpakkeUtenVedlegg(), Prioritet.Normal, Guid.NewGuid().ToString());
            var klientKonfig  = new Klientkonfigurasjon
            {
                MeldingsformidlerUrl = new Uri(Settings.Default.UrlMeldingsformidler),
                LoggXmlTilFil        = true
            };

            //Act
            var sdpKlient           = new SikkerDigitalPostKlient(databehandler, klientKonfig);
            var transportkvittering = sdpKlient.Send(forsendelse, true);


            //Assert
            Assert.IsNotNull(transportkvittering);
            var kvittering = HentKvitteringOgBekreft(sdpKlient, "Send digital paa vegne av", forsendelse);

            Assert.IsTrue(kvittering is Leveringskvittering, "Klarte ikke hente kvittering eller feilet kvittering");
        }
Example #2
0
        public static StandardBusinessDocument BuildSBD(Databehandler databehandler, Forsendelse forsendelse)
        {
            ForretningsMelding forretningsMelding = ForretningsMeldingBuilder.BuildForretningsMelding(forsendelse);

            var konversasjonsId = forsendelse.KonversasjonsId.ToString();

            StandardBusinessDocumentHeader sbdHeader = new StandardBusinessDocumentHeader.Builder()
                                                       .WithProcess(Process.ProcessType.DIGITAL_POST_VEDTAK)
                                                       .WithStandard(forsendelse.PostInfo.Type)
                                                       .WithFrom(databehandler.Organisasjonsnummer)
                                                       .WithOnBehalfOf(forsendelse.Avsender.Organisasjonsnummer)
                                                       .WithTo(forsendelse.MottakerPersonIdentifikator)
                                                       .WithType(forretningsMelding.type.ToString())
                                                       .WithRelatedToConversationId(konversasjonsId)
                                                       .WithRelatedToMessageId(konversasjonsId)
                                                       .WithCreationDateAndTime(DateTime.Now.ToLocalTime())
                                                       .Build();

            StandardBusinessDocument sbd = new StandardBusinessDocument
            {
                standardBusinessDocumentHeader = sbdHeader, any = forretningsMelding
            };

            return(sbd);
        }
Example #3
0
 /// <param name="databehandler">
 /// Teknisk avsender er den parten som har ansvarlig for den tekniske utførelsen av sendingen.
 /// Teknisk avsender er den aktøren som står for utførelsen av den tekniske sendingen.
 /// Hvis sendingen utføres av en databehandler vil dette være databehandleren.
 /// Hvis sendingen utføres av behandlingsansvarlige selv er dette den behandlingsansvarlige.
 /// </param>
 /// <param name="klientkonfigurasjon">Klientkonfigurasjon for klienten. Brukes for å sette parametere
 /// som proxy, timeout og URI til meldingsformidler. For å bruke standardkonfigurasjon, lag
 /// SikkerDigitalPostKlient uten Klientkonfigurasjon som parameter.</param>
 /// <remarks>
 /// Se <a href="http://begrep.difi.no/SikkerDigitalPost/forretningslag/Aktorer">oversikt over aktører</a>
 /// </remarks>
 public SikkerDigitalPostKlient(Databehandler databehandler, Klientkonfigurasjon klientkonfigurasjon)
 {
     _databehandler       = databehandler;
     _klientkonfigurasjon = klientkonfigurasjon;
     Logging.Initialize(klientkonfigurasjon);
     FileUtility.BasePath = klientkonfigurasjon.StandardLoggSti;
 }
Example #4
0
 /// <summary>
 ///     Settings for DigitalPostForsendelse
 /// </summary>
 public EnvelopeSettings(Forsendelse forsendelse, DocumentBundle documentBundle, Databehandler databehandler, GuidUtility guidUtility, Klientkonfigurasjon konfigurasjon)
 {
     Forsendelse    = forsendelse;
     DocumentBundle = documentBundle;
     Databehandler  = databehandler;
     GuidUtility    = guidUtility;
     Konfigurasjon  = konfigurasjon;
 }
Example #5
0
 /// <summary>
 ///     Settings for DigitalPostForsendelse
 /// </summary>
 public EnvelopeSettings(Forsendelse forsendelse, AsicEArkiv asicEArkiv, Databehandler databehandler, GuidUtility guidHandler, Klientkonfigurasjon konfigurasjon)
 {
     Forsendelse   = forsendelse;
     AsicEArkiv    = asicEArkiv;
     Databehandler = databehandler;
     GuidHandler   = guidHandler;
     Konfigurasjon = konfigurasjon;
 }
            public void Fails_if_invalid_certificate()
            {
                //Arrange
                var databehandler       = new Databehandler(new Organisasjonsnummer("988015814"), DomainUtility.GetAvsenderEnhetstesterSertifikat());
                var klientkonfigurasjon = new Klientkonfigurasjon(Miljø.FunksjoneltTestmiljø);

                //Act
                Assert.Throws <SecurityException>(() => new SikkerDigitalPostKlient(databehandler, klientkonfigurasjon));
            }
        /// <param name="databehandler">
        ///     Virksomhet (offentlig eller privat) som har en kontraktfestet avtale med Avsender med
        ///     formål å dekke hele eller deler av prosessen med å formidle en digital postmelding fra
        ///     <see cref="Avsender" /> til Meldingsformidler.
        /// </param>
        /// <param name="klientkonfigurasjon">
        ///     Brukes for å sette parametere som proxy, timeout, logging av forespørsel/respons og selve dokumentpakken.
        /// </param>
        /// <remarks>
        ///     Se <a href="http://begrep.difi.no/SikkerDigitalPost/forretningslag/Aktorer">oversikt over aktører</a>
        /// </remarks>
        public SikkerDigitalPostKlient(Databehandler databehandler, Klientkonfigurasjon klientkonfigurasjon)
        {
            ValidateDatabehandlerCertificateAndThrowIfInvalid(databehandler, klientkonfigurasjon.Miljø);

            Databehandler                   = databehandler;
            Klientkonfigurasjon             = klientkonfigurasjon;
            RequestHelper                   = new RequestHelper(klientkonfigurasjon);
            CertificateValidationProperties = new CertificateValidationProperties(klientkonfigurasjon.Miljø.GodkjenteKjedeSertifikater, Klientkonfigurasjon.MeldingsformidlerOrganisasjon);
        }
        public void Initier()
        {
            var orgnummerAvsender = new Organisasjonsnummer("123456789");
            var avsender          = new Avsender(orgnummerAvsender);

            var orgnummerDatabehandler = new Organisasjonsnummer("987654321");
            var avsendersertifikat     = new X509Certificate2();
            var databehandler          = new Databehandler(orgnummerDatabehandler, avsendersertifikat);

            avsender.Avsenderidentifikator = "Avsenderidentifikator.I.Organisasjon";
        }
Example #9
0
        public void OpprettAvsenderOgBehandler()
        {
            var orgnummerAvsender = new Organisasjonsnummer("123456789");
            var avsender          = new Avsender(orgnummerAvsender);

            var orgnummerDatabehandler = new Organisasjonsnummer("987654321");
            var databehandler          = new Databehandler(orgnummerDatabehandler);

            //Hvis man har flere avdelinger innenfor samme organisasjonsnummer, har disse fått unike avsenderidentifikatorer, og kan settes på følgende måte:
            avsender.Avsenderidentifikator = "Avsenderidentifikator.I.Organisasjon";
        }
        private void ValidateDatabehandlerCertificateAndThrowIfInvalid(Databehandler databehandler, Miljø miljø)
        {
            var valideringsResultat = CertificateValidator.ValidateCertificateAndChain(
                databehandler.Sertifikat,
                databehandler.Organisasjonsnummer.Verdi,
                miljø.GodkjenteKjedeSertifikater
                );

            if (valideringsResultat.Type != CertificateValidationType.Valid)
            {
                throw new SecurityException($"Sertifikatet som brukes for { nameof(Databehandler) } er ikke gyldig. Prøver du å sende med et testsertifikat i produksjonsmiljø eller omvendt? Grunnen er '{valideringsResultat.Type.ToNorwegianString()}', beskrivelse: '{valideringsResultat.Message}'");
            }
        }
Example #11
0
        /// <param name="databehandler">
        ///     Virksomhet (offentlig eller privat) som har en kontraktfestet avtale med Avsender med
        ///     formål å dekke hele eller deler av prosessen med å formidle en digital postmelding fra
        ///     <see cref="Avsender" /> til Meldingsformidler.
        /// </param>
        /// <param name="klientkonfigurasjon">
        ///     Brukes for å sette parametere som proxy, timeout, logging av forespørsel/respons og selve dokumentpakken.
        /// </param>
        /// <param name="loggerFactory">
        ///     Brukes for å sette loggeren.
        /// </param>
        /// <remarks>
        ///     Se <a href="http://begrep.difi.no/SikkerDigitalPost/forretningslag/Aktorer">oversikt over aktører</a>
        /// </remarks>
        public SikkerDigitalPostKlient(Databehandler databehandler, Klientkonfigurasjon klientkonfigurasjon,
                                       ILoggerFactory loggerFactory)
        {
            _logger        = loggerFactory.CreateLogger <SikkerDigitalPostKlient>();
            _loggerFactory = loggerFactory;

            //ValidateDatabehandlerCertificateAndThrowIfInvalid(databehandler, klientkonfigurasjon.Miljø);

            Databehandler       = databehandler;
            Klientkonfigurasjon = klientkonfigurasjon;
            RequestHelper       = new RequestHelper(klientkonfigurasjon, _loggerFactory);
            //CertificateValidationProperties = new CertificateValidationProperties(klientkonfigurasjon.Miljø.GodkjenteKjedeSertifikater, Klientkonfigurasjon.MeldingsformidlerOrganisasjon);
        }
            public void Initializes_fields()
            {
                //Arrange
                var databehandler       = new Databehandler(DomainUtility.Organisasjonsnummer(), DomainUtility.GetAvsenderCertificate());
                var klientkonfigurasjon = new Klientkonfigurasjon(Miljø.FunksjoneltTestmiljø);

                //Act
                var sikkerDigitalPostKlient = new SikkerDigitalPostKlient(databehandler, klientkonfigurasjon);

                //Assert
                Assert.Equal(klientkonfigurasjon, sikkerDigitalPostKlient.Klientkonfigurasjon);
                Assert.Equal(databehandler, sikkerDigitalPostKlient.Databehandler);
                Assert.IsType <RequestHelper>(sikkerDigitalPostKlient.RequestHelper);
            }
            public void Initializes_fields()
            {
                //Arrange
                var databehandler       = new Databehandler(DomainUtility.PostenOrganisasjonsnummer());
                var klientkonfigurasjon = new Klientkonfigurasjon(IntegrasjonsPunktLocalHostMiljø);

                //Act
                var serviceProvider         = LoggingUtility.CreateServiceProviderAndSetUpLogging();
                var sikkerDigitalPostKlient = new SikkerDigitalPostKlient(databehandler, klientkonfigurasjon, serviceProvider.GetService <ILoggerFactory>());

                //Assert
                Assert.Equal(klientkonfigurasjon, sikkerDigitalPostKlient.Klientkonfigurasjon);
                Assert.Equal(databehandler, sikkerDigitalPostKlient.Databehandler);
                Assert.IsType <RequestHelper>(sikkerDigitalPostKlient.RequestHelper);
            }
Example #14
0
        private static void SendPost(PostInfo postInfo)
        {
            /*
             * I dette eksemplet er det Posten som er den som produserer informasjon/brev/post som skal formidles (Avsender),
             * Posten som er databehandler, og det er Digipostkassen som skal motta meldingen.
             */

            Log.Debug(@"--- STARTER Å SENDE POST ---");

            /*
             * SETT OPP MOTTAKER OG INNSTILLINGER
             */

            var avsender = new Avsender(new Organisasjonsnummer(Settings.Default.DifiOrgNummer));

            var databehandler = new Databehandler(
                new Organisasjonsnummer(Settings.Default.DifiOrgNummer),
                Settings.Default.DifiSertifikatThumbprint);


            var forsendelse         = GenererForsendelse(avsender, postInfo);
            var klientkonfigurasjon = SettOppKlientkonfigurasjon();

            klientkonfigurasjon.AktiverLagringAvDokumentpakkeTilDisk(@"C:\Users\User\Downloads\");

            var sikkerDigitalPostKlient = new SikkerDigitalPostKlient(databehandler, klientkonfigurasjon);

            /**
             * SEND POST OG MOTTA KVITTERINGER
             */
            SendPost(sikkerDigitalPostKlient, forsendelse);

            Log.Debug(@"--- STARTER Å HENTE KVITTERINGER ---");

            HentKvitteringer(sikkerDigitalPostKlient);

            Console.WriteLine();
            Log.Debug(@"--- FERDIG Å SENDE POST OG MOTTA KVITTERINGER :) --- ");
            Console.ReadKey();
        }
        private static void SendPost()
        {
            /*
             * I dette eksemplet er det Posten som er den som produserer informasjon/brev/post som skal formidles (Avsender),
             * Posten som er databehandler, og det er Digipostkassen som skal motta meldingen.
             */

            Console.WriteLine(@"--- STARTER Å SENDE POST ---");

            /*
             * SETT OPP MOTTAKER OG INNSTILLINGER
             */
            var postInfo = GenererPostInfo(ErDigitalPostMottaker, ErNorskBrev);
            var avsender = new Avsender(Settings.Default.OrgnummerPosten);

            var databehandler = new Databehandler(Settings.Default.OrgnummerPosten,
                                                  Settings.Default.DatabehandlerSertifikatThumbprint);

            avsender.Avsenderidentifikator = "digipost";

            var forsendelse             = GenererForsendelse(avsender, postInfo);
            var klientkonfigurasjon     = SettOppKlientkonfigurasjon();
            var sikkerDigitalPostKlient = new SikkerDigitalPostKlient(databehandler, klientkonfigurasjon);


            /**
             * SEND POST OG MOTTA KVITTERINGER
             */
            SendPost(sikkerDigitalPostKlient, forsendelse);

            Console.WriteLine(@"--- STARTER Å HENTE KVITTERINGER ---");

            HentKvitteringer(sikkerDigitalPostKlient);

            Console.WriteLine();
            Console.WriteLine(@"--- FERDIG Å SENDE POST OG MOTTA KVITTERINGER :) --- ");
            Console.ReadKey();
        }
Example #16
0
        private static void SendPost()
        {
            /*
             * I dette eksemplet er det Posten som er den som produserer informasjon/brev/post som skal formidles (Avsender),
             * Posten som er teknisk avsender, og det er Digipostkassen som skal motta meldingen.
             */

            Console.WriteLine("--- STARTER Å SENDE POST ---");

            /*
             * SETT OPP MOTTAKER OG INNSTILLINGER
             */
            PostkasseInnstillinger postkasseInnstillinger = PostkasseInnstillinger.GetPosten();
            var postInfo = GenererPostInfo(postkasseInnstillinger, ErDigitalPostMottaker, ErNorskBrev);
            var avsender = new Avsender(postkasseInnstillinger.OrgNummerBehandlingsansvarlig);

            var databehandler = new Databehandler(postkasseInnstillinger.OrgNummerDatabehandler, "8702F5E55217EC88CF2CCBADAC290BB4312594AC");

            avsender.Avsenderidentifikator = "digipost";

            var forsendelse             = GenererForsendelse(avsender, postInfo);
            var klientkonfigurasjon     = SettOppKlientkonfigurasjon();
            var sikkerDigitalPostKlient = new SikkerDigitalPostKlient(databehandler, klientkonfigurasjon);


            /**
             * SEND POST OG MOTTA KVITTERINGER
             */
            SendPost(sikkerDigitalPostKlient, forsendelse);

            Console.WriteLine("--- STARTER Å HENTE KVITTERINGER ---");

            HentKvitteringer(sikkerDigitalPostKlient);

            Console.WriteLine();
            Console.WriteLine("--- FERDIG Å SENDE POST OG MOTTA KVITTERINGER :) --- ");
            Console.ReadKey();
        }
Example #17
0
 public Builder WithFrom(Databehandler sender)
 {
     this.sender = sender.Organisasjonsnummer.Verdi;
     return(this);
 }
Example #18
0
 /// <param name="databehandler">
 /// Teknisk avsender er den parten som har ansvarlig for den tekniske utførelsen av sendingen.
 /// Teknisk avsender er den aktøren som står for utførelsen av den tekniske sendingen.
 /// Hvis sendingen utføres av en databehandler vil dette være databehandleren.
 /// Hvis sendingen utføres av behandlingsansvarlige selv er dette den behandlingsansvarlige.
 /// </param>
 /// <remarks>
 /// Se <a href="http://begrep.difi.no/SikkerDigitalPost/forretningslag/Aktorer">oversikt over aktører</a>
 /// </remarks>
 public SikkerDigitalPostKlient(Databehandler databehandler)
     : this(databehandler, new Klientkonfigurasjon())
 {
 }
        public void NyKlientOgSend()
        {
            var klientKonfig = new Klientkonfigurasjon(Miljø.FunksjoneltTestmiljø);

            Databehandler databehandler = null; //Som initiert tidligere
            Forsendelse   forsendelse   = null; //Som initiert tidligere

            var sdpKlient           = new SikkerDigitalPostKlient(databehandler, klientKonfig);
            var transportkvittering = sdpKlient.Send(forsendelse);

            if (transportkvittering is TransportOkKvittering)
            {
                //Når alt går fint
            }
            else if (transportkvittering is TransportFeiletKvittering)
            {
                var beskrivelse = ((TransportFeiletKvittering)transportkvittering).Beskrivelse;
            }

            ////////////////////////////////////////
            // Eksempel for henting av kvittering
            ////////////////////////////////////////

            var køId = "MpcId";
            var kvitteringsForespørsel = new Kvitteringsforespørsel(Prioritet.Prioritert, køId);

            Console.WriteLine(" > Henter kvittering på kø '{0}'...", kvitteringsForespørsel.Mpc);

            Kvittering kvittering = sdpKlient.HentKvittering(kvitteringsForespørsel);

            if (kvittering == null)
            {
                Console.WriteLine("  - Kø '{0}' er tom. Stopper å hente meldinger. ", kvitteringsForespørsel.Mpc);
            }

            if (kvittering is TransportFeiletKvittering)
            {
                var feil = ((TransportFeiletKvittering)kvittering).Beskrivelse;
                Console.WriteLine("En feil skjedde under transport.");
            }

            if (kvittering is Leveringskvittering)
            {
                Console.WriteLine("  - En leveringskvittering ble hentet!");
            }

            if (kvittering is Åpningskvittering)
            {
                Console.WriteLine("  - Har du sett. Noen har åpnet et brev. Moro.");
            }

            if (kvittering is Returpostkvittering)
            {
                Console.WriteLine("  - Du har fått en returpostkvittering for fysisk post.");
            }

            if (kvittering is Mottakskvittering)
            {
                Console.WriteLine("  - Kvittering på sending av fysisk post mottatt.");
            }

            if (kvittering is Feilmelding)
            {
                var feil = (Feilmelding)kvittering;
                Console.WriteLine("  - En feilmelding ble hentet :" + feil.Detaljer, true);
            }

            //////////////////////////////////////////
            /// Bekreft
            /////////////////////////////////////////

            sdpKlient.Bekreft((Forretningskvittering)kvittering);
        }
Example #20
0
 /// <summary>
 ///     Settings for BekreftKvittering
 /// </summary>
 public EnvelopeSettings(Forretningskvittering forrigeKvittering, Databehandler databehandler, GuidUtility guidUtility)
 {
     ForrigeKvittering = forrigeKvittering;
     Databehandler     = databehandler;
     GuidUtility       = guidUtility;
 }
Example #21
0
 /// <summary>
 ///     Settings for KvitteringsEnvelope
 /// </summary>
 public EnvelopeSettings(KvitteringsForespørsel kvitteringsforespørsel, Databehandler databehandler, GuidUtility guidUtility)
 {
     Kvitteringsforespørsel = kvitteringsforespørsel;
     Databehandler          = databehandler;
     GuidUtility            = guidUtility;
 }
Example #22
0
 /// <param name="databehandler">
 ///     Virksomhet (offentlig eller privat) som har en kontraktfestet avtale med Avsender med
 ///     formål å dekke hele eller deler av prosessen med å formidle en digital postmelding fra
 ///     <see cref="Avsender" /> til Meldingsformidler.
 /// </param>
 /// <param name="klientkonfigurasjon">
 ///     Brukes for å sette parametere som proxy, timeout, logging av forespørsel/respons og selve dokumentpakken.
 /// </param>
 /// <remarks>
 ///     Se <a href="http://begrep.difi.no/SikkerDigitalPost/forretningslag/Aktorer">oversikt over aktører</a>
 /// </remarks>
 public SikkerDigitalPostKlient(Databehandler databehandler, Klientkonfigurasjon klientkonfigurasjon)
     : this(databehandler, klientkonfigurasjon, new NullLoggerFactory())
 {
 }
Example #23
0
        public void OpprettKlientOgSendPost()
        {
            var integrasjonsPunktLocalHostMiljø = new Miljø(new Uri("http://127.0.0.1:9093"));
            var klientKonfig = new Klientkonfigurasjon(integrasjonsPunktLocalHostMiljø);

            Databehandler databehandler = null; //Som initiert tidligere
            Forsendelse   forsendelse   = null; //Som initiert tidligere

            var sdpKlient           = new SikkerDigitalPostKlient(databehandler, klientKonfig);
            var transportkvittering = sdpKlient.Send(forsendelse);

            if (transportkvittering is TransportOkKvittering)
            {
                //Når sending til integrasjonspunkt har gått fint.
            }
            else if (transportkvittering is TransportFeiletKvittering)
            {
                var beskrivelse = ((TransportFeiletKvittering)transportkvittering).Beskrivelse;
            }

            //Hent kvitteringer
            var kvitteringsForespørsel = new Kvitteringsforespørsel();

            Console.WriteLine(" > Henter kvittering på kø...");

            Kvittering kvittering = sdpKlient.HentKvittering(kvitteringsForespørsel);

            if (kvittering is TomKøKvittering)
            {
                Console.WriteLine("  - Kø er tom. Stopper å hente meldinger. ");
            }

            if (kvittering is TransportFeiletKvittering)
            {
                var feil = ((TransportFeiletKvittering)kvittering).Beskrivelse;
                Console.WriteLine("En feil skjedde under transport.");
            }

            if (kvittering is Leveringskvittering)
            {
                Console.WriteLine("  - En leveringskvittering ble hentet!");
            }

            if (kvittering is Åpningskvittering)
            {
                Console.WriteLine("  - Noen har åpnet et brev.");
            }

            if (kvittering is Returpostkvittering)
            {
                Console.WriteLine("  - Du har fått en returpostkvittering for fysisk post.");
            }

            if (kvittering is Mottakskvittering)
            {
                Console.WriteLine("  - Kvittering på sending av fysisk post mottatt.");
            }

            if (kvittering is Feilmelding)
            {
                var feil = (Feilmelding)kvittering;
                Console.WriteLine("  - En feilmelding ble hentet :" + feil.Detaljer, true);
            }

            //Husk at det ikke er mulig å hente nye kvitteringer før du har bekreftet mottak av nåværende.
            sdpKlient.Bekreft((Forretningskvittering)kvittering);
        }