Page History
...
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 client der er generet som en WCF service reference, som konfigurers i kode i stedet for gennem app.config:
| Code Block | ||
|---|---|---|
| ||
CustomBinding 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.
...
Seal.NET indeholder en række IEndPointBehavior-klasser som kan benyttes af WCF service references.
XmlMessageHeader
Den Gode Webservice specificerer en ekstra headertype, som kan indsættes ud fra XML med XmlMessageHeader. Den kan tilsvarende indsætte Medcom-header data som XML.
XmlMessageHeader implementer System.ServiceModel.Channels.Message fra https://www.nuget.org/packages/System.ServiceModel.Primitives/, så den kan bruges med WCF Service references.
XmlMessageHeader indeholder en static constructor metode, HeaderFromXml, til at lave instanser af den.
-klasser som kan benyttes af WCF service references.
Klienter
Saml2SosiStsClient
Konverter en SAML assertion til et ID kort.
Eksempel:Eksempel
| Code Block | ||
|---|---|---|
| ||
using static dk.nsi.seal.MessageHeaders.XmlMessageHeader; var response = Saml2SosiStsClient.ExchangeAssertion(clientCertificate, new Uri("http://test2.. reply.Headers.Add(HeaderFromXml(header)); |
Klienter
Saml2SosiStsClient
ekstern-test.nspop.dk:8080/sts/services/OIOSaml2Sosi"), nemidAssertion, authorizationCode); |
Soisi2SamlStsClient
Konverterer et ID kort til en SAML assertion, enten via direkte kald til STS eller via SOSI GatewayKonverter en SAML assertion til et ID kort.
Eksempel:
| Code Block | ||
|---|---|---|
| ||
using dk.nsi.seal; var response = Saml2SosiStsClientSosi2SamlStsClient.ExchangeAssertion(clientCertificate, new Uri("http://test2test1.ekstern-test.nspop.dk:8080/sts/services/OIOSaml2Sosi"), nemidAssertion, authorizationCode); |
Soisi2SamlStsClient
Konverterer et ID kort til en SAML assertion, enten via direkte kald til STS eller via SOSI Gateway.
Eksempel:
| Code Block | ||
|---|---|---|
| ||
using dk.nsi.seal;
var response = Sosi2SamlStsClient.ExchangeAssertion(clientCertificate, new Uri("http://test1.ekstern-test.nspop.dk:8080/sosigw/proxy/soap-request"), "/ststest", idCard);
var responseXml = response.XAssertion;
// Der findes også et overload der ikke tager et klientcertifikat
Sosi2SamlStsClient.ExchangeAssertion(uri, "/ststest", idCard); |
ID kort
...
/sosigw/proxy/soap-request"), "/ststest", idCard);
var responseXml = response.XAssertion;
// Der findes også et overload der ikke tager et klientcertifikat
Sosi2SamlStsClient.ExchangeAssertion(uri, "/ststest", idCard); |
ID kort
IdCard indpakker svaret fra en STS (assertion) og giver mulighed for at benytte data i fremtidige kald.
IdCard er en abstract klasse, som implementeres af SystemIdCard og UserIdCard, som hhv. repræsenter enten et system eller en bruger.
MessageHeaders
IdCardMessageHeader benyttes til at udstille et IdCard som en WCF MessageHeader.
XmlMessageHeader
Den Gode Webservice (DGWS) specificerer en ekstra headertype baseret på XML, som kan indsættes ud fra et objekt der serialiseres til XML med XmlMessageHeader.
XmlMessageHeader implementer System.ServiceModel.Channels.Message fra https://www.nuget.org/packages/System.ServiceModel.Primitives/, så den kan bruges med WCF Service references.
XmlMessageHeader indeholder en static constructor metode, HeaderFromXml, til at lave instanser af den.
Eksempel:
| Code Block | ||
|---|---|---|
| ||
using static dk.nsi.seal.MessageHeaders.XmlMessageHeader;
...
reply.Headers.Add(HeaderFromXml(header)); |
I nedestående eksempel er dk.nsi.seal.dgwstypes.Header og NSTWsProvider.NtsWSProviderClient genereret af en WCF service reference:
| Code Block | ||
|---|---|---|
| ||
var client = new NSTWsProvider.NtsWSProviderClient(binding, new EndpointAddress("https://test1-cnsp.ekstern-test.nspop.dk:8443/nts/service"));
|
IdCard er en abstract klasse, som implementeres af SystemIdCard og UserIdCard, som hhv. repræsenter enten et system eller en bruger.
MessageHeaders
IdCardMessageHeader benyttes til at udstille et IdCard som en WCF MessageHeader.
XmlMessageHeader indeholder tilsvarende et XML element, som kan tilføjes som en WCF MeassageHeader.
Da DGWS baserer sig på XML, kan XmlMessageHeader.HeaderFromXml bruges til at indsætte en DGWS header genereret af en WCF service reference.
Eksempel:
| Code Block | ||
|---|---|---|
| ||
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))
{
// Adding seal-security and dgws-header soap header
OperationContext.Current.OutgoingMessageHeaders.Add(new IdCardMessageHeader(sealCard));
OperationContext.Current.OutgoingMessageHeaders.Add(HeaderFromXml(dgwsHeader));
return client.invokeAsync("test");
} |
...

