diff --git a/docs/_site/LICENSE b/docs/_site/LICENSE deleted file mode 100644 index 0e7b28a6..00000000 --- a/docs/_site/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Damien Sorel - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/docs/_site/about.html b/docs/_site/about.html deleted file mode 100644 index 18d5746b..00000000 --- a/docs/_site/about.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - -
-
-
- -
-
-

Sikker Digital Post .NET

-

difi.github.io/difi-sikker-digital-post-klient-dotnet

-
-
-
- -
- -
-
-
-
-
-
-
-

- - Om sikker digital post - -

-
-
-
- - - -
-
-
- -
- - -

Om klienten

- -Dette er en .NET-klient for sending av sikker digital post for det offentlige. Formålet for klienten er å forenkle integrasjonen -som må utføres av avsendervirksomheter. For mer informasjon om sikker digital post, se her. -
- - - - - - - -
-
- - -
-
-
- - - - - - - \ No newline at end of file diff --git a/docs/_site/assets/css/docs.min.css b/docs/_site/assets/css/docs.min.css deleted file mode 100644 index 0151ff8c..00000000 --- a/docs/_site/assets/css/docs.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * Bootstrap Docs (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under the Creative Commons Attribution 3.0 Unported License. For - * details, see http://creativecommons.org/licenses/by/3.0/. - */ - - /*IKKE RØR CSS HER, OVERRIDE I STYLE CSS*/ - - body{position:relative}.table code{font-size:13px;font-weight:400}.btn-outline{color:#563d7c;background-color:transparent;border-color:#563d7c}.btn-outline:hover,.btn-outline:focus,.btn-outline:active{color:#fff;background-color:#563d7c;border-color:#563d7c}.btn-outline-inverse{color:#fff;background-color:transparent;border-color:#cdbfe3}.btn-outline-inverse:hover,.btn-outline-inverse:focus,.btn-outline-inverse:active{color:#563d7c;text-shadow:none;background-color:#fff;border-color:#fff}.bs-docs-booticon{display:block;font-weight:500;color:#fff;background-color:#563d7c;border-radius:15%;cursor:default;text-align:center}.bs-docs-booticon-sm{width:30px;height:30px;font-size:20px;line-height:28px}.bs-docs-booticon-lg{width:144px;height:144px;font-size:108px;line-height:140px}.bs-docs-booticon-inverse{color:#563d7c;background-color:#fff}.bs-docs-booticon-outline{background-color:transparent;border:1px solid #cdbfe3}.bs-docs-nav{margin-bottom:0;background-color:#fff;border-bottom:0}.bs-home-nav .bs-nav-b{display:none}.bs-docs-nav .navbar-brand,.bs-docs-nav .navbar-nav>li>a{color:#563d7c;font-weight:500}.bs-docs-nav .navbar-nav>li>a:hover,.bs-docs-nav .navbar-nav>.active>a,.bs-docs-nav .navbar-nav>.active>a:hover{color:#463265;background-color:#f9f9f9}.bs-docs-nav .navbar-toggle .icon-bar{background-color:#563d7c}.bs-docs-nav .navbar-header .navbar-toggle{border-color:#fff}.bs-docs-nav .navbar-header .navbar-toggle:hover,.bs-docs-nav .navbar-header .navbar-toggle:focus{background-color:#f9f9f9;border-color:#f9f9f9}.bs-docs-footer{padding-top:40px;padding-bottom:40px;margin-top:100px;color:#777;text-align:center;border-top:1px solid #e5e5e5}.bs-docs-footer-links{margin-top:20px;padding-left:0;color:#999}.bs-docs-footer-links li{display:inline;padding:0 2px}.bs-docs-footer-links li:first-child{padding-left:0}@media (min-width:768px){.bs-docs-footer p{margin-bottom:0}}.bs-docs-social{margin-bottom:20px;text-align:center}.bs-docs-social-buttons{display:inline-block;margin-bottom:0;padding-left:0;list-style:none}.bs-docs-social-buttons li{display:inline-block;line-height:1;padding:5px 8px}.bs-docs-social-buttons .twitter-follow-button{width:225px!important}.bs-docs-social-buttons .twitter-share-button{width:98px!important}.github-btn{border:0;overflow:hidden}.bs-docs-masthead,.bs-docs-header{position:relative;padding:30px 15px;color:#cdbfe3;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,.1);background-color:#6f5499;background-image:-webkit-linear-gradient(top,#563d7c 0,#6f5499 100%);background-image:linear-gradient(to bottom,#563d7c 0,#6f5499 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#563d7c', endColorstr='#6F5499', GradientType=0)}.bs-docs-masthead .bs-docs-booticon{margin:0 auto 30px}.bs-docs-masthead h1{font-weight:300;line-height:1;color:#fff}.bs-docs-masthead .lead{margin:0 auto 30px;font-size:20px;color:#fff}.bs-docs-masthead .version{margin-top:-15px;margin-bottom:30px;color:#9783b9}.bs-docs-masthead .btn{width:100%;padding:15px 30px;font-size:20px}@media (min-width:480px){.bs-docs-masthead .btn{width:auto}}@media (min-width:768px){.bs-docs-masthead{padding-top:80px;padding-bottom:80px}.bs-docs-masthead h1{font-size:60px}.bs-docs-masthead .lead{font-size:24px}}@media (min-width:992px){.bs-docs-masthead .lead{width:80%;font-size:30px}}.bs-docs-header{margin-bottom:40px;font-size:20px}.bs-docs-header h1{margin-top:0;color:#fff}.bs-docs-header p{margin-bottom:0;font-weight:300;line-height:1.4}.bs-docs-header .container{position:relative}@media (min-width:768px){.bs-docs-header{padding-top:60px;padding-bottom:60px;font-size:24px;text-align:left}.bs-docs-header h1{font-size:60px;line-height:1}}@media (min-width:992px){.bs-docs-header h1,.bs-docs-header p{margin-right:380px}}.carbonad{width:auto!important;margin:30px -30px -31px!important;padding:20px!important;overflow:hidden;height:auto!important;font-size:13px!important;line-height:16px!important;text-align:left;background:transparent!important;border:solid #866ab3!important;border-width:1px 0!important}.carbonad-img{margin:0!important}.carbonad-text,.carbonad-tag{float:none!important;display:block!important;width:auto!important;height:auto!important;margin-left:145px!important;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important}.carbonad-text{padding-top:0!important}.carbonad-tag{color:inherit!important;text-align:left!important}.carbonad-text a,.carbonad-tag a{color:#fff!important}.carbonad #azcarbon>img{display:none}@media (min-width:480px){.carbonad{width:330px!important;margin:20px auto!important;border-radius:4px;border-width:1px!important}.bs-docs-masthead .carbonad{margin:50px auto 0!important}}@media (min-width:768px){.carbonad{margin-left:0!important;margin-right:0!important}}@media (min-width:992px){.carbonad{position:absolute;top:0;right:15px;margin:0!important;padding:15px!important;width:330px!important}.bs-docs-masthead .carbonad{position:static}}.bs-docs-featurette{padding-top:40px;padding-bottom:40px;font-size:16px;line-height:1.5;color:#555;text-align:center;background-color:#fff;border-bottom:1px solid #e5e5e5}.bs-docs-featurette+.bs-docs-footer{margin-top:0;border-top:0}.bs-docs-featurette-title{font-size:30px;font-weight:400;color:#333;margin-bottom:5px}.half-rule{width:100px;margin:40px auto}.bs-docs-featurette h3{font-weight:400;color:#333;margin-bottom:5px}.bs-docs-featurette-img{display:block;margin-bottom:20px;color:#333}.bs-docs-featurette-img:hover{text-decoration:none;color:#428bca}.bs-docs-featurette-img img{display:block;margin-bottom:15px}.bs-docs-featured-sites{margin-left:-1px;margin-right:-1px}.bs-docs-featured-sites .col-sm-3{padding-left:1px;padding-right:1px}@media (min-width:480px){.bs-docs-featurette .img-responsive{margin-top:30px}}@media (min-width:768px){.bs-docs-featurette{padding-top:100px;padding-bottom:100px}.bs-docs-featurette-title{font-size:40px}.bs-docs-featurette .lead{margin-left:auto;margin-right:auto;max-width:80%}.bs-docs-featured-sites .col-sm-3:first-child img{border-top-left-radius:4px;border-bottom-left-radius:4px}.bs-docs-featured-sites .col-sm-3:last-child img{border-top-right-radius:4px;border-bottom-right-radius:4px}.bs-docs-featurette .img-responsive{margin-top:0}}.bs-docs-sidebar.affix{position:static}@media (min-width:768px){.bs-docs-sidebar{padding-left:20px}}.bs-docs-sidenav{margin-top:20px;margin-bottom:20px}.bs-docs-sidebar .nav>li>a{display:block;font-size:13px;font-weight:500;color:#999;padding:4px 20px}.bs-docs-sidebar .nav>li>a:hover,.bs-docs-sidebar .nav>li>a:focus{padding-left:19px;color:#563d7c;text-decoration:none;background-color:transparent;border-left:1px solid #563d7c}.bs-docs-sidebar .nav>.active>a,.bs-docs-sidebar .nav>.active:hover>a,.bs-docs-sidebar .nav>.active:focus>a{padding-left:18px;font-weight:700;color:#563d7c;background-color:transparent;border-left:2px solid #563d7c}.bs-docs-sidebar .nav .nav{display:none;padding-bottom:10px}.bs-docs-sidebar .nav .nav>li>a{padding-top:1px;padding-bottom:1px;padding-left:30px;font-size:12px;font-weight:400}.bs-docs-sidebar .nav .nav>li>a:hover,.bs-docs-sidebar .nav .nav>li>a:focus{padding-left:29px}.bs-docs-sidebar .nav .nav>.active>a,.bs-docs-sidebar .nav .nav>.active:hover>a,.bs-docs-sidebar .nav .nav>.active:focus>a{font-weight:500;padding-left:28px}.back-to-top{display:none;margin-top:10px;margin-left:10px;padding:4px 10px;font-size:12px;font-weight:500;color:#999}.back-to-top:hover{text-decoration:none;color:#563d7c}@media (min-width:768px){.back-to-top{display:block}}@media (min-width:992px){.bs-docs-sidebar .nav>.active>ul{display:block}.bs-docs-sidebar.affix,.bs-docs-sidebar.affix-bottom{width:213px}.bs-docs-sidebar.affix{position:fixed;top:20px}.bs-docs-sidebar.affix-bottom{position:absolute}.bs-docs-sidebar.affix-bottom .bs-docs-sidenav,.bs-docs-sidebar.affix .bs-docs-sidenav{margin-top:0;margin-bottom:0}}@media (min-width:1200px){.bs-docs-sidebar.affix-bottom,.bs-docs-sidebar.affix{width:263px}}.bs-docs-section{margin-bottom:60px}.bs-docs-section:last-child{margin-bottom:0}h1[id]{margin-top:0;padding-top:20px}.bs-callout{margin:20px 0;padding:20px;border-left:3px solid #eee}.bs-callout h4{margin-top:0;margin-bottom:5px}.bs-callout p:last-child{margin-bottom:0}.bs-callout code{background-color:#fff;border-radius:3px}.bs-callout-danger{background-color:#fdf7f7;border-color:#d9534f}.bs-callout-danger h4{color:#d9534f}.bs-callout-warning{background-color:#fcf8f2;border-color:#f0ad4e}.bs-callout-warning h4{color:#f0ad4e}.bs-callout-info{background-color:#f4f8fa;border-color:#5bc0de}.bs-callout-info h4{color:#5bc0de}.color-swatches{margin:0 -5px;overflow:hidden}.color-swatch{float:left;width:60px;height:60px;margin:0 5px;border-radius:3px}@media (min-width:768px){.color-swatch{width:100px;height:100px}}.color-swatches .gray-darker{background-color:#222}.color-swatches .gray-dark{background-color:#333}.color-swatches .gray{background-color:#555}.color-swatches .gray-light{background-color:#999}.color-swatches .gray-lighter{background-color:#eee}.color-swatches .brand-primary{background-color:#428bca}.color-swatches .brand-success{background-color:#5cb85c}.color-swatches .brand-warning{background-color:#f0ad4e}.color-swatches .brand-danger{background-color:#d9534f}.color-swatches .brand-info{background-color:#5bc0de}.color-swatches .bs-purple{background-color:#563d7c}.color-swatches .bs-purple-light{background-color:#c7bfd3}.color-swatches .bs-purple-lighter{background-color:#e5e1ea}.color-swatches .bs-gray{background-color:#f9f9f9}.bs-team .team-member{color:#555;line-height:32px}.bs-team .team-member:hover{color:#333;text-decoration:none}.bs-team .github-btn{float:right;margin-top:6px;width:180px;height:20px}.bs-team img{float:left;width:32px;margin-right:10px;border-radius:4px}.show-grid{margin-bottom:15px}.show-grid [class^=col-]{padding-top:10px;padding-bottom:10px;background-color:#eee;background-color:rgba(86,61,124,.15);border:1px solid #ddd;border:1px solid rgba(86,61,124,.2)}.bs-example{position:relative;padding:45px 15px 15px;margin:0 -15px 15px;background-color:#fafafa;box-shadow:inset 0 3px 6px rgba(0,0,0,.05);border-color:#e5e5e5 #eee #eee;border-style:solid;border-width:1px 0}.bs-example:after{content:"Example";position:absolute;top:15px;left:15px;font-size:12px;font-weight:700;color:#bbb;text-transform:uppercase;letter-spacing:1px}.bs-example+.highlight{margin:-15px -15px 15px;border-radius:0;border-width:0 0 1px}@media (min-width:768px){.bs-example{margin-left:0;margin-right:0;background-color:#fff;border-width:1px;border-color:#ddd;border-radius:4px 4px 0 0;box-shadow:none}.bs-example+.highlight{margin-top:-16px;margin-left:0;margin-right:0;border-width:1px;border-bottom-left-radius:4px;border-bottom-right-radius:4px}}.bs-example .container{width:auto}.bs-example>p:last-child,.bs-example>ul:last-child,.bs-example>ol:last-child,.bs-example>blockquote:last-child,.bs-example>.form-control:last-child,.bs-example>.table:last-child,.bs-example>.navbar:last-child,.bs-example>.jumbotron:last-child,.bs-example>.alert:last-child,.bs-example>.panel:last-child,.bs-example>.list-group:last-child,.bs-example>.well:last-child,.bs-example>.progress:last-child,.bs-example>.table-responsive:last-child>.table{margin-bottom:0}.bs-example>p>.close{float:none}.bs-example-type .table .type-info{color:#999;vertical-align:middle}.bs-example-type .table td{padding:15px 0;border-color:#eee}.bs-example-type .table tr:first-child td{border-top:0}.bs-example-type h1,.bs-example-type h2,.bs-example-type h3,.bs-example-type h4,.bs-example-type h5,.bs-example-type h6{margin:0}.bs-example-bg-classes p{padding:15px}.bs-example>.img-circle,.bs-example>.img-rounded,.bs-example>.img-thumbnail{margin:5px}.bs-example>.table-responsive>.table{background-color:#fff}.bs-example>.btn,.bs-example>.btn-group{margin-top:5px;margin-bottom:5px}.bs-example>.btn-toolbar+.btn-toolbar{margin-top:10px}.bs-example-control-sizing select,.bs-example-control-sizing input[type=text]+input[type=text]{margin-top:10px}.bs-example-form .input-group{margin-bottom:10px}.bs-example>textarea.form-control{resize:vertical}.bs-example>.list-group{max-width:400px}.bs-example .navbar:last-child{margin-bottom:0}.bs-navbar-top-example,.bs-navbar-bottom-example{z-index:1;padding:0;overflow:hidden}.bs-navbar-top-example .navbar-header,.bs-navbar-bottom-example .navbar-header{margin-left:0}.bs-navbar-top-example .navbar-fixed-top,.bs-navbar-bottom-example .navbar-fixed-bottom{position:relative;margin-left:0;margin-right:0}.bs-navbar-top-example{padding-bottom:45px}.bs-navbar-top-example:after{top:auto;bottom:15px}.bs-navbar-top-example .navbar-fixed-top{top:-1px}.bs-navbar-bottom-example{padding-top:45px}.bs-navbar-bottom-example .navbar-fixed-bottom{bottom:-1px}.bs-navbar-bottom-example .navbar{margin-bottom:0}@media (min-width:768px){.bs-navbar-top-example .navbar-fixed-top,.bs-navbar-bottom-example .navbar-fixed-bottom{position:absolute}.bs-navbar-top-example{border-radius:0 0 4px 4px}.bs-navbar-bottom-example{border-radius:4px 4px 0 0}}.bs-example .pagination{margin-top:10px;margin-bottom:10px}.bs-example>.pager{margin-top:0}.bs-example-modal{background-color:#f5f5f5}.bs-example-modal .modal{position:relative;top:auto;right:auto;left:auto;bottom:auto;z-index:1;display:block}.bs-example-modal .modal-dialog{left:auto;margin-left:auto;margin-right:auto}.bs-example>.dropdown>.dropdown-menu{position:static;display:block;margin-bottom:5px}.bs-example-tabs .nav-tabs{margin-bottom:15px}.bs-example-tooltips{text-align:center}.bs-example-tooltips>.btn{margin-top:5px;margin-bottom:5px}.bs-example-popover{padding-bottom:24px;background-color:#f9f9f9}.bs-example-popover .popover{position:relative;display:block;float:left;width:260px;margin:20px}.scrollspy-example{position:relative;height:200px;margin-top:10px;overflow:auto}.highlight{padding:9px 14px;margin-bottom:14px;background-color:#f7f7f9;border:1px solid #e1e1e8;border-radius:4px}.highlight pre{padding:0;margin-top:0;margin-bottom:0;background-color:transparent;border:0;white-space:nowrap}.highlight pre code{font-size:inherit;color:#333}.highlight pre .lineno{display:inline-block;width:22px;padding-right:5px;margin-right:10px;text-align:right;color:#bebec5}.table-responsive .highlight pre{white-space:normal}.bs-table th small,.responsive-utilities th small{display:block;font-weight:400;color:#999}.responsive-utilities tbody th{font-weight:400}.responsive-utilities td{text-align:center}.responsive-utilities td.is-visible{color:#468847;background-color:#dff0d8!important}.responsive-utilities td.is-hidden{color:#ccc;background-color:#f9f9f9!important}.responsive-utilities-test{margin-top:5px}.responsive-utilities-test .col-xs-6{margin-bottom:10px}.responsive-utilities-test span{display:block;padding:15px 10px;font-size:14px;font-weight:700;line-height:1.1;text-align:center;border-radius:4px}.visible-on .col-xs-6 .hidden-xs,.visible-on .col-xs-6 .hidden-sm,.visible-on .col-xs-6 .hidden-md,.visible-on .col-xs-6 .hidden-lg,.hidden-on .col-xs-6 .hidden-xs,.hidden-on .col-xs-6 .hidden-sm,.hidden-on .col-xs-6 .hidden-md,.hidden-on .col-xs-6 .hidden-lg{color:#999;border:1px solid #ddd}.visible-on .col-xs-6 .visible-xs,.visible-on .col-xs-6 .visible-sm,.visible-on .col-xs-6 .visible-md,.visible-on .col-xs-6 .visible-lg,.hidden-on .col-xs-6 .visible-xs,.hidden-on .col-xs-6 .visible-sm,.hidden-on .col-xs-6 .visible-md,.hidden-on .col-xs-6 .visible-lg{color:#468847;background-color:#dff0d8;border:1px solid #d6e9c6}.bs-glyphicons{margin:0 -19px 20px -16px;overflow:hidden}.bs-glyphicons-list{padding-left:0;list-style:none}.bs-glyphicons li{float:left;width:25%;height:115px;padding:10px;font-size:10px;line-height:1.4;text-align:center;border:1px solid #fff;background-color:#f9f9f9}.bs-glyphicons .glyphicon{margin-top:5px;margin-bottom:10px;font-size:24px}.bs-glyphicons .glyphicon-class{display:block;text-align:center;word-wrap:break-word}.bs-glyphicons li:hover{color:#fff;background-color:#563d7c}@media (min-width:768px){.bs-glyphicons{margin-left:0;margin-right:0}.bs-glyphicons li{width:12.5%;font-size:12px}}.bs-customizer .toggle{float:right;margin-top:25px}.bs-customizer label{margin-top:10px;font-weight:500;color:#555}.bs-customizer h2{margin-top:0;margin-bottom:5px;padding-top:30px}.bs-customizer h3{margin-bottom:0}.bs-customizer h4{margin-top:15px;margin-bottom:0}.bs-customizer .bs-callout h4{margin-top:0;margin-bottom:5px}.bs-customizer input[type=text]{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;background-color:#fafafa}.bs-customizer .help-block{font-size:12px;margin-bottom:5px}#less-section label{font-weight:400}.bs-customizer-input{float:left;width:33.333333%;padding-left:15px;padding-right:15px}.bs-customize-download .btn-outline{padding:20px}.bs-customizer-alert{position:fixed;top:0;left:0;right:0;z-index:1030;padding:15px 0;color:#fff;background-color:#d9534f;box-shadow:inset 0 1px 0 rgba(255,255,255,.25);border-bottom:1px solid #b94441}.bs-customizer-alert .close{margin-top:-4px;font-size:24px}.bs-customizer-alert p{margin-bottom:0}.bs-customizer-alert .glyphicon{margin-right:5px}.bs-customizer-alert pre{margin:10px 0 0;color:#fff;background-color:#a83c3a;border-color:#973634;box-shadow:inset 0 2px 4px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}.bs-brand-logos{display:table;width:100%;margin-bottom:15px;overflow:hidden;color:#563d7c;background-color:#f9f9f9;border-radius:4px}.bs-brand-item{padding:60px 0;text-align:center}.bs-brand-item+.bs-brand-item{border-top:1px solid #fff}.bs-brand-logos .inverse{color:#fff;background-color:#563d7c}.bs-brand-item h1,.bs-brand-item h3{margin-top:0;margin-bottom:0}.bs-brand-item .bs-docs-booticon{margin-left:auto;margin-right:auto}.bs-brand-item .glyphicon{width:30px;height:30px;margin:10px auto -10px;line-height:30px;color:#fff;border-radius:50%}.bs-brand-item .glyphicon-ok{background-color:#5cb85c}.bs-brand-item .glyphicon-remove{background-color:#d9534f}@media (min-width:768px){.bs-brand-item{display:table-cell;width:1%}.bs-brand-item+.bs-brand-item{border-top:0;border-left:1px solid #fff}.bs-brand-item h1{font-size:60px}}.bs-examples .thumbnail{margin-bottom:10px}.bs-examples h4{margin-bottom:5px}.bs-examples p{margin-bottom:20px}#focusedInput{border-color:#ccc;border-color:rgba(82,168,236,.8);outline:0;outline:thin dotted \9;-moz-box-shadow:0 0 8px rgba(82,168,236,.6);box-shadow:0 0 8px rgba(82,168,236,.6)}.hll{background-color:#ffc}.c{color:#999}.err{color:#A00;background-color:#FAA}.k{color:#069}.o{color:#555}.cm{color:#999}.cp{color:#099}.c1{color:#999}.cs{color:#999}.gd{background-color:#FCC;border:1px solid #C00}.ge{font-style:italic}.gr{color:red}.gh{color:#030}.gi{background-color:#CFC;border:1px solid #0C0}.go{color:#AAA}.gp{color:#009}.gu{color:#030}.gt{color:#9C6}.kc{color:#069}.kd{color:#069}.kn{color:#069}.kp{color:#069}.kr{color:#069}.kt{color:#078}.m{color:#F60}.s{color:#d44950}.na{color:#4f9fcf}.nb{color:#366}.nc{color:#0A8}.no{color:#360}.nd{color:#99F}.ni{color:#999}.ne{color:#C00}.nf{color:#C0F}.nl{color:#99F}.nn{color:#0CF}.nt{color:#2f6f9f}.nv{color:#033}.ow{color:#000}.w{color:#bbb}.mf{color:#F60}.mh{color:#F60}.mi{color:#F60}.mo{color:#F60}.sb{color:#C30}.sc{color:#C30}.sd{color:#C30;font-style:italic}.s2{color:#C30}.se{color:#C30}.sh{color:#C30}.si{color:#A00}.sx{color:#C30}.sr{color:#3AA}.s1{color:#C30}.ss{color:#FC3}.bp{color:#366}.vc{color:#033}.vg{color:#033}.vi{color:#033}.il{color:#F60}.css .o,.css .o+.nt,.css .nt+.nt{color:#999} \ No newline at end of file diff --git a/docs/_site/assets/css/style.css b/docs/_site/assets/css/style.css deleted file mode 100644 index 2c196d9d..00000000 --- a/docs/_site/assets/css/style.css +++ /dev/null @@ -1,97 +0,0 @@ -body{ - font-size: 16px; -} - -.branding.sub-portal { /*Padding under logo i topp*/ - padding-bottom: 25px; - font-size: 1.3em; -} - -.button.custom{ - font-size: 20px; -} - -.bs-docs-masthead { - padding-top:50px; - padding-bottom:40px; - margin-bottom:20px; -} - -.bs-docs-header h1, .bs-docs-header p { - margin-right:0px; -} - -#content { - position:relative; -} - -#content:after { - content:""; - position:absolute; - bottom:0px; - right:0px; - height:50px; - width:30%; - background:linear-gradient(135deg, transparent 50px, white 50px); -} -.list-group { - margin-top:10px ; -} - -.list-versions { - font-size: 1.3rem; - position: fixed; - bottom: 0%; - right: 12%; - width: 107px; -} -@media (max-width: 768px){ - .list-versions{ - top:0%; - font-size: 0.5em; - right: 0%; - } -} - - -@media (max-width:995px){ - .list-group { - display: none; - } -} - -@media (min-width: 768px) { - - nav > ul > li.active > ul { - display:block !important; - } - - nav > ul { - text-align: left - } - - .content-article #content>article h3 { - padding-top:20px; - font-size:1.15em; - } - - .content-article #content>article code { - padding:2px; - display:inline; - border-top: 0px; - border-bottom: 0px; - font-weight: 400; - font-size: 0.9em; - font-family: Menlo,Monaco,Consolas,"Courier New",monospace - } - - .content-article #content>article blockquote { - font-weight: 700; - color: #b9426d; - letter-spacing: -1px; - } - - .content-article #content>article ol li { - margin-bottom: 2px; - } -} \ No newline at end of file diff --git a/docs/_site/assets/images/bs-docs-masthead-pattern.png b/docs/_site/assets/images/bs-docs-masthead-pattern.png deleted file mode 100644 index d8b36ea4..00000000 Binary files a/docs/_site/assets/images/bs-docs-masthead-pattern.png and /dev/null differ diff --git a/docs/_site/assets/js/docs.min.js b/docs/_site/assets/js/docs.min.js deleted file mode 100644 index fe39aed1..00000000 --- a/docs/_site/assets/js/docs.min.js +++ /dev/null @@ -1,57 +0,0 @@ -$(function(){ - // build side menu - var html = ''; - - if (html == '') { - $('[role=complementary]').hide(); - $('[role=main]').toggleClass('col-md-9 col-md-12'); - } - else { - console.log('setting value'); - $('#aside-nav').html(html); - } - - - // Hook button - $( "#content div.button" ).each(function( index ) { - $(this).click(function() { - window.location.href = $(this).attr('data-url'); - return false; - }); - - $(this).keypress(function(event) { - if (event.which == 13 || event.which == 32) { - window.location.href = $(this).attr('data-url'); - return false; - } - }); - }); - - /*! - * JavaScript for Bootstrap's docs (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under the Creative Commons Attribution 3.0 Unported License. For - * details, see http://creativecommons.org/licenses/by/3.0/. - */ - !function(a){a(function(){if(navigator.userAgent.match(/IEMobile\/10\.0/)){var b=document.createElement("style");b.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")),document.querySelector("head").appendChild(b)}{var c=a(window),d=a(document.body);a(".navbar").outerHeight(!0)+10}d.scrollspy({target:".bs-docs-sidebar"}),c.on("load",function(){d.scrollspy("refresh")}),a(".bs-docs-container [href=#]").click(function(a){a.preventDefault()}),setTimeout(function(){var b=a(".bs-docs-sidebar");b.affix({offset:{top:function(){var c=b.offset().top,d=parseInt(b.children(0).css("margin-top"),10),e=a(".bs-docs-nav").height();return this.top=c-e-d},bottom:function(){return this.bottom=a(".bs-docs-footer").outerHeight(!0)}}})},100),setTimeout(function(){a(".bs-top").affix()},100)})}(jQuery); -}); diff --git a/docs/_site/cert/Test_Digipost.cer b/docs/_site/cert/Test_Digipost.cer deleted file mode 100644 index 5cd3dd89..00000000 Binary files a/docs/_site/cert/Test_Digipost.cer and /dev/null differ diff --git a/docs/_site/index.html b/docs/_site/index.html deleted file mode 100644 index 5e41ab8e..00000000 --- a/docs/_site/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - Redirecting… - - -

Redirecting…

- Click here if you are not redirected. - - diff --git a/docs/_site/package.json b/docs/_site/package.json deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/_site/v1.2/index.html b/docs/_site/v1.2/index.html deleted file mode 100644 index 47d1cf29..00000000 --- a/docs/_site/v1.2/index.html +++ /dev/null @@ -1,716 +0,0 @@ - - - - - - - - - - - - - - -
-
-
- -
-
-

Sikker Digital Post .NET

-

difi.github.io/difi-sikker-digital-post-klient-dotnet

-
-
-
- -
- -
-
-
-
-
-
-
-

- - .NET-bibliotek for sending av sikker digital post for offentlig sektor - -

-
-
-
- - -
- Du ser nå på dokumentasjonen for Sikker-digital-post-klient-dotnet 1.2, som ikke er den nyeste versjonen av klienten. Den nyeste versjonen er 3 og kan nåes her. -
- -
-
-
- -
-
-
- -
-
- -
-
Last ned
-
Gå til https://www.nuget.org/packages?q=Difi.SikkerDigitalPost.Klient
-
-
-
-
- - - -

Hvordan komme i gang

-
-

Klienten er tilgjengelig som en NuGet-pakke. Denne vil oppdateres jevnlig etter hvert som ny funksjonalitet legges til.

- -

For å installere NuGet-pakken, gjør følgende:

- -
    -
  1. Velg TOOLS -> NuGet Package Manager -> Manage Nuget Packages for Solution…
  2. -
  3. Søk etter sikker-digital-post. -
      -
    • Ønsker du pre-release, må du sørge for at det står Include Prerelease i drop-down menyen rett over søkeresuløtatene (der det står Stable Only).
    • -
    -
  4. -
  5. Velg sikker-digital-post-klient og trykk Install.
  6. -
-

-
- - - -

Klientkonfigurasjon

-
-

Klientkonfigurasjon brukes for å sette opp koblingsspesifikke innstillinger mot meldingsformidleren, som ProxyHost, ProxyScheme og TimeoutMillisekunder. Denne må sendes med som innparameter til SikkerDigitalPostKlient.

- -

For å sette url mot meldingsformidler, kan du gjøre dette slik:

- -
var klientkonfigurasjon = new Klientkonfigurasjon();
-
-klientkonfigurasjon.MeldingsformidlerUrl = new Uri("https://eksempelendepunkt.no")
- -

Endepunkter

- -

Funksjonelt testmiljø

-

https://qaoffentlig.meldingsformidler.digipost.no/api/

- -

Produksjonsmiljø

-

https://meldingsformidler.digipost.no/api/

- -

Norsk Helsenett - Funksjonelt testmiljø

-

https://qaoffentlig.meldingsformidler.nhn.digipost.no:4445/api/

- -

Norsk Helsenett - Produksjonsmiljø

-

https://meldingsformidler.nhn.digipost.no:4444/api/

-

-
- - - -

Sende post

-
-

Det anbefales å bruke dokumentasjon i klassene for mer detaljert beskrivelse av inputparametere.
- -

PostInfo for digital post

- -

Først, lag en motaker av type DigitalPostMottaker:

- -
-Postkassetjenesteleverandørene har ulik behandling av ikke-sensitiv tittel. Se begrep.difi.no for detaljer om denne forskjellen. -
- -
var personnummer = "01013300002";
-var postkasseadresse = "ola.nordmann#2233";
-var mottakersertifikat = new X509Certificate2(); //sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = "123456789";
-var mottaker = new DigitalPostMottaker(
-	    personnummer, 
-	    postkasseadresse, 
-	    mottakersertifikat, 
-	    orgnummerPostkasse
-    );
-
-var ikkeSensitivTittel = "En tittel som ikke er sensitiv";
-var sikkerhetsnivå = Sikkerhetsnivå.Nivå3;
-var postInfo = new DigitalPostInfo(mottaker, ikkeSensitivTittel, sikkerhetsnivå);
- -
Husk atOrgnummerPostkasse er organisasjonsnummer til leverandør av postkassetjenesten. Organisasjonsnummeret leveres fra oppslagstjenesten sammen med postkasseadressen og sertifikatet til innbygger.
- -

PostInfo for fysisk post

- -

Skal du sende fysisk post må du først lage en FysiskPostMottaker, en FysiskPostReturMottaker og sette informasjon om farge og makulering:

- -
var navn = "Ola Nordmann";
-var adresse = new NorskAdresse("0001", "Oslo");
-var mottakersertifikat = new X509Certificate2(); // sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = "123456789";
-var mottaker = new FysiskPostMottaker(navn, adresse, mottakersertifikat, orgnummerPostkasse);
-
-var returMottaker = new FysiskPostReturmottaker(
-    "John Doe", 
-    new NorskAdresse("0566", "Oslo")
-    {
-        Adresselinje1 = "Returgata 22"
-    });
-
-var postInfo = new FysiskPostInfo(
-            mottaker, 
-            Posttype.A, 
-            Utskriftsfarge.SortHvitt, 
-            Posthåndtering.MakuleringMedMelding, 
-            returMottaker
-        );
- -

Her er adressen av type NorskAdresse eller UtenlandskAdresse.

- -

Ved sending av fysisk post må man oppgi en returadresse, uavhengig av om brevet er satt til Posthåndtering.MakuleringMedMelding. Oppretting av en FysiskPostInfo vil da se slik ut:

- -

Oppsett før sending

- -

Opprett en avsender og en databehandler:

- -
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);
- -

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";
- -

