Ten artykuł został przetłumaczony przez maszynę. Aby wyświetlić jego treść w języku angielskim, zaznacz pole wyboru Angielski. Możesz też wyświetlić angielski tekst w okienku wyskakującym, przesuwając wskaźnik myszy nad konkretny tekst”.
Tłumaczenie
Angielski

Zabezpieczanie klientów [WCF]

.NET Framework (current version)
 

W Windows Communication Foundation (WCF), usługa mówią wymagania dotyczące zabezpieczeń dla klientów. Oznacza to usługa określa jakie trybu zabezpieczeń do użycia i określa, czy klient musi dostarczyć poświadczenia. Zabezpieczanie klienta w związku z tym, proces jest proste: Użyj metadanych uzyskany z usługi (jeśli jest publikowany) i kompilacji klienta. Metadane Określa, jak skonfigurować klienta. Jeśli usługa wymaga, że klient podać poświadczenia, należy uzyskać poświadczeń, która pasuje do wymagań. W tym temacie omówiono proces bardziej szczegółowo.Aby uzyskać więcej informacji dotyczących Tworzenie bezpiecznych usług, zobacz Zabezpieczanie usług.

Domyślnie WCF powiązania ma włączone funkcje zabezpieczeń. (Wyjątek stanowi BasicHttpBinding.) W związku z tym jeśli usługa została utworzona przy użyciu WCF, istnieje duże prawdopodobieństwo, że wdroży zabezpieczeń, aby zapewnić uwierzytelnianie, poufności i integralności. W takim przypadku metadanych, które zapewnia usługi wskazują, co wymaga, aby ustanowić kanał komunikacji zabezpieczonej. Jeżeli metadane usługi nie ma żadnych wymagań dotyczących zabezpieczeń, jest sposobem nałożyć systemu zabezpieczeń, takich jak Secure Sockets Layer (SSL) za pośrednictwem protokołu HTTP, w usłudze. Jeśli usługa wymaga jednak klienta podać poświadczenia, następnie klienta dla deweloperów, narzędzia wdrażania lub administrator należy podać rzeczywiste poświadczeń, który będzie używany przez klienta do samodzielnego uwierzytelnienia w usłudze.

Podczas tworzenia klienta, pierwszym krokiem jest uzyskać metadanych dla usługi klienta będą komunikować się z. Można to zrobić na dwa sposoby. Po pierwsze, jeśli usługa publikuje punktu końcowego programu exchange (MEX) metadanych lub udostępnia metadanych za pośrednictwem protokołu HTTP lub HTTPS, można pobrać metadanych za pomocą Narzędzie do obsługi metadanych elementu ServiceModel (Svcutil.exe), generująca zarówno pliki kodu klienta, jak i plik konfiguracji. (Aby uzyskać więcej informacji dotyczących za pomocą narzędzia, zobacz Uzyskiwanie dostępu do usług za pomocą klienta WCF.) Jeśli usługa nie jest publikowany punktu końcowego MEX i również nie udostępnić metadanych za pośrednictwem protokołu HTTP lub HTTPS, należy skontaktować się twórca usługi dokumentacji, który opisuje wymagania dotyczące zabezpieczeń i metadanych.

System_CAPS_importantWażne

Zalecane jest, że metadane pochodzą z zaufanego źródła i że nie być zmodyfikowany. Metadane pobrany przy użyciu protokołu HTTP są wysyłane w postaci zwykłego tekstu i może zostać zmieniony. Jeśli usługa używa HttpsGetEnabled i HttpsGetUrl Właściwości, użyj adresu URL twórca usługi dostarczane do pobierania danych przy użyciu protokołu HTTPS.

Metadane źródła można podzielić na dwie kategorie: zaufania źródła i niepewnych źródeł. Jeśli ufasz źródła i zostały pobrane kodu klienta i innych metadanych z tym źródłem bezpiecznego punktu końcowego MEX, a następnie klienta można tworzyć, dostarczyć odpowiednie poświadczenia, a następnie uruchom go z nie innych czynników.

