Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przykład WS2007FederationHttp demonstruje użycie standardowego WS2007FederationHttpBindingpowiązania, którego można użyć do tworzenia scenariuszy federacyjnych obsługujących wersję 1.3 specyfikacji WS-Trust.
Uwaga / Notatka
Procedura instalacji i instrukcje kompilacji dla tego przykładu znajdują się na końcu tego tematu.
Przykład składa się z programu klienckiego opartego na konsoli (Client.exe), programu usługi tokenu zabezpieczającego opartego na konsoli (Securitytokenservice.exe) i programu usług opartego na konsoli (Service.exe). Usługa implementuje kontrakt, który definiuje wzorzec komunikacji żądania/odpowiedzi. Kontrakt jest definiowany przez ICalculator interfejs, który uwidacznia operacje matematyczne (Add, Subtract, Multiplyi Divide). Klient uzyskuje token zabezpieczający z usługi Security Token Service (STS) i wykonuje synchroniczne żądania do usługi dla danej operacji matematycznej. Następnie usługa odpowiada z wynikiem. Działanie klienta jest widoczne w oknie konsoli.
Przykład udostępnia ICalculator kontrakt przy użyciu ws2007FederationHttpBinding elementu . Konfiguracja tego powiązania na kliencie jest wyświetlana w następującym kodzie:
<bindings>
<ws2007FederationHttpBinding>
<binding name="ServiceFed" >
<security mode ="Message">
<message issuedKeyType ="SymmetricKey"
issuedTokenType ="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1" >
<!-- Endpoint address and binding for Security Token Service -->
<issuer address ="http://localhost:8000/sts/windows"
binding ="ws2007HttpBinding" />
</message>
</security>
</binding>
</ws2007FederationHttpBinding>
</bindings>
W obszarze< zabezpieczeń> wartość określa, security który tryb zabezpieczeń ma być używany. W tym przykładzie message stosuje się zabezpieczenia, dlatego <komunikat> jest określony w ramach <zabezpieczeń>. Element <wystawcy> wewnątrz <komunikatu> określa adres i powiązanie dla STS, który wydaje token zabezpieczający klientowi, aby klient mógł się uwierzytelnić w ICalculatorusłudze.
Konfiguracja tego powiązania w usłudze jest wyświetlana w następującym kodzie:
<bindings>
<ws2007FederationHttpBinding>
<binding name="ServiceFed" >
<security mode ="Message">
<message issuedKeyType ="SymmetricKey"
issuedTokenType ="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1" >
<!-- Metadata address for Security Token Service -->
<issuerMetadata address ="http://localhost:8000/sts/mex" >
<identity>
<certificateReference storeLocation ="CurrentUser"
storeName="TrustedPeople"
x509FindType ="FindBySubjectDistinguishedName"
findValue ="CN=STS" />
</identity>
</issuerMetadata>
</message>
</security>
</binding>
</ws2007FederationHttpBinding>
</bindings>
W obszarze< zabezpieczeń> wartość określa, security który tryb zabezpieczeń ma być używany. W tym przykładzie message stosuje się zabezpieczenia, dlatego <komunikat> jest określony w ramach <zabezpieczeń>. Element <issuerMetadata> wewnątrz ws2007FederationHttpBinding< określa adres i tożsamość punktu końcowego, który może służyć do pobierania metadanych dla usługi STS.
Zachowanie usługi jest wyświetlane w następującym kodzie:
<behaviors>
<serviceBehaviors>
<behavior name ="ServiceBehaviour" >
<serviceDebug includeExceptionDetailInFaults ="true"/>
<serviceMetadata httpGetEnabled ="true"/>
<serviceCredentials>
<issuedTokenAuthentication>
<knownCertificates>
<add storeLocation ="LocalMachine"
storeName="TrustedPeople"
x509FindType="FindBySubjectDistinguishedName"
findValue="CN=STS" />
</knownCertificates>
</issuedTokenAuthentication>
<serviceCertificate storeLocation ="LocalMachine"
storeName ="My"
x509FindType ="FindBySubjectDistinguishedName"
findValue ="CN=localhost"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
Funkcja< issuedTokenAuthentication>> umożliwia usłudze określanie ograniczeń dotyczących tokenów, które klienci mogą przedstawiać podczas uwierzytelniania. Ta konfiguracja określa, że tokeny podpisane przez certyfikat, którego nazwa podmiotu to CN=STS, są akceptowane przez usługę.
Usługa STS udostępnia pojedynczy punkt końcowy przy użyciu standardu WS2007HttpBinding. Usługa odpowiada na żądania od klientów dotyczące tokenów. Jeśli klient jest uwierzytelniany przy użyciu konta systemu Windows, usługa wystawia token zawierający nazwę użytkownika klienta jako oświadczenie. W ramach tworzenia tokenu usługa STS podpisuje token przy użyciu klucza prywatnego skojarzonego z certyfikatem CN=STS. Ponadto tworzy klucz symetryczny i szyfruje go przy użyciu klucza publicznego skojarzonego z certyfikatem CN=localhost. W przypadku zwracania tokenu do klienta usługa STS zwraca również klucz symetryczny. Klient przedstawia wystawiony token do ICalculator usługi i potwierdza, że zna klucz symetryczny, podpisując komunikat za pomocą tego klucza.
Po uruchomieniu przykładu żądanie tokenu zabezpieczającego jest wyświetlane w oknie konsoli usługi STS. Żądania i odpowiedzi operacji są wyświetlane w oknach konsoli klienta i usługi. Naciśnij ENTER w dowolnym z okien konsoli, aby zamknąć aplikację.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
Plik Setup.bat dołączony do tego przykładu umożliwia skonfigurowanie serwera i usługi STS przy użyciu odpowiednich certyfikatów w celu uruchomienia aplikacji hostowanej samodzielnie. Plik wsadowy tworzy dwa certyfikaty w magazynie certyfikatów TrustedPeople/LocalMachine. Pierwszy certyfikat ma nazwę podmiotu CN=STS i jest używany przez STS do podpisywania tokenów zabezpieczających, które są wydawane klientowi. Drugi certyfikat ma nazwę podmiotu CN=localhost i jest używany przez STS do szyfrowania klucza w taki sposób, aby usługa mogła go odszyfrować.
Aby skonfigurować, skompilować i uruchomić przykładowy program
Upewnij się, że wykonano procedurę instalacji One-Time dla przykładów programu Windows Communication Foundation.
Otwórz wiersz polecenia dewelopera dla programu Visual Studio z uprawnieniami administratora i uruchom plik Setup.bat, aby utworzyć wymagane certyfikaty.
Ten plik wsadowy używa Certmgr.exe i Makecert.exe, które są dystrybuowane za pomocą zestawu Windows SDK. Należy jednak uruchomić Setup.bat z poziomu wiersza polecenia programu Visual Studio, aby umożliwić skryptowi znalezienie tych narzędzi.
Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w Kompilowanie przykładów Windows Communication Foundation.
Aby uruchomić przykład w konfiguracji pojedynczej lub między komputerami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation. Jeśli używasz systemu Windows Vista, musisz uruchomić Service.exe, Client.exei SecurityTokenService.exe z podwyższonym poziomem uprawnień (kliknij prawym przyciskiem myszy pliki, a następnie kliknij polecenie Uruchom jako administrator).