Opprette forsendelse

-

Deretterer kan du opprette forsendelse. Forsendelsen inneholder de dokumentene - som skal til mottakeren:

- -
var hoveddokument = new Dokument(
-        tittel: "Dokumenttittel", 
-        dokumentsti: "/Dokumenter/Hoveddokument.pdf", 
-        mimeType: "application/pdf", 
-        språkkode: "NO", 
-        filnavn: "filnavn"
-    );
-
-var dokumentpakke = new Dokumentpakke(hoveddokument);
-
-var vedleggssti = "/Dokumenter/Vedlegg.pdf";
-var vedlegg = new Dokument(
-    tittel: "tittel", 
-    dokumentsti: vedleggssti, 
-    mimeType: "application/pdf", 
-    språkkode: "NO", 
-    filnavn: "filnavn");
-
-dokumentpakke.LeggTilVedlegg(vedlegg);
-
-Avsender avsender = null; //Som initiert tidligere
-PostInfo postInfo = null; //Som initiert tidligere
-var forsendelse = new Forsendelse(avsender, postInfo, dokumentpakke);
- -

Opprette klient og sende post

-

Siste steg er å opprette en SikkerDigitalPostKlient:

- -
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;
-}
- -

Transportkvitteringen får du tilbake umiddelbart; den trenger du ikke å polle for å få.