Jednak w przypadku wybrania Pobierz klienta i metadanych z niezaufanego źródła niewielkim dowiedzieć, należy zweryfikować środki bezpieczeństwa, której używa kodu. Na przykład użytkownik musi nie po prostu utworzyć klienta, który wysyła do usługi informacji osobistych lub finansowych, chyba że usługa wymaga poufności i integralności (co najmniej). W zakresie, w jakim chcesz ujawniać takie informacje, ponieważ takie informacje będą widoczne dla niego należy ufać właściciela usługi.

Zgodnie z zasadą w związku z tym, używając kodu i metadanych z niezaufanego źródła, sprawdź kod i metadanych, aby upewnić się, że spełnia on wymagania poziom zabezpieczeń, która jest wymagana.

Ustawienie poświadczeń klienta na komputerze klienckim składa się z dwóch kroków:

  1. Ustalenia typu poświadczeń klienta wymaga usługi. Jest to realizowane za pomocą jednej z dwóch metod. Po pierwsze, jeśli masz dokumentację z twórca usługi go należy określić poświadczenie klienta wymaga usługi typu (jeśli istnieje). Po drugie Jeśli masz tylko plik konfiguracji generowany przez narzędzie Svcutil.exe można zbadać poszczególnych powiązań, aby ustalić, jaki typ poświadczeń jest wymagana.

  2. Określ poświadczenia klienta faktycznie. Poświadczenie klienta faktycznie jest nazywany wartości poświadczeń klienta odróżniający go od typu. Na przykład, jeśli typu poświadczeń klienta określa certyfikatu, należy podać certyfikat X.509, wystawiony przez urząd certyfikacji usługi relacji zaufania.

Jeśli Konfiguracja narzędzia Svcutil.exe wygenerowanych plików, należy sprawdzić, czy jest < powiązania > sekcję, aby określić, jakiego typu poświadczeń klienta jest wymagana. W ramach tej sekcji są elementy powiązanie, które określają wymagania w zakresie zabezpieczeń. W szczególności należy < security > Element każdego powiązania. Ten element zawiera mode atrybut, który można ustawić na jeden z trzema możliwymi wartościami (Message, Transport, lub TransportWithMessageCredential). Wartość atrybutu określa tryb i tryb Określa, której elementy podrzędne jest ważna.

<security> Element może zawierać albo <transport> lub <message> element lub obie. Znaczący element jest zgodny z trybu zabezpieczeń. Na przykład, poniższy kod określa, że tryb zabezpieczeń jest "Message", a typ dla poświadczeń klienta <message> element jest "Certificate". W takim przypadku <transport> element można zignorować. Jednak <message> Określa, czy należy podać certyfikat X.509.

<wsHttpBinding>
    <binding name="WSHttpBinding_ICalculator">
       <security mode="Message">
           <transport clientCredentialType="Windows" 
                      realm="" />
           <message clientCredentialType="Certificate" 
                    negotiateServiceCredential="true"
                    algorithmSuite="Default" 
                    establishSecurityContext="true" />
       </security>
    </binding>
</wsHttpBinding>

Należy pamiętać, że jeśli clientCredentialType ma ustawioną wartość atrybutu "Windows", jak pokazano w poniższym przykładzie, nie musisz podawać wartość rzeczywista poświadczenia. Jest to spowodowane zintegrowane zabezpieczenia systemu Windows zawiera rzeczywiste poświadczeń (tokenu Kerberos) osoby, która jest uruchomiony klient.

<security mode="Message">
    <transport clientCredentialType="Windows " 
        realm="" />
</security>

Jeśli okaże się, że klient musi podać poświadczenia, użyj odpowiedniej metody, aby skonfigurować klienta. Na przykład, aby ustawić certyfikat klienta, należy użyć SetCertificate metody.

Wspólny formularz poświadczenie jest certyfikat X.509. Można podać poświadczenia na dwa sposoby:

  • Przez programowania go w kodzie klienta (za pomocą SetCertificate metody).

Dodając < zachowania > sekcję pliku konfiguracji klienta i za pomocą clientCredentials elementu (poniżej).

