Dela via


Federation och förtroende

Det här avsnittet beskriver olika aspekter som rör federerade program, förtroendegränser och konfiguration samt användning av utfärdade token i Windows Communication Foundation (WCF).

Tjänster, säkerhetstokentjänster och förtroende

Tjänster som exponerar federerade slutpunkter förväntar sig vanligtvis att klienter autentiserar med hjälp av en token som tillhandahålls av en specifik utfärdare. Det är viktigt att tjänsten har konfigurerats med rätt autentiseringsuppgifter för utfärdaren. Annars kan den inte verifiera signaturer över de utfärdade token och klienten kan inte kommunicera med tjänsten. Mer information om hur du konfigurerar utfärdarautentiseringsuppgifter för tjänsten finns i Så här konfigurerar du autentiseringsuppgifter på en federationstjänst.

På samma sätt krypteras nycklarna för måltjänsten när du använder symmetriska nycklar, så du måste konfigurera tjänsten för säkerhetstoken med rätt autentiseringsuppgifter för måltjänsten. Annars går det inte att kryptera nyckeln för måltjänsten, och klienten kommer återigen inte att kunna kommunicera med tjänsten.

WCF-tjänster använder värdet MaxClockSkew för egenskapen på SecurityBindingElement för att tillåta klocksnedvridning mellan klienten och tjänsten. I federation MaxClockSkew gäller inställningen för klocksnedvridningar mellan både klienten och säkerhetstokentjänsten där klienten hämtade den utfärdade token. Därför behöver tjänster för säkerhetstoken inte göra tidsförskjutningsersättningar när du anger den utfärdade tokens effektiva och förfallotid.

Kommentar

Vikten av klocksnedvridning ökar när livslängden för den utfärdade token förkortas. I de flesta fall är klocksnedvridning inte ett betydande problem om tokens livslängd är 30 minuter eller mer. Scenarier med kortare livslängd eller där den exakta giltighetstiden för token är viktig bör utformas för att ta hänsyn till klocksnedställning.

Federerade slutpunkter och tidsgränser

När en klient kommunicerar med en federerad slutpunkt måste den först hämta en lämplig token från en säkerhetstokentjänst. Om säkerhetstokentjänsten exponerar en federerad slutpunkt måste klienten först hämta en token från utfärdaren för slutpunkten. Varje tokenförvärv tar tid och den tiden är föremål för den totala tidsgränsen för att skicka det faktiska meddelandet till den slutliga slutpunkten.

Tidsgränsen på klientsidans kanal är till exempel inställd på 30 sekunder. Två token utfärdare måste anropas för att hämta token innan meddelandet skickas till den slutliga slutpunkten, och var och en tar 15 sekunder att utfärda en token. I det här fallet misslyckas försöket och ett TimeoutException utlöses. Därför måste du ange OperationTimeout värdet på klientkanalen till ett värde som är tillräckligt stort för att inkludera den tid det tar att hämta alla utfärdade token. Om ett värde inte har angetts för OperationTimeout egenskapen OpenTimeout måste egenskapen eller SendTimeout egenskapen (eller båda) anges till ett värde som är tillräckligt stort för att inkludera den tid det tar att hämta alla utfärdade token.

Livslängd och förnyelse av token

WCF-klienter kontrollerar inte den utfärdade token när de gör en första begäran till en tjänst. WCF litar i stället på att tjänsten för säkerhetstoken utfärdar en token med lämpliga effektiva och förfallotider. Om token cachelagras av klienten och återanvänds kontrolleras tokens livslängd på efterföljande begäranden och klienten förnyar token automatiskt om det behövs. Mer information om cachelagring av token finns i Så här skapar du en federerad klient.

Om du anger korta livslängder, i storleksordningen 30 sekunder eller mindre för utfärdade token eller säkerhetskontexttoken, kan det leda till att tidsgränser för förhandlingar eller andra undantag utlöses av WCF-klienter när de begär utfärdade token eller när du förhandlar om eller förnyar token för säkerhetskontexter.

Utfärdade token och InclusionMode

Om en utfärdad token serialiseras i ett meddelande som skickas från en klient till en federerad slutpunkt eller inte styrs genom att egenskapen för SecurityTokenParameters klassen angesInclusionMode. Den här egenskapen kan anges till ett av SecurityTokenInclusionMode uppräkningsvärdena, men den är inte användbar i de flesta federerade scenarier. Värdena SecurityTokenInclusionMode.Never och SecurityTokenInclusionMode.AlwaysToInitiator gör att klienten skickar en referens till den token som utfärdats av säkerhetstokentjänsten till den förlitande parten. Om inte den förlitande parten har en kopia av den utfärdade token misslyckas autentiseringen eftersom tokenreferensen inte kan matchas. WCF behandlar SecurityTokenInclusionMode.Once som likvärdigt med SecurityTokenInclusionMode.AlwaysToRecipient.

Se även