Dela via


Meddelandesäkerhet i WCF

Windows Communication Foundation (WCF) har två viktiga lägen för att tillhandahålla säkerhet (Transport och Message) och ett tredje läge (TransportWithMessageCredential) som kombinerar de två. I det här avsnittet beskrivs meddelandesäkerhet och orsakerna till att använda det.

Vad är meddelandesäkerhet?

Meddelandesäkerhet använder WS-Security-specifikationen för att skydda meddelanden. WS-Security-specifikationen beskriver förbättringar av SOAP-meddelanden för att säkerställa konfidentialitet, integritet och autentisering på SOAP-meddelandenivå (i stället för transportnivå).

I korthet skiljer sig meddelandesäkerheten från transportsäkerhet genom att kapsla in säkerhetsautentiseringsuppgifterna och anspråken med varje meddelande tillsammans med alla meddelandeskydd (signering eller kryptering). Genom att tillämpa säkerheten direkt på meddelandet genom att ändra dess innehåll kan det skyddade meddelandet vara självinnehållande med avseende på säkerhetsaspekterna. Detta möjliggör vissa scenarier som inte är möjliga när transportsäkerhet används.

Orsaker till att använda meddelandesäkerhet

I meddelandenivåsäkerhet kapslas all säkerhetsinformation in i meddelandet. Att skydda meddelandet med säkerhet på meddelandenivå i stället för säkerhet på transportnivå har följande fördelar:

  • Säkerhet från slutpunkt till slutpunkt. Transportsäkerhet, till exempel SSL (Secure Sockets Layer) skyddar bara meddelanden när kommunikationen är punkt-till-punkt. Om meddelandet dirigeras till en eller flera SOAP-mellanhänder (till exempel en router) innan det når den ultimata mottagaren skyddas inte själva meddelandet när en mellanhand läser det från kabeln. Dessutom är klientautentiseringsinformationen endast tillgänglig för den första mellanhanden och måste överföras på nytt till den ultimata mottagaren på ett out-of-band-sätt, om det behövs. Detta gäller även om hela vägen använder SSL-säkerhet mellan enskilda hopp. Eftersom meddelandesäkerhet fungerar direkt med meddelandet och skyddar XML-koden i det, förblir säkerheten med meddelandet oavsett hur många mellanhänder som är inblandade innan det når den ultimata mottagaren. Detta möjliggör ett verkligt säkerhetsscenario från slutpunkt till slutpunkt.

  • Ökad flexibilitet. Delar av meddelandet, i stället för hela meddelandet, kan signeras eller krypteras. Det innebär att mellanhänder kan visa de delar av meddelandet som är avsedda för dem. Om avsändaren behöver göra en del av informationen i meddelandet synlig för mellanhänderna men vill se till att den inte manipuleras kan den bara signera den men lämna den okrypterad. Eftersom signaturen är en del av meddelandet kan den ultimata mottagaren verifiera att informationen i meddelandet togs emot intakt. Ett scenario kan ha en SOAP-mellanliggande tjänst som dirigerar meddelandet enligt värdet för Åtgärdshuvud. WCF krypterar som standard inte åtgärdsvärdet utan signerar det om meddelandesäkerhet används. Därför är den här informationen tillgänglig för alla mellanhänder, men ingen kan ändra den.

  • Stöd för flera transporter. Du kan skicka skyddade meddelanden via många olika transporter, till exempel namngivna rör och TCP, utan att behöva förlita dig på protokollet för säkerhet. Med säkerhet på transportnivå begränsas all säkerhetsinformation till en enda viss transportanslutning och är inte tillgänglig från själva meddelandeinnehållet. Meddelandesäkerhet gör meddelandet säkert oavsett vilken transport du använder för att överföra meddelandet och säkerhetskontexten är direkt inbäddad i meddelandet.

  • Stöd för en bred uppsättning autentiseringsuppgifter och anspråk. Meddelandesäkerheten baseras på WS-Security-specifikationen, som tillhandahåller ett utökningsbart ramverk som kan överföra alla typer av anspråk i SOAP-meddelandet. Till skillnad från transportsäkerhet begränsas inte den uppsättning autentiseringsmekanismer eller anspråk som du kan använda av transportfunktionerna. WCF-meddelandesäkerhet innehåller flera typer av autentisering och anspråksöverföring och kan utökas för att stödja ytterligare typer efter behov. Av dessa skäl är till exempel ett scenario med federerade autentiseringsuppgifter inte möjligt utan meddelandesäkerhet. Mer information om federationsscenarier som WCF stöder finns i Federation och Utfärdade token.

Så här jämför du meddelande- och transportsäkerhet

Fördelar och nackdelar med säkerhet på transportnivå

Transportsäkerhet har följande fördelar:

  • Kräver inte att de kommunicerande parterna förstår säkerhetsbegrepp på XML-nivå. Detta kan förbättra samverkan, till exempel när HTTPS används för att skydda kommunikationen.

  • Generellt förbättrade prestanda.

  • Maskinvaruacceleratorer är tillgängliga.

  • Strömning är möjligt.

Transportsäkerheten har följande nackdelar:

  • Endast hop-to-hop.

  • Begränsad och otillgänglig uppsättning autentiseringsuppgifter.

  • Transportberoende.

Nackdelar med säkerhet på meddelandenivå

Meddelandesäkerhet har följande nackdelar:

  • Prestanda

  • Det går inte att använda meddelandeströmning.

  • Kräver implementering av säkerhetsmekanismer på XML-nivå och stöd för WS-Security-specifikation. Detta kan påverka samverkan.

Se även