- -

Hente kvitteringer

-

For å hente kvitteringer må du sende en kvitteringsforespørsel:

- -
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 is TomKøKvittering)
-{
-    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);
-}
- -
-Husk at det ikke er mulig å hente nye kvitteringer før du har bekreftet mottak av nåværende. -
- -
sdpKlient.Bekreft((Forretningskvittering)kvittering);
- -

Kvitteringer du mottar når du gjør en kvitteringsforespørsel kan være av følgende typer: Leveringskvittering,Åpningskvittering, Returpostkvittering, Mottakskvittering eller Feilmelding. Kvittering kan også være av typenTransportFeiletKvittering. Dette kan skje når selve kvitteringsforespørselen er feilformatert.

- -
-Husk at hvis du får TomKøKvittering, så er køen tom. Du henter bare kvitteringer fra kø gitt av MpcId og Prioritet på Dokumentpakken som ble sendt. Hvis ikke dette ble satt spesifikt vil MpcId = "" og Prioritet = Prioritet.Normal. -
-

-
- - - -

Logging

-
-

Logge slik du ønsker

- -

Behovet for logging er forskjellig fra prosjekt til prosjekt. For å håndtere dette har vi lagt inn mulighet for å sette en egen loggfunksjon på Klientkonfigurasjon. KlientKonfigurasjon.Logger kan settes til en Action<TraceEventType, Guid?, String, String>, hvor TraceEventType er hvilken type loggmelding det er , Guid er Id på meldingen, nest siste parameter er metoden det ble logget i og til slutt har vi selve meldingen. Her vil meldinger

- -

Her er et eksempel:

- -
var klientkonfigurasjon = new Klientkonfigurasjon
-{
-    Logger = (severity, konversasjonsId, metode, melding) =>
-    {
-        System.Diagnostics.Debug.WriteLine("{0} - {1} [{2}]", 
-            DateTime.Now, 
-            melding, 
-            konversasjonsId.GetValueOrDefault()
-        );
-    }
-};
- -

Det som vi logges gjennom denne funksjonen er info om sendingsprosessen og XML som ligger ved i dokumentpakken.

- -

Lagre XML som sendes

- -

Når det sendes brev gjennom Sikker Digital Post, så sendes legges det også ved en del ekstra informasjon. Denne informasjonen er strukturert som XML og er nødvending for at brevet skal leveres til mottaker. Ofte kan dette være svært nyttig informasjon å logge for å se hva som faktisk sendes.

- -

For å aktivere logging av XML så setter du følgende på Klientkonfigurasjon:

- -
Klientkonfigurasjon.LoggXmlTilFil = true;
- -

Hvis Klientkonfigurasjon.StandardLoggSti ikke settes, så finner du loggfilene i %AppData%/Digipost/Logg.

- -

Lagre dokumentpakke som sendes

- -

Som avsender kan det være ønskelig å lagre selve pakken med dokumenter som sendes. Denne inneholder også XML som sendes og er den faktiske pakken som krypteres og sendes. For å gjøre dette, setter du følgende på Klientkonfigurasjon:

- -
var transportkvittering = sikkerDigitalPostKlient.Send(forsendelse, lagreDokumentpakke: true);
- -

Hvis Klientkonfigurasjon.StandardLoggSti ikke settes, så finner du dokumentpakkene i %AppData%/Digipost/Dokumentpakke.

-

-
- - - -

Sende post

-
-

For å gjøre det lettere å komme i gang med sending av Sikker digital post så følger det under noen konkrete eksempler.

- -
Det anbefales å bruke dokumentasjon i klassene for mer detaljert beskrivelse av inputparametere.
- -

PostInfo for digital post

- -

Først, lag en motaker av type DigitalPostMottaker:

- -
-Postkassetjenesteleverandørene har ulik behandling av ikke-sensitiv tittel. Se http://begrep.difi.no/Felles/ikkeSensitivTittel for detaljer om denne forskjellen. -
- -
var personnummer = "01013300002";
-var postkasseadresse = "ola.nordmann#2233";
-var mottakersertifikat = new X509Certificate2(); //sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = "123456789";
-var mottaker = new DigitalPostMottaker(
-	    personnummer, 
-	    postkasseadresse, 
-	    mottakersertifikat, 
-	    orgnummerPostkasse
-    );
-
-var ikkeSensitivTittel = "En tittel som ikke er sensitiv";
-var sikkerhetsnivå = Sikkerhetsnivå.Nivå3;
-var postInfo = new DigitalPostInfo(mottaker, ikkeSensitivTittel, sikkerhetsnivå);
- -
Husk atOrgnummerPostkasse er organisasjonsnummer til leverandør av postkassetjenesten. Organisasjonsnummeret leveres fra oppslagstjenesten sammen med postkasseadressen og sertifikatet til innbygger.
- -

PostInfo for fysisk post

- -

Skal du sende fysisk post må du først lage en FysiskPostMottaker, en FysiskPostReturMottaker og sette informasjon om farge og makulering:

- -
var navn = "Ola Nordmann";
-var adresse = new NorskAdresse("0001", "Oslo");
-var mottakersertifikat = new X509Certificate2(); // sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = "123456789";
-var mottaker = new FysiskPostMottaker(navn, adresse, mottakersertifikat, orgnummerPostkasse);
-
-var returMottaker = new FysiskPostReturmottaker(
-    "John Doe", 
-    new NorskAdresse("0566", "Oslo")
-    {
-        Adresselinje1 = "Returgata 22"
-    });
-
-var postInfo = new FysiskPostInfo(
-            mottaker, 
-            Posttype.A, 
-            Utskriftsfarge.SortHvitt, 
-            Posthåndtering.MakuleringMedMelding, 
-            returMottaker
-        );
- -

Her er adressen av type NorskAdresse eller UtenlandskAdresse.

- -

Ved sending av fysisk post må man oppgi en returadresse, uavhengig av om brevet er satt til Posthåndtering.MakuleringMedMelding. Oppretting av en FysiskPostInfo vil da se slik ut:

- -

Oppsett før sending

- -

Opprett en avsender og en databehandler:

- -
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);
- -

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";
- -

Opprette forsendelse

-

Deretterer kan du opprette forsendelse. Forsendelsen inneholder de dokumentene - som skal til mottakeren:

- -
var hoveddokument = new Dokument(
-        tittel: "Dokumenttittel", 
-        dokumentsti: "/Dokumenter/Hoveddokument.pdf", 
-        mimeType: "application/pdf", 
-        språkkode: "NO", 
-        filnavn: "filnavn"
-    );
-
-var dokumentpakke = new Dokumentpakke(hoveddokument);
-
-var vedleggssti = "/Dokumenter/Vedlegg.pdf";
-var vedlegg = new Dokument(
-    tittel: "tittel", 
-    dokumentsti: vedleggssti, 
-    mimeType: "application/pdf", 
-    språkkode: "NO", 
-    filnavn: "filnavn");
-
-dokumentpakke.LeggTilVedlegg(vedlegg);
-
-Avsender avsender = null; //Som initiert tidligere
-PostInfo postInfo = null; //Som initiert tidligere
-var forsendelse = new Forsendelse(avsender, postInfo, dokumentpakke);
- -

Opprette klient og sende post

-

Siste steg er å opprette en SikkerDigitalPostKlient:

- -
var klientKonfig = new Klientkonfigurasjon();
-
-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;
-}
- -

Transportkvitteringen får du tilbake umiddelbart; den trenger du ikke å polle for å få.

- -

Hente kvitteringer

-

For å hente kvitteringer må du sende en kvitteringsforespørsel:

- -
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);
-}
- -
-Husk at det ikke er mulig å hente nye kvitteringer før du har bekreftet mottak av nåværende. -
- -
sdpKlient.Bekreft((Forretningskvittering)kvittering);
- -

Kvitteringer du mottar når du gjør en kvitteringsforespørsel kan være av følgende typer: Leveringskvittering,Åpningskvittering, Returpostkvittering, Mottakskvittering eller Feilmelding. Kvittering kan også være av typenTransportFeiletKvittering. Dette kan skje når selve kvitteringsforespørselen er feilformatert.

- -
-Husk at hvis kvitteringen er null så er køen tom. Du henter bare kvitteringer fra kø gitt av MpcId og Prioritet på Dokumentpakken som ble sendt. Hvis ikke dette ble satt spesifikt vil MpcId = "" og Prioritet = Prioritet.Normal. -
-

-
- - - -

Installere sertifikater

-
-

For å sende sikker digital post trenger du å installere sertifikater. Grunnen til at vi ønsker å installere de er først og fremst sikkerhet. Alle sertifikater har en unik identifikator som kalles thumbprint. Hvis du ikke ønsker å håndtere selv i koden hvordan sertifikatene skal lastes, så kan du følge guiden under, steg for steg. Til slutt gjennomgås det hvordan du kan finne thumbprint til de installerte sertifikatene.

- -

Legg inn databehandlersertifikat i certificate store

- -
Databehandlersertifikat er det sertifikatet du har fått utstedt for å kunne sende post.
- -
    -
  1. Dobbeltklikk på sertifikatet (Sertifikatnavn.p12)
  2. -
  3. Velg at sertifikatet skal lagres i Current User og trykk Next
  4. -
  5. Filnavn skal nå være utfylt. Trykk Next
  6. -
  7. Skriv inn passord for privatekey og velg Mark this key as exportable …, trykk Next
  8. -
  9. Velg Automatically select the certificate store based on the type of certificate
  10. -
  11. Next og Finish
  12. -
  13. Får du spørsmål om å godta sertifikatet så gjør det.
  14. -
  15. Du skal da få en dialog som sier at importeringen var vellykket. Trykk Ok.
  16. -
- -

Legg inn mottakersertifikat i certificate store

- -
Mottakerens sertifikat vil være sertifikatet til Digipost eller E-Boks og brukes for å validere respons.
- -

Hvis du skal kjøre mot Digiposts testmiljø (https://qaoffentlig.meldingsformidler.digipost.no/api/ebms), så skal du bruke Test_Digipost.cer. Høyreklikk og lagre til disk.

- -
    -
  1. Start mmc.exe (Trykk windowstast og skriv mmc.exe)
  2. -
  3. Velg File -> Add/Remove Snap-in…
  4. -
  5. Merk Certificates og trykk Add >
  6. -
  7. Velg My user account og trykk Finish
  8. -
  9. Åpne noden Certificates - Current User
  10. -
  11. Høyreklikk på Trusted People og velg All Tasks -> Import…
  12. -
  13. Trykk Next
  14. -
  15. Finn mottaker-sertifikatet (Sertifikatnavn.cer) og legg det til. Trykk Next
  16. -
  17. Sertifikatet skal legges til i Trusted People
  18. -
  19. Next og Finish
  20. -
  21. Du skal da få en dialog som sier at importeringen var vellykket. Trykk Ok.
  22. -
- -

Finne installert sertifikat

- -

For å bruke sertifikatene i kode så må du finne thumbprint til hver av de. Dette gjøres lettest gjennom Microsoft Management Console (mmc.exe).

- -

SikkerDigitalPostKlient har støtte for å ta in thumbprint direkte for Databehandler og PostMottaker. Du finner thumbprint på følgende måte:

- -
    -
  1. Start mmc.exe (Trykk windowstast og skriv mmc.exe)
  2. -
  3. Velg File -> Add/Remove Snap-in…
  4. -
  5. Merk Certificates og trykk Add >
  6. -
  7. Velg My user account og trykk Finish
  8. -
  9. Åpne mappe for sertifikat -a. Databehandlersertifikat: Åpne noden Certificates - Current User - Personal - Certificates -b. Mottakersertifikat: Åpne noden Certificates - Current User - Trusted People - Certificates
  10. -
  11. Dobbeltklikk på sertifikatet du installerte
  12. -
  13. Velg Details, scroll ned til Thumbprint og kopier
  14. -
  15. VIKTIG: Hvis du får problemer i kode med at sertifikat ikke finnes, så kan det hende du får med en usynling BOM(Byte Order Mark). Slett derfor denne med å sette peker før første tegn i thumbprint i en teksteditor og trykk backspace. Hvis det var en BOM der så forsvant ikke det første synlige tegnet i thumbprint.
  16. -
- -

Ønsker du å sende inn sertifikater du har allerede har initialisert, kan du kalle konstruktøren som tar inn X509Certificate2.

- -

Som bruker av dette biblioteket er du en Databehandler som har ansvar for sending av meldinger. For å gjøre dette trenger du et sertifikat for å kunne autentisere deg mot Meldingsformidleren. Du kan lese mer om aktørene her.

-

-
- - - -

Ytelse

-
-

Klientbiblioteket benytter en HttpWebRequest for å kommunisere med Meldingsformidleren. I en konsollapplikasjon er denne begrenset til maks to samtidige forbindelser om gangen, mens den i en asp.net applikasjon er begrenset til ti. Dersom du ønsker å sende flere brev samtidig kan denne verdien endres f.eks til 3. Mer enn dette anbefales ikke.

- -
System.Net.ServicePointManager.DefaultConnectionLimit = 3;
- -

Se ServicePointManager.DefaultConnectionLimit for mer informasjon.

-

-
- - - - -
-
- -
- - - - - - - -
-
- - -
-
-
- - - - - - - \ No newline at end of file diff --git a/docs/_site/v1.3/index.html b/docs/_site/v1.3/index.html deleted file mode 100644 index 49e3153e..00000000 --- a/docs/_site/v1.3/index.html +++ /dev/null @@ -1,480 +0,0 @@ - - - - - - - - - - - - - - -
-
-
- -
-
-

Sikker Digital Post .NET

-

difi.github.io/difi-sikker-digital-post-klient-dotnet

-
-
-
- -
- -
-
-
-
-
-
-
-

- - .NET-bibliotek for sending av sikker digital post for offentlig sektor - -

-
-
-
- - - -
-
-
- -
-
-
- -
-
- -
-
Last ned
-
Gå til https://www.nuget.org/packages?q=Difi.SikkerDigitalPost.Klient
-
-
-
-
- - - -

Hvordan komme i gang

-
-

Klienten er tilgjengelig som en NuGet-pakke. Denne vil oppdateres jevnlig etter hvert som ny funksjonalitet legges til.

- -

For å installere NuGet-pakken, gjør følgende:

- -
    -
  1. Velg TOOLS -> NuGet Package Manager -> Manage Nuget Packages for Solution…
  2. -
  3. Søk etter sikker-digital-post. -
      -
    • Ønsker du pre-release, må du sørge for at det står Include Prerelease i drop-down menyen rett over søkeresuløtatene (der det står Stable Only).
    • -
    -
  4. -
  5. Velg sikker-digital-post-klient og trykk Install.
  6. -
-

-
- - - -

Klientkonfigurasjon

-
-

Klientkonfigurasjon brukes for å sette opp koblingsspesifikke innstillinger mot meldingsformidleren, som ProxyHost, ProxyScheme og TimeoutMillisekunder. Denne må sendes med som innparameter til SikkerDigitalPostKlient.

- -

For å sette url mot meldingsformidler, kan du gjøre dette slik:

- -
var klientkonfigurasjon = new Klientkonfigurasjon();
-
-klientkonfigurasjon.MeldingsformidlerUrl = new Uri("https://eksempelendepunkt.no")
-

-
- - - -

Logging

-
-

Logge slik du ønsker

- -

Behovet for logging er forskjellig fra prosjekt til prosjekt. For å håndtere dette har vi lagt inn mulighet for å sette en egen loggfunksjon på Klientkonfigurasjon. KlientKonfigurasjon.Logger kan settes til en Action<TraceEventType, Guid?, String, String>, hvor TraceEventType er hvilken type loggmelding det er , Guid er Id på meldingen, nest siste parameter er metoden det ble logget i og til slutt har vi selve meldingen. Her vil meldinger

- -

Her er et eksempel:

- -
var klientkonfigurasjon = new Klientkonfigurasjon
-{
-    Logger = (severity, konversasjonsId, metode, melding) =>
-    {
-        System.Diagnostics.Debug.WriteLine("{0} - {1} [{2}]", 
-            DateTime.Now, 
-            melding, 
-            konversasjonsId.GetValueOrDefault()
-        );
-    }
-};
- -

Det som vi logges gjennom denne funksjonen er info om sendingsprosessen og XML som ligger ved i dokumentpakken.

- -

Lagre XML som sendes

- -

Når det sendes brev gjennom Sikker Digital Post, så sendes legges det også ved en del ekstra informasjon. Denne informasjonen er strukturert som XML og er nødvending for at brevet skal leveres til mottaker. Ofte kan dette være svært nyttig informasjon å logge for å se hva som faktisk sendes.

- -

For å aktivere logging av XML så setter du følgende på Klientkonfigurasjon:

- -
Klientkonfigurasjon.LoggXmlTilFil = true;
- -

Hvis Klientkonfigurasjon.StandardLoggSti ikke settes, så finner du loggfilene i %AppData%/Digipost/Logg.

- -

Lagre dokumentpakke som sendes

- -

Som avsender kan det være ønskelig å lagre selve pakken med dokumenter som sendes. Denne inneholder også XML som sendes og er den faktiske pakken som krypteres og sendes. For å gjøre dette, setter du følgende på Klientkonfigurasjon:

- -
var transportkvittering = sikkerDigitalPostKlient.Send(forsendelse, lagreDokumentpakke: true);
- -

Hvis Klientkonfigurasjon.StandardLoggSti ikke settes, så finner du dokumentpakkene i %AppData%/Digipost/Dokumentpakke.

-

-
- - - -

Sende post

-
-

For å gjøre det lettere å komme i gang med sending av Sikker digital post så følger det under noen konkrete eksempler.

- -
Det anbefales å bruke dokumentasjon i klassene for mer detaljert beskrivelse av inputparametere.
- -

PostInfo for digital post

- -

Først, lag en motaker av type DigitalPostMottaker:

- -
-Postkassetjenesteleverandørene har ulik behandling av ikke-sensitiv tittel. Se http://begrep.difi.no/Felles/ikkeSensitivTittel for detaljer om denne forskjellen. -
- -
var personnummer = "01013300002";
-var postkasseadresse = "ola.nordmann#2233";
-var mottakersertifikat = new X509Certificate2(); //sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = "123456789";
-var mottaker = new DigitalPostMottaker(
-	    personnummer, 
-	    postkasseadresse, 
-	    mottakersertifikat, 
-	    orgnummerPostkasse
-    );
-
-var ikkeSensitivTittel = "En tittel som ikke er sensitiv";
-var sikkerhetsnivå = Sikkerhetsnivå.Nivå3;
-var postInfo = new DigitalPostInfo(mottaker, ikkeSensitivTittel, sikkerhetsnivå);
- -
Husk atOrgnummerPostkasse er organisasjonsnummer til leverandør av postkassetjenesten. Organisasjonsnummeret leveres fra oppslagstjenesten sammen med postkasseadressen og sertifikatet til innbygger.
- -

PostInfo for fysisk post

- -

Skal du sende fysisk post må du først lage en FysiskPostMottaker, en FysiskPostReturMottaker og sette informasjon om farge og makulering:

- -
var navn = "Ola Nordmann";
-var adresse = new NorskAdresse("0001", "Oslo");
-var mottakersertifikat = new X509Certificate2(); // sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = "123456789";
-var mottaker = new FysiskPostMottaker(navn, adresse, mottakersertifikat, orgnummerPostkasse);
-
-var returMottaker = new FysiskPostReturmottaker(
-    "John Doe", 
-    new NorskAdresse("0566", "Oslo")
-    {
-        Adresselinje1 = "Returgata 22"
-    });
-
-var postInfo = new FysiskPostInfo(
-            mottaker, 
-            Posttype.A, 
-            Utskriftsfarge.SortHvitt, 
-            Posthåndtering.MakuleringMedMelding, 
-            returMottaker
-        );
- -

Her er adressen av type NorskAdresse eller UtenlandskAdresse.

- -

Ved sending av fysisk post må man oppgi en returadresse, uavhengig av om brevet er satt til Posthåndtering.MakuleringMedMelding. Oppretting av en FysiskPostInfo vil da se slik ut:

- -

Oppsett før sending

- -

Opprett en avsender og en databehandler:

- -
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);
- -

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";
- -

Opprette forsendelse

-

Deretterer kan du opprette forsendelse. Forsendelsen inneholder de dokumentene - som skal til mottakeren:

- -
var hoveddokument = new Dokument(
-        tittel: "Dokumenttittel", 
-        dokumentsti: "/Dokumenter/Hoveddokument.pdf", 
-        mimeType: "application/pdf", 
-        språkkode: "NO", 
-        filnavn: "filnavn"
-    );
-
-var dokumentpakke = new Dokumentpakke(hoveddokument);
-
-var vedleggssti = "/Dokumenter/Vedlegg.pdf";
-var vedlegg = new Dokument(
-    tittel: "tittel", 
-    dokumentsti: vedleggssti, 
-    mimeType: "application/pdf", 
-    språkkode: "NO", 
-    filnavn: "filnavn");
-
-dokumentpakke.LeggTilVedlegg(vedlegg);
-
-Avsender avsender = null; //Som initiert tidligere
-PostInfo postInfo = null; //Som initiert tidligere
-var forsendelse = new Forsendelse(avsender, postInfo, dokumentpakke);
- -

Opprette klient og sende post

-

Siste steg er å opprette en SikkerDigitalPostKlient:

- -
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;
-}
- -

Transportkvitteringen får du tilbake umiddelbart; den trenger du ikke å polle for å få.

- -

Hente kvitteringer

-

For å hente kvitteringer må du sende en kvitteringsforespørsel:

- -
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);
-}
- -
-Husk at det ikke er mulig å hente nye kvitteringer før du har bekreftet mottak av nåværende. -
- -
sdpKlient.Bekreft((Forretningskvittering)kvittering);
- -

Kvitteringer du mottar når du gjør en kvitteringsforespørsel kan være av følgende typer: Leveringskvittering,Åpningskvittering, Returpostkvittering, Mottakskvittering eller Feilmelding. Kvittering kan også være av typenTransportFeiletKvittering. Dette kan skje når selve kvitteringsforespørselen er feilformatert.

- -
-Husk at hvis kvitteringen er null så er køen tom. Du henter bare kvitteringer fra kø gitt av MpcId og Prioritet på Dokumentpakken som ble sendt. Hvis ikke dette ble satt spesifikt vil MpcId = "" og Prioritet = Prioritet.Normal. -
-

-
- - - -

Installere sertifikater

-
-

For å sende sikker digital post trenger du å installere sertifikater. Grunnen til at vi ønsker å installere de er først og fremst sikkerhet. Alle sertifikater har en unik identifikator som kalles thumbprint. Hvis du ikke ønsker å håndtere selv i koden hvordan sertifikatene skal lastes, så kan du følge guiden under, steg for steg. Til slutt gjennomgås det hvordan du kan finne thumbprint til de installerte sertifikatene.

- -

Legg inn databehandlersertifikat i certificate store

- -
Databehandlersertifikat er det sertifikatet du har fått utstedt for å kunne sende post.
- -
    -
  1. Dobbeltklikk på sertifikatet (Sertifikatnavn.p12)
  2. -
  3. Velg at sertifikatet skal lagres i Current User og trykk Next
  4. -
  5. Filnavn skal nå være utfylt. Trykk Next
  6. -
  7. Skriv inn passord for privatekey og velg Mark this key as exportable …, trykk Next
  8. -
  9. Velg Automatically select the certificate store based on the type of certificate
  10. -
  11. Next og Finish
  12. -
  13. Får du spørsmål om å godta sertifikatet så gjør det.
  14. -
  15. Du skal da få en dialog som sier at importeringen var vellykket. Trykk Ok.
  16. -
- -

Finne installert sertifikat

- -

For å finne databehandlersertifikat i kode så må du finne thumbprint. Dette gjøres lettest gjennom Microsoft Management Console (mmc.exe).

- -

SikkerDigitalPostKlient har støtte for å ta in thumbprint direkte for Databehandler og PostMottaker. -Ønsker du å sende inn sertifikater du har allerede har initialisert, kan du kalle konstruktøren som tar inn X509Certificate2.

- -

Som bruker av dette biblioteket er du en Databehandler som har ansvar for sending av meldinger. For å gjøre dette trenger du et sertifikat for å kunne autentisere deg mot Meldingsformidleren. Du kan lese mer om aktørene her.

-

-
- - - -

Ytelse

-
-

Klientbiblioteket benytter en HttpWebRequest for å kommunisere med Meldingsformidleren. I en konsollapplikasjon er denne begrenset til maks to samtidige forbindelser om gangen, mens den i en asp.net applikasjon er begrenset til ti. Dersom du ønsker å sende flere brev samtidig kan denne verdien endres f.eks til 3. Mer enn dette anbefales ikke.

- -
System.Net.ServicePointManager.DefaultConnectionLimit = 3;
- -

Se ServicePointManager.DefaultConnectionLimit for mer informasjon.

-

-
- - - - -
-
- -
- - - - - - - -
-
- - -
-
-
- - - - - - - \ No newline at end of file diff --git a/docs/_site/v1.4/index.html b/docs/_site/v1.4/index.html deleted file mode 100644 index db07faa4..00000000 --- a/docs/_site/v1.4/index.html +++ /dev/null @@ -1,483 +0,0 @@ - - - - - - - - - - - - - - -
-
-
- -
-
-

Sikker Digital Post .NET

-

difi.github.io/difi-sikker-digital-post-klient-dotnet

-
-
-
- -
- -
-
-
-
-
-
-
-

- - .NET-bibliotek for sending av sikker digital post for offentlig sektor - -

-
-
-
- - -
- Du ser nå på dokumentasjonen for Sikker-digital-post-klient-dotnet 1.4, som ikke er den nyeste versjonen av klienten. Den nyeste versjonen er 3 og kan nåes her. -
- -
-
-
- -
-
-
- -
-
- -
-
Last ned
-
Gå til https://www.nuget.org/packages?q=Difi.SikkerDigitalPost.Klient
-
-
-
-
- - - -

Hvordan komme i gang

-
-

Klienten er tilgjengelig som en NuGet-pakke. Denne vil oppdateres jevnlig etter hvert som ny funksjonalitet legges til.

- -

For å installere NuGet-pakken, gjør følgende:

- -
    -
  1. Velg TOOLS -> NuGet Package Manager -> Manage Nuget Packages for Solution…
  2. -
  3. Søk etter sikker-digital-post. -
      -
    • Ønsker du pre-release, må du sørge for at det står Include Prerelease i drop-down menyen rett over søkeresuløtatene (der det står Stable Only).
    • -
    -
  4. -
  5. Velg sikker-digital-post-klient og trykk Install.
  6. -
-

-
- - - -

Klientkonfigurasjon

-
-

Klientkonfigurasjon brukes for å sette opp koblingsspesifikke innstillinger mot meldingsformidleren, som ProxyHost, ProxyScheme og TimeoutMillisekunder. Denne må sendes med som innparameter til SikkerDigitalPostKlient.

- -

For å sette url mot meldingsformidler, kan du gjøre dette slik:

- -
var klientkonfigurasjon = new Klientkonfigurasjon();
-
-klientkonfigurasjon.MeldingsformidlerUrl = new Uri("https://eksempelendepunkt.no")
-

-
- - - -

Logging

-
-

Logge slik du ønsker

- -

Behovet for logging er forskjellig fra prosjekt til prosjekt. For å håndtere dette har vi lagt inn mulighet for å sette en egen loggfunksjon på Klientkonfigurasjon. KlientKonfigurasjon.Logger kan settes til en Action<TraceEventType, Guid?, String, String>, hvor TraceEventType er hvilken type loggmelding det er , Guid er Id på meldingen, nest siste parameter er metoden det ble logget i og til slutt har vi selve meldingen. Her vil meldinger

- -

Her er et eksempel:

- -
var klientkonfigurasjon = new Klientkonfigurasjon
-{
-    Logger = (severity, konversasjonsId, metode, melding) =>
-    {
-        System.Diagnostics.Debug.WriteLine("{0} - {1} [{2}]", 
-            DateTime.Now, 
-            melding, 
-            konversasjonsId.GetValueOrDefault()
-        );
-    }
-};
- -

Det som vi logges gjennom denne funksjonen er info om sendingsprosessen og XML som ligger ved i dokumentpakken.

- -

Lagre XML som sendes

- -

Når det sendes brev gjennom Sikker Digital Post, så sendes legges det også ved en del ekstra informasjon. Denne informasjonen er strukturert som XML og er nødvending for at brevet skal leveres til mottaker. Ofte kan dette være svært nyttig informasjon å logge for å se hva som faktisk sendes.

- -

For å aktivere logging av XML så setter du følgende på Klientkonfigurasjon:

- -
Klientkonfigurasjon.LoggXmlTilFil = true;
- -

Hvis Klientkonfigurasjon.StandardLoggSti ikke settes, så finner du loggfilene i %AppData%/Digipost/Logg.

- -

Lagre dokumentpakke som sendes

- -

Som avsender kan det være ønskelig å lagre selve pakken med dokumenter som sendes. Denne inneholder også XML som sendes og er den faktiske pakken som krypteres og sendes. For å gjøre dette, setter du følgende på Klientkonfigurasjon:

- -
var transportkvittering = sikkerDigitalPostKlient.Send(forsendelse, lagreDokumentpakke: true);
- -

Hvis Klientkonfigurasjon.StandardLoggSti ikke settes, så finner du dokumentpakkene i %AppData%/Digipost/Dokumentpakke.

-

-
- - - -

Sende post

-
-

For å gjøre det lettere å komme i gang med sending av Sikker digital post så følger det under noen konkrete eksempler.

- -
Det anbefales å bruke dokumentasjon i klassene for mer detaljert beskrivelse av inputparametere.
- -

PostInfo for digital post

- -

Først, lag en motaker av type DigitalPostMottaker:

- -
-Postkassetjenesteleverandørene har ulik behandling av ikke-sensitiv tittel. Se http://begrep.difi.no/Felles/ikkeSensitivTittel for detaljer om denne forskjellen. -
- -
var personnummer = "01013300002";
-var postkasseadresse = "ola.nordmann#2233";
-var mottakersertifikat = new X509Certificate2(); //sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = "123456789";
-var mottaker = new DigitalPostMottaker(
-	    personnummer, 
-	    postkasseadresse, 
-	    mottakersertifikat, 
-	    orgnummerPostkasse
-    );
-
-var ikkeSensitivTittel = "En tittel som ikke er sensitiv";
-var sikkerhetsnivå = Sikkerhetsnivå.Nivå3;
-var postInfo = new DigitalPostInfo(mottaker, ikkeSensitivTittel, sikkerhetsnivå);
- -
Husk atOrgnummerPostkasse er organisasjonsnummer til leverandør av postkassetjenesten. Organisasjonsnummeret leveres fra oppslagstjenesten sammen med postkasseadressen og sertifikatet til innbygger.
- -

PostInfo for fysisk post

- -

Skal du sende fysisk post må du først lage en FysiskPostMottaker, en FysiskPostReturMottaker og sette informasjon om farge og makulering:

- -
var navn = "Ola Nordmann";
-var adresse = new NorskAdresse("0001", "Oslo");
-var mottakersertifikat = new X509Certificate2(); // sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = "123456789";
-var mottaker = new FysiskPostMottaker(navn, adresse, mottakersertifikat, orgnummerPostkasse);
-
-var returMottaker = new FysiskPostReturmottaker(
-    "John Doe", 
-    new NorskAdresse("0566", "Oslo")
-    {
-        Adresselinje1 = "Returgata 22"
-    });
-
-var postInfo = new FysiskPostInfo(
-            mottaker, 
-            Posttype.A, 
-            Utskriftsfarge.SortHvitt, 
-            Posthåndtering.MakuleringMedMelding, 
-            returMottaker
-        );
- -

Her er adressen av type NorskAdresse eller UtenlandskAdresse.

- -

Ved sending av fysisk post må man oppgi en returadresse, uavhengig av om brevet er satt til Posthåndtering.MakuleringMedMelding. Oppretting av en FysiskPostInfo vil da se slik ut:

- -

Oppsett før sending

- -

Opprett en avsender og en databehandler:

- -
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);
- -

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";
- -

Opprette forsendelse

-

Deretterer kan du opprette forsendelse. Forsendelsen inneholder de dokumentene - som skal til mottakeren:

- -
var hoveddokument = new Dokument(
-        tittel: "Dokumenttittel", 
-        dokumentsti: "/Dokumenter/Hoveddokument.pdf", 
-        mimeType: "application/pdf", 
-        språkkode: "NO", 
-        filnavn: "filnavn"
-    );
-
-var dokumentpakke = new Dokumentpakke(hoveddokument);
-
-var vedleggssti = "/Dokumenter/Vedlegg.pdf";
-var vedlegg = new Dokument(
-    tittel: "tittel", 
-    dokumentsti: vedleggssti, 
-    mimeType: "application/pdf", 
-    språkkode: "NO", 
-    filnavn: "filnavn");
-
-dokumentpakke.LeggTilVedlegg(vedlegg);
-
-Avsender avsender = null; //Som initiert tidligere
-PostInfo postInfo = null; //Som initiert tidligere
-var forsendelse = new Forsendelse(avsender, postInfo, dokumentpakke);
- -

Opprette klient og sende post

-

Siste steg er å opprette en SikkerDigitalPostKlient:

- -
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;
-}
- -

Transportkvitteringen får du tilbake umiddelbart; den trenger du ikke å polle for å få.

- -

Hente kvitteringer

-

For å hente kvitteringer må du sende en kvitteringsforespørsel:

- -
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 is TomKøKvittering)
-{
-    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);
-}
- -
-Husk at det ikke er mulig å hente nye kvitteringer før du har bekreftet mottak av nåværende. -
- -
sdpKlient.Bekreft((Forretningskvittering)kvittering);
- -

Kvitteringer du mottar når du gjør en kvitteringsforespørsel kan være av følgende typer: Leveringskvittering,Åpningskvittering, Returpostkvittering, Mottakskvittering eller Feilmelding. Kvittering kan også være av typenTransportFeiletKvittering. Dette kan skje når selve kvitteringsforespørselen er feilformatert.

- -
-Husk at hvis du får TomKøKvittering, så er køen tom. Du henter bare kvitteringer fra kø gitt av MpcId og Prioritet på Dokumentpakken som ble sendt. Hvis ikke dette ble satt spesifikt vil MpcId = "" og Prioritet = Prioritet.Normal. -
-

-
- - - -

Installere sertifikater

-
-

For å sende sikker digital post trenger du å installere sertifikater. Grunnen til at vi ønsker å installere de er først og fremst sikkerhet. Alle sertifikater har en unik identifikator som kalles thumbprint. Hvis du ikke ønsker å håndtere selv i koden hvordan sertifikatene skal lastes, så kan du følge guiden under, steg for steg. Til slutt gjennomgås det hvordan du kan finne thumbprint til de installerte sertifikatene.

- -

Legg inn databehandlersertifikat i certificate store

- -
Databehandlersertifikat er det sertifikatet du har fått utstedt for å kunne sende post.
- -
    -
  1. Dobbeltklikk på sertifikatet (Sertifikatnavn.p12)
  2. -
  3. Velg at sertifikatet skal lagres i Current User og trykk Next
  4. -
  5. Filnavn skal nå være utfylt. Trykk Next
  6. -
  7. Skriv inn passord for privatekey og velg Mark this key as exportable …, trykk Next
  8. -
  9. Velg Automatically select the certificate store based on the type of certificate
  10. -
  11. Next og Finish
  12. -
  13. Får du spørsmål om å godta sertifikatet så gjør det.
  14. -
  15. Du skal da få en dialog som sier at importeringen var vellykket. Trykk Ok.
  16. -
- -

Finne installert sertifikat

- -

For å finne databehandlersertifikat i kode så må du finne thumbprint. Dette gjøres lettest gjennom Microsoft Management Console (mmc.exe).

- -

SikkerDigitalPostKlient har støtte for å ta in thumbprint direkte for Databehandler og PostMottaker. -Ønsker du å sende inn sertifikater du har allerede har initialisert, kan du kalle konstruktøren som tar inn X509Certificate2.

- -

Som bruker av dette biblioteket er du en Databehandler som har ansvar for sending av meldinger. For å gjøre dette trenger du et sertifikat for å kunne autentisere deg mot Meldingsformidleren. Du kan lese mer om aktørene her.

-

-
- - - -

Ytelse

-
-

Klientbiblioteket benytter en HttpWebRequest for å kommunisere med Meldingsformidleren. I en konsollapplikasjon er denne begrenset til maks to samtidige forbindelser om gangen, mens den i en asp.net applikasjon er begrenset til ti. Dersom du ønsker å sende flere brev samtidig kan denne verdien endres f.eks til 20:

- -
System.Net.ServicePointManager.DefaultConnectionLimit = 20;
- -

Se ServicePointManager.DefaultConnectionLimit for mer informasjon.

-

-
- - - - -
-
- -
- - - - - - - -
-
- - -
-
-
- - - - - - - \ No newline at end of file diff --git a/docs/_site/v1.5/index.html b/docs/_site/v1.5/index.html deleted file mode 100644 index f6a51bf3..00000000 --- a/docs/_site/v1.5/index.html +++ /dev/null @@ -1,497 +0,0 @@ - - - - - - - - - - - - - - -
-
-
- -
-
-

Sikker Digital Post .NET

-

difi.github.io/difi-sikker-digital-post-klient-dotnet

-
-
-
- -
- -
-
-
-
-
-
-
-

- - .NET-bibliotek for sending av sikker digital post for offentlig sektor - -

-
-
-
- - -
- Du ser nå på dokumentasjonen for Sikker-digital-post-klient-dotnet 1.5, som ikke er den nyeste versjonen av klienten. Den nyeste versjonen er 3 og kan nåes her. -
- -
-
-
- -
-
-
- -
-
- -
-
Last ned
-
Gå til https://www.nuget.org/packages?q=Difi.SikkerDigitalPost.Klient
-
-
-
-
- - - -

Hvordan komme i gang

-
-

Klienten er tilgjengelig som en NuGet-pakke. Denne vil oppdateres jevnlig etter hvert som ny funksjonalitet legges til.

- -

For å installere NuGet-pakken, gjør følgende:

- -
    -
  1. Velg TOOLS -> NuGet Package Manager -> Manage Nuget Packages for Solution…
  2. -
  3. Søk etter sikker-digital-post. -
      -
    • Ønsker du pre-release, må du sørge for at det står Include Prerelease i drop-down menyen rett over søkeresuløtatene (der det står Stable Only).
    • -
    -
  4. -
  5. Velg sikker-digital-post-klient og trykk Install.
  6. -
-

-
- - - -

Klientkonfigurasjon

-
-

Klientkonfigurasjon brukes for å sette opp koblingsspesifikke innstillinger mot meldingsformidleren, som ProxyHost, ProxyScheme og TimeoutMillisekunder. Denne må sendes med som innparameter til SikkerDigitalPostKlient.

- -

For å sette url mot meldingsformidler, kan du gjøre dette slik:

- -
var klientkonfigurasjon = new Klientkonfigurasjon();
-
-klientkonfigurasjon.MeldingsformidlerUrl = new Uri("https://eksempelendepunkt.no")
-

-
- - - -

Logging

-
-

Logge slik du ønsker

- -

Behovet for logging er forskjellig fra prosjekt til prosjekt. For å håndtere dette har vi lagt inn mulighet for å sette en egen loggfunksjon på Klientkonfigurasjon. KlientKonfigurasjon.Logger kan settes til en Action<TraceEventType, Guid?, String, String>, hvor TraceEventType er hvilken type loggmelding det er , Guid er Id på meldingen, nest siste parameter er metoden det ble logget i og til slutt har vi selve meldingen. Her vil meldinger

- -

Her er et eksempel:

- -
var klientkonfigurasjon = new Klientkonfigurasjon
-{
-    Logger = (severity, konversasjonsId, metode, melding) =>
-    {
-        System.Diagnostics.Debug.WriteLine("{0} - {1} [{2}]", 
-            DateTime.Now, 
-            melding, 
-            konversasjonsId.GetValueOrDefault()
-        );
-    }
-};
- -

Det som vi logges gjennom denne funksjonen er info om sendingsprosessen og XML som ligger ved i dokumentpakken.

- -

Lagre XML som sendes

- -

Når det sendes brev gjennom Sikker Digital Post, så sendes legges det også ved en del ekstra informasjon. Denne informasjonen er strukturert som XML og er nødvending for at brevet skal leveres til mottaker. Ofte kan dette være svært nyttig informasjon å logge for å se hva som faktisk sendes.

- -

For å aktivere logging av XML så setter du følgende på Klientkonfigurasjon:

- -
Klientkonfigurasjon.LoggXmlTilFil = true;
- -

Hvis Klientkonfigurasjon.StandardLoggSti ikke settes, så finner du loggfilene i %AppData%/Digipost/Logg.

- -

Lagre dokumentpakke som sendes

- -

Som avsender kan det være ønskelig å lagre selve pakken med dokumenter som sendes. Denne inneholder også XML som sendes og er den faktiske pakken som krypteres og sendes. For å gjøre dette, setter du følgende på Klientkonfigurasjon:

- -
var transportkvittering = sikkerDigitalPostKlient.Send(forsendelse, lagreDokumentpakke: true);
- -

Hvis Klientkonfigurasjon.StandardLoggSti ikke settes, så finner du dokumentpakkene i %AppData%/Digipost/Dokumentpakke.

-

-
- - - -

Sende post

-
-

For å gjøre det lettere å komme i gang med sending av Sikker digital post så følger det under noen konkrete eksempler.

- -
Det anbefales å bruke dokumentasjon i klassene for mer detaljert beskrivelse av inputparametere.
- -

PostInfo for digital post

- -

Først, lag en motaker av type DigitalPostMottaker:

- -
-Postkassetjenesteleverandørene har ulik behandling av ikke-sensitiv tittel. Se http://begrep.difi.no/Felles/ikkeSensitivTittel for detaljer om denne forskjellen. -
- -
var personnummer = "01013300002";
-var postkasseadresse = "ola.nordmann#2233";
-var mottakersertifikat = new X509Certificate2(); //sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = "123456789";
-var mottaker = new DigitalPostMottaker(
-	    personnummer, 
-	    postkasseadresse, 
-	    mottakersertifikat, 
-	    orgnummerPostkasse
-    );
-
-var ikkeSensitivTittel = "En tittel som ikke er sensitiv";
-var sikkerhetsnivå = Sikkerhetsnivå.Nivå3;
-var postInfo = new DigitalPostInfo(mottaker, ikkeSensitivTittel, sikkerhetsnivå);
- -
Husk atOrgnummerPostkasse er organisasjonsnummer til leverandør av postkassetjenesten. Organisasjonsnummeret leveres fra oppslagstjenesten sammen med postkasseadressen og sertifikatet til innbygger.
- -

PostInfo for fysisk post

- -

Skal du sende fysisk post må du først lage en FysiskPostMottaker, en FysiskPostReturMottaker og sette informasjon om farge og makulering:

- -
var navn = "Ola Nordmann";
-var adresse = new NorskAdresse("0001", "Oslo");
-var mottakersertifikat = new X509Certificate2(); // sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = "123456789";
-var mottaker = new FysiskPostMottaker(navn, adresse, mottakersertifikat, orgnummerPostkasse);
-
-var returMottaker = new FysiskPostReturmottaker(
-    "John Doe", 
-    new NorskAdresse("0566", "Oslo")
-    {
-        Adresselinje1 = "Returgata 22"
-    });
-
-var postInfo = new FysiskPostInfo(
-            mottaker, 
-            Posttype.A, 
-            Utskriftsfarge.SortHvitt, 
-            Posthåndtering.MakuleringMedMelding, 
-            returMottaker
-        );
- -

Her er adressen av type NorskAdresse eller UtenlandskAdresse.

- -

Ved sending av fysisk post må man oppgi en returadresse, uavhengig av om brevet er satt til Posthåndtering.MakuleringMedMelding. Oppretting av en FysiskPostInfo vil da se slik ut:

- -

Oppsett før sending

- -

Opprett en avsender og en databehandler:

- -
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);
- -

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";
- -

Opprette forsendelse

-

Deretterer kan du opprette forsendelse. Forsendelsen inneholder de dokumentene - som skal til mottakeren:

- -
var hoveddokument = new Dokument(
-        tittel: "Dokumenttittel", 
-        dokumentsti: "/Dokumenter/Hoveddokument.pdf", 
-        mimeType: "application/pdf", 
-        språkkode: "NO", 
-        filnavn: "filnavn"
-    );
-
-var dokumentpakke = new Dokumentpakke(hoveddokument);
-
-var vedleggssti = "/Dokumenter/Vedlegg.pdf";
-var vedlegg = new Dokument(
-    tittel: "tittel", 
-    dokumentsti: vedleggssti, 
-    mimeType: "application/pdf", 
-    språkkode: "NO", 
-    filnavn: "filnavn");
-
-dokumentpakke.LeggTilVedlegg(vedlegg);
-
-Avsender avsender = null; //Som initiert tidligere
-PostInfo postInfo = null; //Som initiert tidligere
-var forsendelse = new Forsendelse(avsender, postInfo, dokumentpakke);
- -

Opprette klient og sende post

-

Siste steg er å opprette en SikkerDigitalPostKlient:

- -
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;
-}
- -

Transportkvitteringen får du tilbake umiddelbart; den trenger du ikke å polle for å få.

- -

Hente kvitteringer

-

For å hente kvitteringer må du sende en kvitteringsforespørsel:

- -
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 is TomKøKvittering)
-{
-    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);
-}
- -
-Husk at det ikke er mulig å hente nye kvitteringer før du har bekreftet mottak av nåværende. -
- -
sdpKlient.Bekreft((Forretningskvittering)kvittering);
- -

Kvitteringer du mottar når du gjør en kvitteringsforespørsel kan være av følgende typer: Leveringskvittering,Åpningskvittering, Returpostkvittering, Mottakskvittering eller Feilmelding. Kvittering kan også være av typenTransportFeiletKvittering. Dette kan skje når selve kvitteringsforespørselen er feilformatert.

- -
-Husk at hvis du får TomKøKvittering, så er køen tom. Du henter bare kvitteringer fra kø gitt av MpcId og Prioritet på Dokumentpakken som ble sendt. Hvis ikke dette ble satt spesifikt vil MpcId = "" og Prioritet = Prioritet.Normal. -
-

-
- - - -

Installere sertifikater

-
-

For å sende sikker digital post trenger du å installere sertifikater. Grunnen til at vi ønsker å installere de er først og fremst sikkerhet. Alle sertifikater har en unik identifikator som kalles thumbprint. Hvis du ikke ønsker å håndtere selv i koden hvordan sertifikatene skal lastes, så kan du følge guiden under, steg for steg. Til slutt gjennomgås det hvordan du kan finne thumbprint til de installerte sertifikatene.

- -

Legg inn databehandlersertifikat i certificate store

- -
Databehandlersertifikat er det sertifikatet du har fått utstedt for å kunne sende post.
- -
    -
  1. Dobbeltklikk på sertifikatet (Sertifikatnavn.p12)
  2. -
  3. Velg at sertifikatet skal lagres i Current User og trykk Next
  4. -
  5. Filnavn skal nå være utfylt. Trykk Next
  6. -
  7. Skriv inn passord for privatekey og velg Mark this key as exportable …, trykk Next
  8. -
  9. Velg Automatically select the certificate store based on the type of certificate
  10. -
  11. Next og Finish
  12. -
  13. Får du spørsmål om å godta sertifikatet så gjør det.
  14. -
  15. Du skal da få en dialog som sier at importeringen var vellykket. Trykk Ok.
  16. -
- -

Finne installert sertifikat

- -

For å finne databehandlersertifikat i kode så må du finne thumbprint. Dette gjøres lettest gjennom Microsoft Management Console (mmc.exe).

- -

SikkerDigitalPostKlient har støtte for å ta in thumbprint direkte for Databehandler og PostMottaker.

- -

For å finne thumbprint så er det lettest å gjøre det vha Microsoft Management Console (mmc.exe).

- -
    -
  1. Start mmc.exe (Trykk windowstast og skriv mmc.exe)
  2. -
  3. Velg File -> Add/Remove Snap-in…
  4. -
  5. Merk Certificates og trykk Add >
  6. -
  7. Velg My user account og trykk Finish
  8. -
  9. Åpne mappe for sertifikat og finn avsendersertifikat: Åpne noden Certificates - Current User - Personal - Certificates
  10. -
  11. Dobbeltklikk på sertifikatet du installerte
  12. -
  13. Velg Details, scroll ned til Thumbprint og kopier
  14. -
  15. VIKTIG: Hvis du får problemer i kode med at sertifikat ikke finnes, så kan det hende du får med en usynling BOM(Byte Order Mark). Slett derfor denne med å sette peker før første tegn i thumbprint i en teksteditor. Hvis det var en BOM der så forsvant ikke det første synlige tegnet i thumbprint.
  16. -
- -

Ønsker du å sende inn sertifikater du har allerede har initialisert, kan du kalle konstruktøren som tar inn X509Certificate2.

- -

Som bruker av dette biblioteket er du en Databehandler som har ansvar for sending av meldinger. For å gjøre dette trenger du et sertifikat for å kunne autentisere deg mot Meldingsformidleren. Du kan lese mer om aktørene her.

-

-
- - - -

Ytelse

-
-

Klientbiblioteket benytter en HttpWebRequest for å kommunisere med Meldingsformidleren. I en konsollapplikasjon er denne begrenset til maks to samtidige forbindelser om gangen, mens den i en asp.net applikasjon er begrenset til ti. Dersom du ønsker å sende flere brev samtidig kan denne verdien endres f.eks til 3. Mer enn dette anbefales ikke.

- -
System.Net.ServicePointManager.DefaultConnectionLimit = 3;
- -

Se ServicePointManager.DefaultConnectionLimit for mer informasjon.

-

-
- - - - -
-
- -
- - - - - - - -
-
- - -
-
-
- - - - - - - \ No newline at end of file diff --git a/docs/_site/v1.6-1.11/index.html b/docs/_site/v1.6-1.11/index.html deleted file mode 100644 index b4d6ad83..00000000 --- a/docs/_site/v1.6-1.11/index.html +++ /dev/null @@ -1,520 +0,0 @@ - - - - - - - - - - - - - - -
-
-
- -
-
-

Sikker Digital Post .NET

-

difi.github.io/difi-sikker-digital-post-klient-dotnet

-
-
-
- -
- -
-
-
-
-
-
-
-

- - .NET-bibliotek for sending av sikker digital post for offentlig sektor - -

-
-
-
- - -
- Du ser nå på dokumentasjonen for Sikker-digital-post-klient-dotnet 1.6-1.11, som ikke er den nyeste versjonen av klienten. Den nyeste versjonen er 3 og kan nåes her. -
- -
-
-
- -
-
-
- -
-
- -
-
Last ned
-
Gå til https://www.nuget.org/packages?q=Difi.SikkerDigitalPost.Klient
-
-
-
-
- - - -

Hvordan komme i gang

-
-

Klienten er tilgjengelig som en NuGet-pakke. Denne vil oppdateres jevnlig etter hvert som ny funksjonalitet legges til.

- -

For å installere NuGet-pakken, gjør følgende:

- -
    -
  1. Velg TOOLS -> NuGet Package Manager -> Manage Nuget Packages for Solution…
  2. -
  3. Søk etter sikker-digital-post. -
      -
    • Ønsker du pre-release, må du sørge for at det står Include Prerelease i drop-down menyen rett over søkeresuløtatene (der det står Stable Only).
    • -
    -
  4. -
  5. Velg sikker-digital-post-klient og trykk Install.
  6. -
-

-
- - - -

Sende post

-
-

-

Det anbefales å bruke dokumentasjon i klassene for mer detaljert beskrivelse av inputparametere.

-
- -

PostInfo for digital post

- -

Først, lag en motaker av type DigitalPostMottaker:

- -
-

Postkassetjenesteleverandørene har ulik behandling av ikke-sensitiv tittel. Se begrep.difi.no for detaljer om denne forskjellen.

-
- -
var personnummer = "01013300002";
-var postkasseadresse = "ola.nordmann#2233";
-var mottakersertifikat = new X509Certificate2(); //sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = "123456789";
-var mottaker = new DigitalPostMottaker(
-	    personnummer, 
-	    postkasseadresse, 
-	    mottakersertifikat, 
-	    orgnummerPostkasse
-    );
-
-var ikkeSensitivTittel = "En tittel som ikke er sensitiv";
-var sikkerhetsnivå = Sikkerhetsnivå.Nivå3;
-var postInfo = new DigitalPostInfo(mottaker, ikkeSensitivTittel, sikkerhetsnivå);
- -
-

Husk at OrgnummerPostkasse er organisasjonsnummer til leverandør av postkassetjenesten. Organisasjonsnummeret leveres fra oppslagstjenesten sammen med postkasseadressen og sertifikatet til innbygger.

-
- -

PostInfo for fysisk post

- -

Skal du sende fysisk post må du først lage en FysiskPostMottaker, en FysiskPostReturMottaker og sette informasjon om farge og makulering:

- -
var navn = "Ola Nordmann";
-var adresse = new NorskAdresse("0001", "Oslo");
-var mottakersertifikat = new X509Certificate2(); // sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = "123456789";
-var mottaker = new FysiskPostMottaker(navn, adresse, mottakersertifikat, orgnummerPostkasse);
-
-var returMottaker = new FysiskPostReturmottaker(
-    "John Doe", 
-    new NorskAdresse("0566", "Oslo")
-    {
-        Adresselinje1 = "Returgata 22"
-    });
-
-var postInfo = new FysiskPostInfo(
-            mottaker, 
-            Posttype.A, 
-            Utskriftsfarge.SortHvitt, 
-            Posthåndtering.MakuleringMedMelding, 
-            returMottaker
-        );
- -

Her er adressen av type NorskAdresse eller UtenlandskAdresse.

- -

Ved sending av fysisk post må man oppgi en returadresse, uavhengig av om brevet er satt til Posthåndtering.MakuleringMedMelding. Oppretting av en FysiskPostInfo vil da se slik ut:

- -

Oppsett før sending

- -

Opprett en avsender og en databehandler:

- -
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);
- -

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";
- -

Opprette forsendelse

- -

Deretterer kan du opprette forsendelse. Forsendelsen inneholder de dokumentene - som skal til mottakeren:

- -
var hoveddokument = new Dokument(
-        tittel: "Dokumenttittel", 
-        dokumentsti: "/Dokumenter/Hoveddokument.pdf", 
-        mimeType: "application/pdf", 
-        språkkode: "NO", 
-        filnavn: "filnavn"
-    );
-
-var dokumentpakke = new Dokumentpakke(hoveddokument);
-
-var vedleggssti = "/Dokumenter/Vedlegg.pdf";
-var vedlegg = new Dokument(
-    tittel: "tittel", 
-    dokumentsti: vedleggssti, 
-    mimeType: "application/pdf", 
-    språkkode: "NO", 
-    filnavn: "filnavn");
-
-dokumentpakke.LeggTilVedlegg(vedlegg);
-
-Avsender avsender = null; //Som initiert tidligere
-PostInfo postInfo = null; //Som initiert tidligere
-var forsendelse = new Forsendelse(avsender, postInfo, dokumentpakke);
- -

Opprette klient og sende post

- -

Siste steg er å opprette en SikkerDigitalPostKlient:

- -
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;
-}
- -

Transportkvitteringen får du tilbake umiddelbart; den trenger du ikke å polle for å få.

- -

Hente kvitteringer

- -

For å hente kvitteringer må du sende en kvitteringsforespørsel:

- -
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 is TomKøKvittering)
-{
-    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);
-}
- -
-

Husk at det ikke er mulig å hente nye kvitteringer før du har bekreftet mottak av nåværende.

-
- -
sdpKlient.Bekreft((Forretningskvittering)kvittering);
- -

Kvitteringer du mottar når du gjør en kvitteringsforespørsel kan være av følgende typer: Leveringskvittering,Åpningskvittering, Returpostkvittering, Mottakskvittering eller Feilmelding. Kvittering kan også være av typenTransportFeiletKvittering. Dette kan skje når selve kvitteringsforespørselen er feilformatert.

- -
-

Husk at hvis du får TomKøKvittering så er køen tom. Du henter bare kvitteringer fra kø gitt av MpcId og Prioritet. Hvis ikke dette blir satt spesifikt vil det hentes fra kø hvor MpcId = "" og Prioritet = Prioritet.Normal.

-
- -

-
- - - -

Logging

-
-

Generelt

- -

Klienten bruker Common.Logging API for å abstrahere logging. Det er opp til brukeren å imlementere API med et passende loggrammeverk, men vi viser hvordan dette kan gjøres med Log4Net.

- -

Loggnivå DEBUG vil logge resultat for forespørsler som går bra og de som feiler, WARN bare for feilede forespørsler eller verre, mens ERROR bare skjer om sending av brev feilet. Disse loggerne vil være under Difi.SikkerDigitalPost.Klient

- -

Implementere Log4Net som logger

- -
    -
  1. Installer Nuget-pakke Common.Logging.Log4Net. Denne vil da også installere avhengighetene Common.Logging.Core og Common.Logging. Merk at versjoneringen her er litt underlig, men et søk i Nuget Gallery vil f.eks. vise at Log4Net 2.0.3 har pakkenavn Log4net [1.2.13] 2.0.3. Da er det Common.Logging.Log4Net1213 som skal installeres.
  2. -
  3. Legg merke til hvilken versjon av Log4net som faktisk installeres. Av en eller annen grunn kan det bli 2.0.0 som installeres. Da må versjonen oppdateres til 2.0.3.
  4. -
- -

En fullstendig App.config med Log4Net-adapter og en RollingFileAppender:

- -
<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-  <configSections>
-    <sectionGroup name="common">
-      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
-    </sectionGroup>
-    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
-  </configSections>
-
-  <common>
-    <logging>
-      <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net1213">
-        <arg key="configType" value="INLINE" />
-      </factoryAdapter>
-    </logging>
-  </common>
-
-   <log4net>
-    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
-      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
-      <file value="${AppData}\Digipost\SikkerDigitalPost\" />
-      <appendToFile value="true" />
-      <rollingStyle value="Date" />
-      <staticLogFileName value="false" />
-      <rollingStyle value="Composite" />
-      <param name="maxSizeRollBackups" value="10" />
-      <datePattern value="yyyy.MM.dd' sikker-digital-post-klient-dotnet.log'" />
-      <maximumFileSize value="100MB" />
-      <layout type="log4net.Layout.PatternLayout">
-        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-      </layout>
-    </appender>
-   <root>
-      <appender-ref ref="RollingFileAppender"/>
-    </root>
-  </log4net>
-</configuration>
- -

Logge forespørsel og respons

- -

Når det sendes brev gjennom Sikker Digital Post, så legges det også ved en del ekstra informasjon. Denne informasjonen er strukturert som XML og er nødvending for at brevet skal leveres til mottaker. Ofte kan dette være svært nyttig informasjon å logge.

- -

For å aktivere logging av forespørsel og respons så setter du følgende på Klientkonfigurasjon:

- -
Klientkonfigurasjon.LoggForespørselOgRespons = true;
- -

Da vil det logges til en logger med navn Difi.SikkerDigitalPost.Klient.RequestResponse.

- -
Merk at logging av forespørsel og respons kan gi mye dårligere ytelse. Det er ingen grunn til å logge dette i et produksjonsmiljø.
- -

Prosessere dokumentpakke som sendes

- -

Når man logger forespørsel og respons, så logges bare XML som sendes, ikke selve dokumentpakken. Det er to måter å logge denne på:

-
    -
  1. Aktiver logging til disk vha Klientkonfigurasjon.AktiverLagringAvDokumentpakkeTilDisk.
  2. -
  3. Implementer IDokumentPakkeProsessor og legg til i Klientkonfigurasjon.Dokumentpakkeprosessorer
  4. -
-

-
- - - -

Installere sertifikater

-
-

Som bruker av dette biblioteket er du en Databehandler som har ansvar for sending av meldinger. For å gjøre dette trenger du et sertifikat for å kunne autentisere deg mot Meldingsformidleren. Du kan lese mer om aktørene hos begrep.difi.no. Dette bør installeres på maskinen som skal bruke klientbiblioteket. Grunnen til at vi ønsker å installere det er for å ikke ha passord i klartekst i koden.

- -

Alle sertifikater har en unik identifikator som kalles thumbprint. Hvis du ikke ønsker å håndtere selv i koden hvordan sertifikatene skal lastes, så kan du følge guiden under, steg for steg. Til slutt gjennomgås det hvordan du kan finne thumbprint til det installerte sertifikatet.

- -

Legg inn databehandlersertifikat i certificate store

- -
-

Databehandlersertifikat er det sertifikatet du har fått utstedt for å kunne sende post.

-
- -
    -
  1. Dobbeltklikk på sertifikatet (Sertifikatnavn.p12)
  2. -
  3. Velg at sertifikatet skal lagres i Current User eller Local Machine og trykk Next
  4. -
  5. Filnavn skal nå være utfylt. Trykk Next
  6. -
  7. Skriv inn passord for privatnøkkel og velg Mark this key as exportable …, trykk Next
  8. -
  9. Velg Automatically select the certificate store based on the type of certificate
  10. -
  11. Klikk Next og Finish
  12. -
  13. Får du spørsmål om å godta sertifikatkjeden så du gjør det.
  14. -
  15. Du skal da få en dialog som sier at importeringen var vellykket. Trykk OK.
  16. -
- -

Finne thumbprint til installert sertifikat

- -

Det er enklest å finne thumbprint gjennom Microsoft Management Console (mmc.exe).

- -
    -
  1. Velg File -> Add/Remove Snap-in…
  2. -
  3. Merk Certificates og trykk Add >
  4. -
  5. Hvis sertifikatet ble installert i Current User velges My user account, hvis det er installert på Local Machine velges Computer Account. Klikk Finish og OK
  6. -
  7. Ekspander Certificates-noden, velg Personal og åpne Certificates
  8. -
  9. Dobbeltklikk på sertifikatet du installerte
  10. -
  11. Velg Details, scroll ned til Thumbprint og kopier
  12. -
- -

SikkerDigitalPostKlient har støtte for å ta inn thumbprint direkte for Databehandler og PostMottaker. Ønsker du å sende inn sertifikater du har allerede har initialisert, kan du kalle konstruktøren som tar inn X509Certificate2.

-

-
- - - -

Ytelse

-
-

Klientbiblioteket benytter en HttpWebRequest for å kommunisere med Meldingsformidleren. I en konsollapplikasjon er denne begrenset til maks to samtidige forbindelser om gangen, mens den i en asp.net applikasjon er begrenset til ti. Dersom du ønsker å sende flere brev samtidig kan denne verdien endres f.eks til 3. Mer enn dette anbefales ikke.

- -
System.Net.ServicePointManager.DefaultConnectionLimit = 3;
- -

Se ServicePointManager.DefaultConnectionLimit for mer informasjon.

-

-
- - - - -
-
- -
- - - - - - - -
-
- - -
-
-
- - - - - - - \ No newline at end of file diff --git a/docs/_site/v2/index.html b/docs/_site/v2/index.html deleted file mode 100644 index be74149a..00000000 --- a/docs/_site/v2/index.html +++ /dev/null @@ -1,522 +0,0 @@ - - - - - - - - - - - - - - -
-
-
- -
-
-

Sikker Digital Post .NET

-

difi.github.io/difi-sikker-digital-post-klient-dotnet

-
-
-
- -
- -
-
-
-
-
-
-
-

- - .NET-bibliotek for sending av sikker digital post for offentlig sektor - -

-
-
-
- - -
- Du ser nå på dokumentasjonen for Sikker-digital-post-klient-dotnet 2, som ikke er den nyeste versjonen av klienten. Den nyeste versjonen er 3 og kan nåes her. -
- -
-
-
- -
-
-
- -
-
- -
-
Last ned
-
Gå til https://www.nuget.org/packages?q=Difi.SikkerDigitalPost.Klient
-
-
-
-
- - - -

Hvordan komme i gang

-
-

Klienten er tilgjengelig som en NuGet-pakke. Denne vil oppdateres jevnlig etter hvert som ny funksjonalitet legges til.

- -

For å installere NuGet-pakken, gjør følgende:

- -
    -
  1. Velg TOOLS -> NuGet Package Manager -> Manage Nuget Packages for Solution…
  2. -
  3. Søk etter sikker-digital-post. -
      -
    • Ønsker du pre-release, må du sørge for at det står Include Prerelease i drop-down menyen rett over søkeresuløtatene (der det står Stable Only).
    • -
    -
  4. -
  5. Velg sikker-digital-post-klient og trykk Install.
  6. -
-

-
- - - -

Sende post

-
-

-

Det anbefales å bruke dokumentasjon i klassene for mer detaljert beskrivelse av inputparametere.

-
- -

PostInfo for digital post

- -

Først, lag en motaker av type DigitalPostMottaker:

- -
-

Postkassetjenesteleverandørene har ulik behandling av ikke-sensitiv tittel. Se begrep.difi.no for detaljer om denne forskjellen.

-
- -
var personnummer = "01013300002";
-var postkasseadresse = "ola.nordmann#2233";
-var mottakersertifikat = new X509Certificate2(); //sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = new Organisasjonsnummer("123456789");
-var mottaker = new DigitalPostMottaker(
-        personnummer, 
-        postkasseadresse, 
-        mottakersertifikat, 
-        orgnummerPostkasse
-);
-
-var ikkeSensitivTittel = "En tittel som ikke er sensitiv";
-var sikkerhetsnivå = Sikkerhetsnivå.Nivå3;
-var postInfo = new DigitalPostInfo(mottaker, ikkeSensitivTittel, sikkerhetsnivå);
- -
-

Husk at OrgnummerPostkasse er organisasjonsnummer til leverandør av postkassetjenesten. Organisasjonsnummeret leveres fra oppslagstjenesten sammen med postkasseadressen og sertifikatet til innbygger.

-
- -

PostInfo for fysisk post

- -

Skal du sende fysisk post må du først lage en FysiskPostMottaker, en FysiskPostReturMottaker og sette informasjon om farge og makulering:

- -
var navn = "Ola Nordmann";
-var adresse = new NorskAdresse("0001", "Oslo");
-var mottakersertifikat = new X509Certificate2(); // sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = new Organisasjonsnummer("123456789");
-var mottaker = new FysiskPostMottaker(navn, adresse, mottakersertifikat, orgnummerPostkasse);
-
-var returMottaker = new FysiskPostReturmottaker(
-    "John Doe", 
-    new NorskAdresse("0566", "Oslo")
-    {
-        Adresselinje1 = "Returgata 22"
-    });
-
-var postInfo = new FysiskPostInfo(
-            mottaker, 
-            Posttype.A, 
-            Utskriftsfarge.SortHvitt, 
-            Posthåndtering.MakuleringMedMelding, 
-            returMottaker
-);
- -

Her er adressen av type NorskAdresse eller UtenlandskAdresse.

- -

Ved sending av fysisk post må man oppgi en returadresse, uavhengig av om brevet er satt til Posthåndtering.MakuleringMedMelding. Oppretting av en FysiskPostInfo vil da se slik ut:

- -

Oppsett før sending

- -

Opprett en avsender og en databehandler:

- -
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);
- -

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";
- -

Opprette forsendelse

- -

Deretterer kan du opprette forsendelse. Forsendelsen inneholder de dokumentene - som skal til mottakeren:

- -
var hoveddokument = new Dokument(
-        tittel: "Dokumenttittel", 
-        dokumentsti: "/Dokumenter/Hoveddokument.pdf", 
-        mimeType: "application/pdf", 
-        språkkode: "NO", 
-        filnavn: "filnavn"
-    );
-
-var dokumentpakke = new Dokumentpakke(hoveddokument);
-
-var vedleggssti = "/Dokumenter/Vedlegg.pdf";
-var vedlegg = new Dokument(
-    tittel: "tittel", 
-    dokumentsti: vedleggssti, 
-    mimeType: "application/pdf", 
-    språkkode: "NO", 
-    filnavn: "filnavn");
-
-dokumentpakke.LeggTilVedlegg(vedlegg);
-
-Avsender avsender = null; //Som initiert tidligere
-PostInfo postInfo = null; //Som initiert tidligere
-var forsendelse = new Forsendelse(avsender, postInfo, dokumentpakke);
- -

Opprette klient og sende post

- -

Siste steg er å opprette en SikkerDigitalPostKlient:

- -
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;
-}
- -

Transportkvitteringen får du tilbake umiddelbart; den trenger du ikke å polle for å få.

- -

Hente kvitteringer

- -

For å hente kvitteringer må du sende en kvitteringsforespørsel:

- -
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 is TomKøKvittering)
-{
-    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);
-}
- -
-

Husk at det ikke er mulig å hente nye kvitteringer før du har bekreftet mottak av nåværende.

-
- -
sdpKlient.Bekreft((Forretningskvittering)kvittering);
- -

Kvitteringer du mottar når du gjør en kvitteringsforespørsel kan være av følgende typer: Leveringskvittering,Åpningskvittering, Returpostkvittering, Mottakskvittering eller Feilmelding. Kvittering kan også være av typenTransportFeiletKvittering. Dette kan skje når selve kvitteringsforespørselen er feilformatert.

- -
-

Husk at hvis du får TomKøKvittering så er køen tom. Du henter bare kvitteringer fra kø gitt av MpcId og Prioritet. Hvis ikke dette blir satt spesifikt vil det hentes fra kø hvor MpcId = "" og Prioritet = Prioritet.Normal.

-
- -

-
- - - -

Logging

-
-

Generelt

- -

Klienten bruker Common.Logging API for å abstrahere logging. Det er opp til brukeren å imlementere API med et passende loggrammeverk, men vi viser hvordan dette kan gjøres med Log4Net.

- -

Loggnivå DEBUG vil logge resultat for forespørsler som går bra og de som feiler, WARN bare for feilede forespørsler eller verre, mens ERROR bare skjer om sending av brev feilet. Disse loggerne vil være under Difi.SikkerDigitalPost.Klient

- -

Implementere Log4Net som logger

- -
    -
  1. Installer Nuget-pakke Common.Logging.Log4Net. Denne vil da også installere avhengighetene Common.Logging.Core og Common.Logging. Merk at versjoneringen her er litt underlig, men et søk i Nuget Gallery vil f.eks. vise at Log4Net 2.0.3 har pakkenavn Log4net [1.2.13] 2.0.3. Da er det Common.Logging.Log4Net1213 som skal installeres.
  2. -
  3. Legg merke til hvilken versjon av Log4net som faktisk installeres. Av en eller annen grunn kan det bli 2.0.0 som installeres. Da må versjonen oppdateres til 2.0.3.
  4. -
- -

En fullstendig App.config med Log4Net-adapter og en RollingFileAppender:

- -
<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-  <configSections>
-    <sectionGroup name="common">
-      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
-    </sectionGroup>
-    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
-  </configSections>
-
-  <common>
-    <logging>
-      <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net1213">
-        <arg key="configType" value="INLINE" />
-      </factoryAdapter>
-    </logging>
-  </common>
-
-   <log4net>
-    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
-      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
-      <file value="${AppData}\Digipost\SikkerDigitalPost\" />
-      <appendToFile value="true" />
-      <rollingStyle value="Date" />
-      <staticLogFileName value="false" />
-      <rollingStyle value="Composite" />
-      <param name="maxSizeRollBackups" value="10" />
-      <datePattern value="yyyy.MM.dd' sikker-digital-post-klient-dotnet.log'" />
-      <maximumFileSize value="100MB" />
-      <layout type="log4net.Layout.PatternLayout">
-        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
-      </layout>
-    </appender>
-   <root>
-      <appender-ref ref="RollingFileAppender"/>
-    </root>
-  </log4net>
-</configuration>
- -

Logge forespørsel og respons

- -

Når det sendes brev gjennom Sikker Digital Post, så legges det også ved en del ekstra informasjon. Denne informasjonen er strukturert som XML og er nødvending for at brevet skal leveres til mottaker. Ofte kan dette være svært nyttig informasjon å logge.

- -

For å aktivere logging av forespørsel og respons så setter du følgende på Klientkonfigurasjon:

- -
Klientkonfigurasjon.LoggForespørselOgRespons = true;
- -

Da vil det logges til en logger med navn Difi.SikkerDigitalPost.Klient.RequestResponse.

- -
Merk at logging av forespørsel og respons kan gi mye dårligere ytelse. Det er ingen grunn til å logge dette i et produksjonsmiljø.
- -

Prosessere dokumentpakke som sendes

- -

Når man logger forespørsel og respons, så logges bare XML som sendes, ikke selve dokumentpakken. Det er to måter å logge denne på:

-
    -
  1. Aktiver logging til disk vha Klientkonfigurasjon.AktiverLagringAvDokumentpakkeTilDisk.
  2. -
  3. Implementer IDokumentPakkeProsessor og legg til i Klientkonfigurasjon.Dokumentpakkeprosessorer
  4. -
-

-
- - - -

Installere sertifikater

-
-

Som bruker av dette biblioteket er du en Databehandler som har ansvar for sending av meldinger. For å gjøre dette trenger du et sertifikat for å kunne autentisere deg mot Meldingsformidleren. Du kan lese mer om aktørene hos begrep.difi.no. Dette bør installeres på maskinen som skal bruke klientbiblioteket. Grunnen til at vi ønsker å installere det er for å ikke ha passord i klartekst i koden.

- -

Alle sertifikater har en unik identifikator som kalles thumbprint. Hvis du ikke ønsker å håndtere selv i koden hvordan sertifikatene skal lastes, så kan du følge guiden under, steg for steg. Til slutt gjennomgås det hvordan du kan finne thumbprint til det installerte sertifikatet.

- -

Legg inn databehandlersertifikat i certificate store

- -
-

Databehandlersertifikat er det sertifikatet du har fått utstedt for å kunne sende post.

-
- -
    -
  1. Dobbeltklikk på sertifikatet (Sertifikatnavn.p12)
  2. -
  3. Velg at sertifikatet skal lagres i Current User eller Local Machine og trykk Next
  4. -
  5. Filnavn skal nå være utfylt. Trykk Next
  6. -
  7. Skriv inn passord for privatnøkkel og velg Mark this key as exportable …, trykk Next
  8. -
  9. Velg Automatically select the certificate store based on the type of certificate
  10. -
  11. Klikk Next og Finish
  12. -
  13. Får du spørsmål om å godta sertifikatkjeden så du gjør det.
  14. -
  15. Du skal da få en dialog som sier at importeringen var vellykket. Trykk OK.
  16. -
- -

Finne thumbprint til installert sertifikat

- -

Det er enklest å finne thumbprint gjennom Microsoft Management Console (mmc.exe).

- -
    -
  1. Velg File -> Add/Remove Snap-in…
  2. -
  3. Merk Certificates og trykk Add >
  4. -
  5. Hvis sertifikatet ble installert i Current User velges My user account, hvis det er installert på Local Machine velges Computer Account. Klikk Finish og OK
  6. -
  7. Ekspander Certificates-noden, velg Personal og åpne Certificates
  8. -
  9. Dobbeltklikk på sertifikatet du installerte
  10. -
  11. Velg Details, scroll ned til Thumbprint og kopier
  12. -
- -

SikkerDigitalPostKlient har støtte for å ta inn thumbprint direkte for Databehandler og PostMottaker. Ønsker du å sende inn sertifikater du har allerede har initialisert, kan du kalle konstruktøren som tar inn X509Certificate2.

-

-
- - - -

Ytelse

-
-

Klientbiblioteket benytter en HttpWebRequest for å kommunisere med Meldingsformidleren. I en konsollapplikasjon er denne begrenset til maks to samtidige forbindelser om gangen, mens den i en asp.net applikasjon er begrenset til ti. Dersom du ønsker å sende flere brev samtidig kan denne verdien endres f.eks til 3. Mer enn dette anbefales ikke.

