Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • app.config er erstattet af appsettings.json og bruges kun til at sætte enkelte parametre:

    Code Block
    languagejs
    {
        "CheckTrust": true,
        "CheckDate": true,
        "CheckCrl": false,
        "sosi:dgws.version": "1.0.1",
        "sosi:issuer": "TheSOSILibrary",
        "credentialVault:alias": "SOSI:ALIAS_SYSTEM"
    }

    Værdierne her er også default-værdierne, hvis en parameter eller hele appsettings-filen udelades.


    Førhen var der ikke overensstemmelse mellem hvad standardværdierne var angivet til i dokumentationen og i koden. 
    Koden er ændret, så den nu stemmer overens med dokumentationen.

    Generelt for .NET Standard og WCF, bliver det der før blev konfigureret i app.config, nu konfigureret i kode.

    Her er et eksempel på en klient, NtsWSProviderClient, der er generet som en WCF service reference, som konfigurers i kode frem for gennem app.config:

    Code Block
    languagec#
    var binding = new CustomBinding();
    binding.Elements.Add(new TextMessageEncodingBindingElement(MessageVersion.Soap11WSAddressingAugust2004, Encoding.UTF8));
    binding.Elements.Add(new HttpTransportBindingElement());
    
    var client = new NSTWsProvider.NtsWSProviderClient(binding, new EndpointAddress("https://test1-cnsp.ekstern-test.nspop.dk:8443/nts/service"));
    
    client.Endpoint.EndpointBehaviors.Add(new SealEndpointBehavior());
    client.Endpoint.EndpointBehaviors.Add(new ViaBehavior(new Uri("http://test1.ekstern-test.nspop.dk:8080/sosigw/proxy/soap-request")));
    
     var dgwsHeader = new Header()
    {
        SecurityLevel = 4,
        SecurityLevelSpecified = true,
        Linking = new Linking { MessageID = Guid.NewGuid().ToString("D") }
    };
    
     using (new OperationContextScope(client.InnerChannel))
    {
        // Adding seal-security and dgws-header soap header
        OperationContext.Current.OutgoingMessageHeaders.Add(new IdCardMessageHeader(sealCard));
        OperationContext.Current.OutgoingMessageHeaders.Add(HeaderFromXml(dgwsHeader));
         // Throws Exception if not succesful. 
        return client.invokeAsync("test");
    }
  • 5.0.0 kræver ikke nær så meget konfiguration som ældre Seal.NET versioner, da meget konfiguration nu håndteres internt af biblioteket.
    Det medfører derudover, at det nu fremgår af metode-signaturen hvis man skal tage stilling til en konfiguration.

    Der er tilfælde hvor man måske ønsker at konfigurere en clientVia endpointbehavior på en Web Service Reference som man har tilføjet (ud fra en WSDL fil).
    Det blev før gjort i app.config, men da denne ikke længere findes, er der lavet en endpointbehavior klasse som hedder 'ViaBehavior'.
    Den bruges som alle andre IEndPointBehavior-klasser:

    Code Block
    languagec#
    client.Endpoint.EndpointBehaviors.Add(new ViaBehavior(new Uri("<via URI>")));
  • AbstractCrendentialVault, GenericCertStoreCredentialVault og GenericCredentialVault er fjernet.

    Man enten kan give certifikatet direkte til metoder som skal bruge et certifikat, eller læse det ind fra et certificate store med:

    Code Block
    languagec#
    new dk.nsi.seal.Vault.ThumbprintCertStoreCredentialVault(certThumbprint).GetSystemCredentials();

    Internt bruger ThumbprintCertStoreCredentialVault X509Store klassen til at loade et certifikatet fra et certificate store.

    Man kan også implementere sin egen klasse til det, ved at arve fra dk.nsi.seal.Vault.ICredentialVault.

    Essentielt er ICredentialVault bare en måde at give et certifikat til en metode, og alle metoder der bruger den, kunne erstatte den med at modtage et X509Certificate2 i stedet. Dette er dog ikke en del af scoped for '5.0.0'.

  • SealCard er fjernet, og fuldt erstattet af IdCard.
  • DgwsHeader er fjernet, og DgwsMessageHeader er omdøbt til XmlMessageHeader, da den i virkeligheden tager noget XML og indsætter det som Header content, når den tilføjes til WCF OutgoingMessageHeaders.

    Den laves nu med en static metode 'XmlMessageHeader.HeaderFromXml', som direkte tager den værdi der før blev givet til DgwsHeader constructor. Se XmlessageHeader.

  • SealSigningEndpointBehavior tager nu ClientCredentials direkte i constructor, i stedet for at få den gennem app.config/AddBindingParameters.

Ændringer til SBO/Sosi2OioSaml

...

Code Block
languagec#
var client = new NSTWsProvider.NtsWSProviderClient(binding, new EndpointAddress("https://test1-cnsp.ekstern-test.nspop.dk:8443/nts/service"));

var dgwsHeader = new dk.nsi.seal.dgwstypes.Header()
{
    SecurityLevel = 4,
    SecurityLevelSpecified = true,
    Linking = new Linking { MessageID = Guid.NewGuid().ToString("D") }
};

using (new OperationContextScope(client.InnerChannel))
{
    OperationContext.Current.OutgoingMessageHeaders.Add(HeaderFromXml(dgwsHeader)); // Indsæt header som XML ud fra serialiseret header
    return client.invokeAsync("test");
}


Endpointbehaviors

Disse behaviors findes Fndes under namespace 'dk.nsi.seal'.Image Removed


SealSigningEndpointBehavior tilpasser request XML header med manglende attributter og underskriver request v.h.a. et associeret certifikat der gives til dens constructor. Yderligere valideres underskriften af response.
SealEndpointBehavior implementerer DGWS.

...