Udostępnij za pośrednictwem


Federacja i zaufanie

W tym temacie opisano różne aspekty związane z aplikacjami federacyjnymi, granicami zaufania i konfiguracją oraz używanie wystawionych tokenów w programie Windows Communication Foundation (WCF).

Usługi, usługi tokenów zabezpieczających i zaufanie

Usługi, które uwidaczniają federacyjne punkty końcowe, zwykle oczekują uwierzytelnienia klientów przy użyciu tokenu dostarczonego przez określonego wystawcę. Ważne jest, aby usługa była skonfigurowana przy użyciu poprawnych poświadczeń dla wystawcy; w przeciwnym razie nie będzie można zweryfikować podpisów za pośrednictwem wystawionych tokenów, a klient nie będzie mógł komunikować się z usługą. Aby uzyskać więcej informacji na temat konfigurowania poświadczeń wystawcy w usłudze, zobacz How to: Configure Credentials on a Federation Service (Jak skonfigurować poświadczenia w usłudze federacyjnej).

Podobnie w przypadku używania kluczy symetrycznych klucze są szyfrowane dla usługi docelowej, dlatego należy skonfigurować usługę tokenu zabezpieczającego przy użyciu poprawnych poświadczeń dla usługi docelowej; W przeciwnym razie nie będzie można zaszyfrować klucza dla usługi docelowej, a klient nie będzie mógł komunikować się z usługą.

Usługi WCF używają wartości MaxClockSkew właściwości securityBindingElement, aby umożliwić niesymetryczność zegara między klientem a usługą. W federacji MaxClockSkew ustawienie dotyczy niesymetryczności zegara między klientem a usługą tokenu zabezpieczającego, z której klient uzyskał wystawiony token. W związku z tym usługi tokenów zabezpieczających nie muszą wprowadzać limitów niesymetryczności zegara podczas ustawiania obowiązujących i wygasania wystawionego tokenu.

Uwaga

Ważność niesymetryczności zegara wzrasta wraz ze skróceniem okresu istnienia wystawionego tokenu. W większości przypadków niesymetryczność zegara nie jest istotnym problemem, jeśli okres istnienia tokenu wynosi 30 minut lub więcej. Scenariusze z krótszymi okresami istnienia lub gdy dokładny czas ważności tokenu należy zaprojektować tak, aby uwzględnić niesymetryczność zegara.

Federacyjne punkty końcowe i limity czasu

Gdy klient komunikuje się z federacyjnym punktem końcowym, musi najpierw uzyskać odpowiedni token z usługi tokenu zabezpieczającego. Jeśli usługa tokenu zabezpieczającego uwidacznia federacyjny punkt końcowy, klient musi najpierw uzyskać token od wystawcy dla tego punktu końcowego. Każde pozyskiwanie tokenu zajmuje trochę czasu, a ten czas podlega całkowitemu limitowi czasu wysyłania rzeczywistego komunikatu do końcowego punktu końcowego.

Na przykład limit czasu w kanale po stronie klienta jest ustawiony na 30 sekund. Aby pobrać tokeny, należy wywołać dwóch wystawców tokenów przed wysłaniem komunikatu do końcowego punktu końcowego, a każdy z nich może wydać token przez 15 sekund. W takim przypadku próba zakończy się niepowodzeniem i zostanie zgłoszony.TimeoutException W związku z tym należy ustawić OperationTimeout wartość w kanale klienta na wartość wystarczająco dużą, aby uwzględnić czas potrzebny na pobranie wszystkich wystawionych tokenów. W przypadku, gdy wartość nie jest określona dla OperationTimeout właściwości, właściwość lub SendTimeout właściwość (lub obie) muszą być ustawione na wartość wystarczająco dużą, OpenTimeout aby uwzględnić czas potrzebny na pobranie wszystkich wystawionych tokenów.

Okres istnienia i odnawianie tokenu

Klienci programu WCF nie sprawdzają wystawionego tokenu podczas tworzenia początkowego żądania do usługi. Zamiast tego usługa WCF ufa usłudze tokenu zabezpieczającego w celu wystawienia tokenu z odpowiednim efektywnym i wygasaniem. Jeśli token jest buforowany przez klienta i ponownie używany, okres istnienia tokenu jest sprawdzany na kolejnych żądaniach, a klient automatycznie odnawia token w razie potrzeby. Aby uzyskać więcej informacji na temat buforowania tokenów, zobacz How to: Create a Federated Client (Instrukcje: tworzenie klienta federacyjnego).

Określenie krótkich okresów istnienia w kolejności 30 sekund lub mniej dla wystawionych tokenów lub tokenów kontekstu zabezpieczeń może spowodować przekroczenie limitu czasu negocjacji lub inne wyjątki zgłaszane przez klientów programu WCF podczas żądania wystawionych tokenów lub podczas negocjowania lub odnawiania tokenów kontekstu zabezpieczeń.

Wystawione tokeny i funkcja InclusionMode

Określa, czy wystawiony token jest serializowany w komunikacie wysyłanym z klienta do federacyjnego punktu końcowego, czy nie jest kontrolowany przez ustawienie InclusionMode właściwości SecurityTokenParameters klasy. Tę właściwość można ustawić na jedną z SecurityTokenInclusionMode wartości wyliczenia, ale nie jest przydatna w większości scenariuszy federacyjnych. Wartości SecurityTokenInclusionMode.Never i SecurityTokenInclusionMode.AlwaysToInitiator powodują, że klient wysyła odwołanie do tokenu wystawionego przez usługę tokenu zabezpieczającego do jednostki uzależnionej. Jeśli jednostka uzależniona nie posiada kopii wystawionego tokenu, uwierzytelnianie zakończy się niepowodzeniem, ponieważ odwołanie do tokenu nie jest możliwe do rozwiązania. Program WCF traktuje SecurityTokenInclusionMode.Once jako odpowiednik SecurityTokenInclusionMode.AlwaysToRecipientelementu .

Zobacz też