Aby ustawić < clientCredentials > wartość w kodzie, należy przejść do ClientCredentials właściwości ClientBase<TChannel> klasy. Zwraca wartość właściwości ClientCredentials obiekt, który umożliwia dostęp do różnych typów poświadczeń, jak pokazano w poniższej tabeli.

Właściwość ClientCredential

Opis

Informacje o

ClientCertificate

Zwraca X509CertificateInitiatorClientCredential

Reprezentuje certyfikatu X.509 podany przez klienta do samodzielnego uwierzytelnienia w usłudze.

HttpDigest

Zwraca HttpDigestClientCredential

Reprezentuje poświadczenie HTTP digest. Poświadczenie jest skrót nazwy użytkownika i hasła.

IssuedToken

Zwraca IssuedTokenClientCredential

Reprezentuje tokenu zabezpieczeń niestandardowych wystawiony przez usługę tokenu zabezpieczającego, często używane w scenariuszach federacji.

Peer

Zwraca PeerCredential

Reprezentuje poświadczenie równorzędnego uczestnictwa w siatki elementów równorzędnych w domenie systemu Windows.

ServiceCertificate

Zwraca X509CertificateRecipientClientCredential

Reprezentuje usługa negocjacji poza pasmem w certyfikatu X.509.

UserName

Zwraca UserNamePasswordClientCredential

Reprezentuje parę nazwa i hasło użytkownika.

Windows

Zwraca WindowsClientCredential

Reprezentuje poświadczenie klienta systemu Windows (poświadczeń Kerberos). Właściwości klasy są tylko do odczytu.

Poświadczenie wartości są określane za pomocą zachowania punktu końcowego jako elementy podrzędne < clientCredentials > element. Element używany zależy od typu poświadczeń klienta. Na przykład w poniższym przykładzie przedstawiono konfigurację, aby ustawić certyfikatu X.509 przy użyciu <<clientCertificate> w <clientCredentials>, element.

<configuration>
  <system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="myEndpointBehavior">
          <clientCredentials>
            <clientCertificate findvalue="myMachineName" 
            storeLocation="Current" X509FindType="FindBySubjectName" />
          </clientCredentials>
        </behavior>            
    </behaviors>
  </system.serviceModel>
</configuration>

Aby ustawić poświadczenia klienta w konfiguracji, należy dodać < endpointBehaviors > elementu do pliku konfiguracji. Ponadto dodano zachowanie elementu musi być połączony punkt końcowy usługi przy użyciu behaviorConfiguration atrybutu <endpoint> jak pokazano w poniższym przykładzie. Wartość behaviorConfiguration atrybutu musi być zgodna wartość zachowanie name atrybutu.

<configuration>

<system.serviceModel>

<client>

<endpoint address="http://localhost/servicemodelsamples/service.svc"

binding="wsHttpBinding"

bindingConfiguration="Binding1"

behaviorConfiguration="myEndpointBehavior"

contract="Microsoft.ServiceModel.Samples.ICalculator" />

</client>

</system.serviceModel>

</configuration>

System_CAPS_noteUwaga

Niektóre wartości poświadczeń klienta nie może być zestaw za pomocą plików konfiguracji aplikacji, na przykład, nazwy użytkownika i hasła, lub użytkownika systemu Windows i hasło wartości. Wartości tych poświadczeń można określić tylko w kodzie.

Aby uzyskać więcej informacji dotyczących Ustawienie poświadczeń klienta, zobacz Instrukcje: Określanie wartości poświadczeń klienta.

System_CAPS_noteUwaga

ClientCredentialType jest ignorowana, gdy SecurityMode jest równa "TransportWithMessageCredential", opisane w następującej konfiguracji próbki.

<wsHttpBinding>
    <binding name="PingBinding">
        <security mode="TransportWithMessageCredential"  >
           <message  clientCredentialType="UserName" 
               establishSecurityContext="false"  
               negotiateServiceCredential="false" />
           <transport clientCredentialType="Certificate"  />
         </security>
    </binding>
</wsHttpBinding>
Pokaż: