Berichtbeveiliging in WCF
Windows Communication Foundation (WCF) heeft twee belangrijke modi voor het bieden van beveiliging (Transport
en Message
) en een derde modus (TransportWithMessageCredential
) die de twee combineert. In dit onderwerp worden berichtbeveiliging en de redenen voor het gebruik ervan besproken.
Wat is berichtbeveiliging?
Berichtbeveiliging maakt gebruik van de WS-Security-specificatie om berichten te beveiligen. De WS-Security-specificatie beschrijft verbeteringen in SOAP-berichten om vertrouwelijkheid, integriteit en verificatie op SOAP-berichtniveau te waarborgen (in plaats van het transportniveau).
Kortom, berichtbeveiliging verschilt van transportbeveiliging door de beveiligingsreferenties en claims samen met elke berichtbeveiliging (ondertekening of versleuteling) in te kapselen. Door de beveiliging rechtstreeks op het bericht toe te passen door de inhoud ervan te wijzigen, kan het beveiligde bericht zichzelf bevatten met betrekking tot de beveiligingsaspecten. Dit maakt een aantal scenario's mogelijk die niet mogelijk zijn wanneer transportbeveiliging wordt gebruikt.
Redenen om berichtbeveiliging te gebruiken
Bij beveiliging op berichtniveau worden alle beveiligingsgegevens ingekapseld in het bericht. Het beveiligen van het bericht met beveiliging op berichtniveau in plaats van beveiliging op transportniveau heeft de volgende voordelen:
End-to-end beveiliging. Transportbeveiliging, zoals Secure Sockets Layer (SSL), beveiligt alleen berichten wanneer de communicatie punt-naar-punt is. Als het bericht wordt doorgestuurd naar een of meer SOAP-tussenpersonen (bijvoorbeeld een router) voordat het de ultieme ontvanger bereikt, wordt het bericht zelf niet beschermd zodra een tussenpersoon het van de draad leest. Bovendien is de clientverificatiegegevens alleen beschikbaar voor de eerste intermediair en moeten ze indien nodig opnieuw worden verzonden naar de ultieme ontvanger. Dit geldt zelfs als voor de hele route SSL-beveiliging tussen afzonderlijke hops wordt gebruikt. Omdat berichtbeveiliging rechtstreeks met het bericht werkt en de XML erin beveiligt, blijft de beveiliging bij het bericht, ongeacht het aantal tussenpersonen voordat het de ultieme ontvanger bereikt. Dit maakt een echt end-to-end-beveiligingsscenario mogelijk.
Meer flexibiliteit. Delen van het bericht kunnen worden ondertekend of versleuteld in plaats van het hele bericht. Dit betekent dat tussenpersonen de delen van het bericht kunnen bekijken die voor hen zijn bedoeld. Als de afzender een deel van de informatie in het bericht zichtbaar moet maken voor de tussenpersonen, maar er zeker van wil zijn dat er niet mee wordt geknoeid, kan het gewoon worden ondertekend, maar het niet versleuteld laten. Omdat de handtekening deel uitmaakt van het bericht, kan de ultieme ontvanger controleren of de informatie in het bericht intact is ontvangen. Een scenario kan een SOAP-intermediaire service hebben die het bericht routeert volgens de waarde van de actieheader. WCF versleutelt standaard de actiewaarde niet, maar ondertekent deze als berichtbeveiliging wordt gebruikt. Daarom is deze informatie beschikbaar voor alle tussenpersonen, maar niemand kan deze wijzigen.
Ondersteuning voor meerdere transporten. U kunt beveiligde berichten verzenden via veel verschillende transporten, zoals named pipes en TCP, zonder dat u hoeft te vertrouwen op het protocol voor beveiliging. Met beveiliging op transportniveau is alle beveiligingsinformatie gericht op één bepaalde transportverbinding en is deze niet beschikbaar vanuit de inhoud van het bericht zelf. Met berichtbeveiliging wordt het bericht beveiligd, ongeacht welk transport u gebruikt om het bericht te verzenden en wordt de beveiligingscontext rechtstreeks in het bericht ingesloten.
Ondersteuning voor een brede set referenties en claims. De berichtbeveiliging is gebaseerd op de WS-Security-specificatie, die een uitbreidbaar framework biedt waarmee elk type claim in het SOAP-bericht kan worden verzonden. In tegenstelling tot transportbeveiliging, de set verificatiemechanismen of claims die u kunt gebruiken, is niet beperkt door de transportmogelijkheden. WCF-berichtbeveiliging omvat meerdere typen verificatie en claimoverdracht en kan indien nodig worden uitgebreid om aanvullende typen te ondersteunen. Om die redenen is een scenario met federatieve referenties bijvoorbeeld niet mogelijk zonder berichtbeveiliging. Zie Federatie- en Uitgegeven tokens voor meer informatie over federatiescenario's die WCF ondersteunt.
Hoe bericht- en transportbeveiliging worden vergeleken
Voor- en nadelen van beveiliging op transportniveau
Transportbeveiliging heeft de volgende voordelen:
Vereist niet dat de communicerende partijen beveiligingsconcepten op XML-niveau begrijpen. Dit kan de interoperabiliteit verbeteren, bijvoorbeeld wanneer HTTPS wordt gebruikt om de communicatie te beveiligen.
Over het algemeen verbeterde prestaties.
Hardwareversnellers zijn beschikbaar.
Streaming is mogelijk.
Transportbeveiliging heeft de volgende nadelen:
Alleen hop-naar-hop.
Beperkte en onuitstaanbare set referenties.
Transportafhankelijk.
Nadelen van beveiliging op berichtniveau
Berichtbeveiliging heeft de volgende nadelen:
Prestaties
Kan geen berichtstreaming gebruiken.
Vereist implementatie van beveiligingsmechanismen op XML-niveau en ondersteuning voor WS-Security-specificatie. Dit kan van invloed zijn op de interoperabiliteit.