- -
System.Net.ServicePointManager.DefaultConnectionLimit = 3;
- -

Se ServicePointManager.DefaultConnectionLimit for mer informasjon.

- -

Klassen SikkerDigitalPostKlient fungerer best ved at man oppretter en instans per applikasjon. SikkerDigitalPostKlient bruker en og samme instans av HttpClient (https://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.110).aspx) under panseret. Denne klassen er trådsikker og beste måte å bruke denne klassen på er å ha en instans per applikasjon som gjenbrukes for alle http-kall i applikasjons levetid. Av trådsikkerhetshensyn og ytelse er dette også måten brukere av biblioteket bør benytte SikkerDigitalPostKlient på.

-

-
- - - - -
-
- -
- - - - - - - -
-
- - -
-
-
- - - - - - - \ No newline at end of file diff --git a/docs/_site/v3/index.html b/docs/_site/v3/index.html deleted file mode 100644 index 27d06a9a..00000000 --- a/docs/_site/v3/index.html +++ /dev/null @@ -1,593 +0,0 @@ - - - - - - - - - - - - - - -
-
-
- -
-
-

Sikker Digital Post .NET

-

difi.github.io/difi-sikker-digital-post-klient-dotnet

-
-
-
- -
- -
-
-
-
-
-
-
-

- - .NET Core-bibliotek for sending av sikker digital post for offentlig sektor - -

-
-
-
- - - -
-
-
- -
-
-
- -
-
- -
-
Last ned
-
Gå til https://www.nuget.org/packages?q=Difi.SikkerDigitalPost.Klient
-
-
-
-
- - - -

Hvordan komme i gang

-
-

Klienten er tilgjengelig som en NuGet-pakke. Denne vil oppdateres jevnlig etter hvert som ny funksjonalitet legges til.

- -

For å installere NuGet-pakken, gjør følgende i Visual Studio/Rider:

- -
    -
  1. Velg TOOLS -> NuGet Package Manager -> Manage Nuget Packages for Solution…
  2. -
  3. Søk etter Difi.SikkerDigitalPost.Klient. Flere pakker vil dukke opp. Installer de som er relevant for deg. Pass på å IKKE installer difi-sikker-digital-post-klient pakken. Den er ett .NET Framework bibliotek med uheldig likt navn. -Hvis du leter etter .NET Framework dokumentasjonen, se versjon 2. -
      -
    • Ønsker du pre-release, må du sørge for at det står Include Prerelease i drop-down menyen rett over søkeresuløtatene (der det står Stable Only).
    • -
    -
  4. -
  5. Velg Difi.SikkerDigitalPost.Klient.X og trykk Install.
  6. -
- -

Installer og bruk databehandlersertifikat

-

Som bruker av dette biblioteket er du en Databehandler som har ansvar for sending av meldinger. For å gjøre dette trenger du et sertifikat for å kunne autentisere deg mot Meldingsformidleren. Du kan lese mer om aktørene hos begrep.difi.no. -Dette bør installeres på maskinen som skal bruke klientbiblioteket. Grunnen til at vi ønsker å installere det er for å ikke ha passord i klartekst i koden.

- -
SSL Certificates are small data files that digitally bind a cryptographic key to an organization's details. When installed on a web server, it activates the padlock and the https protocol (over port 443) and allows secure connections from a web server to a browser.
- -

For å kommunisere over HTTPS trenger du å signere dine requests med ett databehandlersertifikat. Dette sertifikatet kan lastes direkte fra en fil eller fra Windows Certificate Store.

- -

Følgende steg vil installere sertifikatet i din Certificate Store. Dette burde gjøres på serveren hvor din applikasjon skal kjøre.

- -

For mer informasjon, se Microsoft Dokumentasjonen.

- -

Filplasseringen og passord til sertifikatet må legges ett trygt sted.

- -

Filplassering i Windows er:

-
%APPDATA%\Microsoft\UserSecrets\<user_secrets_id>\secrets.json
-
-
- -

Filplassering i MacOS/Linux er:

-
~/.microsoft/usersecrets/<user_secrets_id>/secrets.json
-
-
- -

Legg til følgende UserSecretsId element i din .csproj fil:

-
<PropertyGroup>
-     <TargetFramework>netcoreapp2.1</TargetFramework>
-     <UserSecretsId>enterprise-certificate</UserSecretsId>
-</PropertyGroup>
-
-
- -

Dette betyr at elementet <user_secrets_id> in the filplasseringen vil være enterprise-certificate.

- -

Fra command linjen, naviger til filplassering hvor din hoved .csproj fil ligger og kjør følgene kommandoer med dine egne sertifikat verdier:

-
dotnet user-secrets set "Certificate:Path:Absolute" "<your-certificate.p12>"
-dotnet user-secrets set "Certificate:Password" "<your-certificate-password>"
-
-
- -

Stol på sertifikatet i Windows:

-
    -
  1. Dobbeltklikk på sertifikatet (Sertifikatnavn.p12)
  2. -
  3. Velg at sertifikatet skal lagres i Current User eller Local Machine og trykk Next -If you are running the client library from a system account, but debugging from a different user, please install it on Local Machine, as this enables loading it from any user.
  4. -
  5. Filnavn skal nå være utfylt. Trykk Next
  6. -
  7. Skriv inn passord for privatnøkkel og velg Mark this key as exportable …, trykk Next
  8. -
  9. Velg Automatically select the certificate store based on the type of certificate
  10. -
  11. Klikk Next og Finish
  12. -
  13. Får du spørsmål om å godta sertifikatkjeden så du gjør det.
  14. -
  15. Du skal da få en dialog som sier at importeringen var vellykket. Trykk OK.
  16. -
- -

Stol på sertifikatet i MacOS:

-
    -
  1. Åpne Keychain Access
  2. -
  3. Velg login keychain
  4. -
  5. Trykk på File og deretter Import
  6. -
  7. Velg databehandlersertifikatet og legg den til
  8. -
- -

Stol på sertifikatet i Linux:

-

Last ned root og intermediate sertifikatene fra Difi for din databehandlersertifkat utgiver. -Merk navnendringen til å ha .crt på slutten for update-ca-certificates:

- -
sudo cp Buypass_Class_3_Test4_Root_CA.pem /usr/local/share/ca-certificates/Buypass_Class_3_Test4_Root_CA.crt
-sudo cp Buypass_Class_3_Test4_CA_3.pem /usr/local/share/ca-certificates/Buypass_Class_3_Test4_CA_3.crt
-sudo update-ca-certificates
-
-
-

-
- - - -

Sende post

-
-

-

Det anbefales å bruke dokumentasjon i klassene for mer detaljert beskrivelse av inputparametere.

-
- -

PostInfo for digital post

- -

Først, lag en motaker av type DigitalPostMottaker:

- -
-

Postkassetjenesteleverandørene har ulik behandling av ikke-sensitiv tittel. Se begrep.difi.no for detaljer om denne forskjellen.

-
- -

-var personnummer = "01013300002";
-var postkasseadresse = "ola.nordmann#2233";
-var mottakersertifikat = new X509Certificate2(); //sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = new Organisasjonsnummer("123456789");
-var mottaker = new DigitalPostMottaker(
-        personnummer, 
-        postkasseadresse, 
-        mottakersertifikat, 
-        orgnummerPostkasse
-);
-
-var ikkeSensitivTittel = "En tittel som ikke er sensitiv";
-var sikkerhetsnivå = Sikkerhetsnivå.Nivå3;
-var postInfo = new DigitalPostInfo(mottaker, ikkeSensitivTittel, sikkerhetsnivå);
-
-
-
- -
-

Husk at OrgnummerPostkasse er organisasjonsnummer til leverandør av postkassetjenesten. Organisasjonsnummeret leveres fra oppslagstjenesten sammen med postkasseadressen og sertifikatet til innbygger.

-
- -

PostInfo for fysisk post

- -

Skal du sende fysisk post må du først lage en FysiskPostMottaker, en FysiskPostReturMottaker og sette informasjon om farge og makulering:

- -

-var navn = "Ola Nordmann";
-var adresse = new NorskAdresse("0001", "Oslo");
-var mottakersertifikat = new X509Certificate2(); // sertifikat hentet fra Oppslagstjenesten
-var orgnummerPostkasse = new Organisasjonsnummer("123456789");
-var mottaker = new FysiskPostMottaker(navn, adresse, mottakersertifikat, orgnummerPostkasse);
-
-var returMottaker = new FysiskPostReturmottaker(
-    "John Doe", 
-    new NorskAdresse("0566", "Oslo")
-    {
-        Adresselinje1 = "Returgata 22"
-    });
-
-var postInfo = new FysiskPostInfo(
-            mottaker, 
-            Posttype.A, 
-            Utskriftsfarge.SortHvitt, 
-            Posthåndtering.MakuleringMedMelding, 
-            returMottaker
-);
-
-
-
- -

Her er adressen av type NorskAdresse eller UtenlandskAdresse.

- -

Ved sending av fysisk post må man oppgi en returadresse, uavhengig av om brevet er satt til Posthåndtering.MakuleringMedMelding. Oppretting av en FysiskPostInfo vil da se slik ut:

- -

Oppsett før sending

- -

Opprett en avsender og en databehandler:

-

-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);
-
-
-
- -

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";
-
-
- -

Opprette forsendelse

- -

Deretterer kan du opprette forsendelse. Forsendelsen inneholder de dokumentene - som skal til mottakeren:

- -

-var hoveddokument = new Dokument(
-        tittel: "Dokumenttittel", 
-        dokumentsti: "/Dokumenter/Hoveddokument.pdf", 
-        mimeType: "application/pdf", 
-        språkkode: "NO", 
-        filnavn: "filnavn"
-    );
-
-var dokumentpakke = new Dokumentpakke(hoveddokument);
-
-var vedleggssti = "/Dokumenter/Vedlegg.pdf";
-var vedlegg = new Dokument(
-    tittel: "tittel", 
-    dokumentsti: vedleggssti, 
-    mimeType: "application/pdf", 
-    språkkode: "NO", 
-    filnavn: "filnavn");
-
-dokumentpakke.LeggTilVedlegg(vedlegg);
-
-Avsender avsender = null; //Som initiert tidligere
-PostInfo postInfo = null; //Som initiert tidligere
-var forsendelse = new Forsendelse(avsender, postInfo, dokumentpakke);
-
-
-
- -

Opprette klient og sende post

- -

Siste steg er å opprette en SikkerDigitalPostKlient:

- -

-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;
-}
-
-
-
- -

Transportkvitteringen får du tilbake umiddelbart; den trenger du ikke å polle for å få.

- -

Hente kvitteringer

- -

For å hente kvitteringer må du sende en kvitteringsforespørsel:

- -

-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 is TomKøKvittering)
-{
-    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);
-}
-
-
-
- -
-

Husk at det ikke er mulig å hente nye kvitteringer før du har bekreftet mottak av nåværende.

-
- -
sdpKlient.Bekreft((Forretningskvittering)kvittering);
-
-
- -

Kvitteringer du mottar når du gjør en kvitteringsforespørsel kan være av følgende typer: Leveringskvittering,Åpningskvittering, Returpostkvittering, Mottakskvittering eller Feilmelding. Kvittering kan også være av typenTransportFeiletKvittering. Dette kan skje når selve kvitteringsforespørselen er feilformatert.

- -
-

Husk at hvis du får TomKøKvittering så er køen tom. Du henter bare kvitteringer fra kø gitt av MpcId og Prioritet. Hvis ikke dette blir satt spesifikt vil det hentes fra kø hvor MpcId = "" og Prioritet = Prioritet.Normal.

-
- -

-
- - - -

Logging

-
-

Debugging

-

Sette opp logging

-

Klient biblioteket har evnen til å logge nyttig informasjon som kan bli brukt for debugging. -For å skru på logging, gi SikkerDigitalPostKlient en Microsoft.Extensions.Logging.ILoggerFactory i konstruktøren. -Dette er Microsoft sitt eget logging API og lar brukeren velge deres egen logging framework.

- -

Om du skrur på logging med nivå DEBUG vil output være positive resultater av requests og verre, WARN gir bare feilet requests eller verre, mens ERROR gir bare feilet requests. -Disse loggerne vil være under Difi.SikkerDigitalPost.Klient namespace.

- -

Implementing using NLog

-

Det er flere måter å implementere en logger, men følgene eksempler vil være basert på NLog dokumentasjonen.

- -
    -
  1. Installer Nuget pakkene NLog, NLog.Extensions.Logging og Microsoft.Extensions.DependencyInjection.
  2. -
  3. Leg en nlog.config fil. Den følgende er ett eksempel som logger til både fil og konsol: -``` xml -
  4. -
- - - - - - - - - - - - - - - -

-I din applikasjon, gjør følgende for å lage en logger og gi den til `SikkerDigitalPostKlient`:
-
-``` csharp
-private static IServiceProvider CreateServiceProviderAndSetUpLogging()
-{
-    var services = new ServiceCollection();
-
-    services.AddSingleton<ILoggerFactory, LoggerFactory>();
-    services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
-    services.AddLogging((builder) => builder.SetMinimumLevel(LogLevel.Trace));
-
-    var serviceProvider = services.BuildServiceProvider();
-    SetUpLoggingForTesting(serviceProvider);
-
-    return serviceProvider;
-}
-
-private static void SetUpLoggingForTesting(IServiceProvider serviceProvider)
-{
-    var loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
-
-    loggerFactory.AddNLog(new NLogProviderOptions {CaptureMessageTemplates = true, CaptureMessageProperties = true});
-    NLog.LogManager.LoadConfiguration("./nlog.config");
-}
-
-static void Main(string[] args)
-{
-    //Oppsett beskrevet tidligere:
-    Klientkonfigurasjon klientKonfig = null;
-    DataBehandler dataBehandler = null;
-    
-    var serviceProvider = CreateServiceProviderAndSetUpLogging();
-    var client = new SikkerDigitalPostKlient(dataBehandler, klientKonfig, serviceProvider.GetService<ILoggerFactory>());
-}
-
-
- -

Request og Response Logging

-

Til integrasjon og debugging formål så kan det være nyttig å logge direkte requests og responses som kommer “over the wire”. Dette kan oppnåes ved å gjøre følgende:

- -

Sett denne property Klientkonfigurasjon.LoggForespørselOgRespons = true.

- -
-

Advarsel: Man skal aldri skru på request logging i ett produksjonsmiljø. Det vil ha en sterk negativ virkning på ytelse.

-
- -

Prosessere dokumentpakke som sendes

- -

Når man logger forespørsel og respons, så logges bare XML som sendes, ikke selve dokumentpakken. Det er to måter å logge denne på:

-
    -
  1. Aktiver logging til disk vha Klientkonfigurasjon.AktiverLagringAvDokumentpakkeTilDisk.
  2. -
  3. Implementer IDokumentPakkeProsessor og legg til i Klientkonfigurasjon.Dokumentpakkeprosessorer
  4. -
-

-
- - - -

Ytelse

-
-

Klientbiblioteket benytter en HttpWebRequest for å kommunisere med Meldingsformidleren. I en konsollapplikasjon er denne begrenset til maks to samtidige forbindelser om gangen, mens den i en asp.net applikasjon er begrenset til ti. Dersom du ønsker å sende flere brev samtidig kan denne verdien endres f.eks til 3. Mer enn dette anbefales ikke.

- -
System.Net.ServicePointManager.DefaultConnectionLimit = 3;
-
-
- -

Se ServicePointManager.DefaultConnectionLimit for mer informasjon.

- -

Klassen SikkerDigitalPostKlient fungerer best ved at man oppretter en instans per applikasjon. SikkerDigitalPostKlient bruker en og samme instans av HttpClient under panseret. Denne klassen er trådsikker og beste måte å bruke denne klassen på er å ha en instans per applikasjon som gjenbrukes for alle http-kall i applikasjons levetid. Av trådsikkerhetshensyn og ytelse er dette også måten brukere av biblioteket bør benytte SikkerDigitalPostKlient på.

-

-
- - - - -
-
- -
- - - - - - - -
-
- - -
-
-
- - - - - - - \ No newline at end of file