Megosztás a következőn keresztül:


Útmutató: Ügyfél hitelesítő adatainak megadása

A Windows Communication Foundation (WCF) használatával a szolgáltatás megadhatja az ügyfél hitelesítésének módját a szolgáltatásban. Egy szolgáltatás például előírhatja, hogy az ügyfél hitelesítése tanúsítvánnyal történik.

Az ügyfél hitelesítő adatainak típusának meghatározása

  1. Metaadatok lekérése a szolgáltatás metaadat-végpontjáról. A metaadatok általában két fájlból állnak: a választott programozási nyelv ügyfélkódja (az alapértelmezett a Visual C#), valamint egy XML-konfigurációs fájl. A metaadatok lekérésének egyik módja az Svcutil.exe eszköz használata az ügyfélkód és az ügyfélkonfiguráció visszaadásához. További információ: Metaadatok és ServiceModel Metaadatok segédprogram (Svcutil.exe) lekérése.

  2. Nyissa meg az XML-konfigurációs fájlt. Ha a Svcutil.exe eszközt használja, a fájl alapértelmezett neve Output.config.

  3. Keresse meg a <biztonsági> elemet a módattribútummal (<biztonsági mód =>MessageOrTransport ahol MessageOrTransport az egyik biztonsági mód van beállítva).

  4. Keresse meg a módértéknek megfelelő gyermekelemet. Ha például a mód Üzenet értékre van állítva, keresse meg a <biztonsági> elemben< található üzenetelemet>.

  5. Figyelje meg a clientCredentialType attribútumhoz rendelt értéket. A tényleges érték attól függ, hogy melyik módot használja, milyen átvitelt vagy üzenetet használ.

Az alábbi XML-kód az üzenetbiztonságot használó ügyfél konfigurációját mutatja be, és tanúsítványt igényel az ügyfél hitelesítéséhez.

<security mode="Message">
    <transport clientCredentialType="Windows" proxyCredentialType="None"
        realm="" />
     <message clientCredentialType="Certificate" negotiateServiceCredential="true"
    algorithmSuite="Default" establishSecurityContext="true" />
</security>

Példa: TCP átviteli mód tanúsítványként ügyfél-hitelesítő adatokkal

Ez a példa a biztonsági módot Átviteli módra állítja, és az ügyfél hitelesítő adatait X.509-tanúsítványra állítja. Az alábbi eljárások bemutatják, hogyan állíthatja be az ügyfél hitelesítő adatait az ügyfélen a kódban és a konfigurációban. Ez azt feltételezi, hogy a ServiceModel Metadata segédprogrammal (Svcutil.exe) visszaadta a metaadatokat (kódot és konfigurációt) a szolgáltatásból. További információ : Ügyfél létrehozása.

Az ügyfél hitelesítő adatainak megadása az ügyfélen kódban

  1. A ServiceModel metadata segédprogrammal (Svcutil.exe) hozhat létre kódot és konfigurációt a szolgáltatásból.

  2. Hozza létre a WCF-ügyfél egy példányát a létrehozott kóddal.

  3. Az ügyfélosztályon állítsa az ClientCredentials osztály tulajdonságát ClientBase<TChannel> egy megfelelő értékre. Ez a példa egy X.509-tanúsítványra állítja a tulajdonságot az SetCertificateX509CertificateInitiatorClientCredential osztály metódusával.

    // Create a binding using Transport and a certificate.
    NetTcpBinding b = new NetTcpBinding();
    b.Security.Mode = SecurityMode.Transport;
    b.Security.Transport.ClientCredentialType =
        TcpClientCredentialType.Certificate;
    
    // Create an EndPointAddress.
    EndpointAddress ea = new EndpointAddress(
        "net.tcp://localHost:8036/Calculator/MyCalculator");
    
    // Create the client.
    CalculatorClient cc = new CalculatorClient(b, ea);
    
    // Set the certificate for the client.
    cc.ClientCredentials.ClientCertificate.SetCertificate(
        StoreLocation.LocalMachine,
        StoreName.My,
        X509FindType.FindBySubjectName,
        "cohowinery.com");
    try
    {
        cc.Open();
        // Begin using the client.
        Console.WriteLine(cc.Divide(1001, 2));
        cc.Close();
    }
    catch (AddressAccessDeniedException adExc)
    {
        Console.WriteLine(adExc.Message);
        Console.ReadLine();
    }
    catch (System.Exception exc)
    {
        Console.WriteLine(exc.Message);
        Console.ReadLine();
    }
    
    ' Create a binding using Transport and a certificate.
    Dim b As New NetTcpBinding()
    b.Security.Mode = SecurityMode.Transport
    b.Security.Transport.ClientCredentialType = TcpClientCredentialType.Certificate
    
    ' Create an EndPointAddress.
    Dim ea As New EndpointAddress("net.tcp://localHost:8036/Calculator/MyCalculator")
    
    ' Create the client.
    Dim cc As New CalculatorClient(b, ea)
    
    ' Set the certificate for the client.
    cc.ClientCredentials.ClientCertificate.SetCertificate( _
    StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName, "cohowinery.com")
    Try
        cc.Open()
        ' Begin using the client.
        Console.WriteLine(cc.Divide(1001, 2))
        cc.Close()
    Catch adExc As AddressAccessDeniedException
        Console.WriteLine(adExc.Message)
        Console.ReadLine()
    Catch exc As System.Exception
        Console.WriteLine(exc.Message)
        Console.ReadLine()
    End Try
    

    Az osztály bármelyik számbavételét használhatja X509FindType . A rendszer itt a tulajdonos nevét használja a tanúsítvány módosítása esetén (lejárati dátum miatt). A tulajdonosnév használatával az infrastruktúra újra megkeresheti a tanúsítványt.

Az ügyfél hitelesítő adatainak megadása az ügyfélen a konfigurációban

  1. Adjon hozzá egy viselkedési> elemet a <viselkedéselemhez>.<

  2. Ügyfél-hitelesítő adatok> elem hozzáadása a <viselkedési elemhez>.< Ügyeljen arra, hogy a szükséges name attribútumot megfelelő értékre állítsa.

  3. Adjon hozzá egy <clientCertificate> elemet az <ügyfél hitelesítő adatai> elemhez.

  4. Állítsa a következő attribútumokat a megfelelő értékekre: storeLocation, storeName, x509FindTypeés findValue, az alábbi kódban látható módon. A tanúsítványokról további információt a Tanúsítványok használata című témakörben talál.

    <behaviors>
       <endpointBehaviors>
          <behavior name="endpointCredentialBehavior">
            <clientCredentials>
              <clientCertificate findValue="Contoso.com"
                                 storeLocation="LocalMachine"
                                 storeName="TrustedPeople"
                                 x509FindType="FindBySubjectName" />
            </clientCredentials>
          </behavior>
       </endpointBehaviors>
    </behaviors>
    
  5. Az ügyfél konfigurálásakor adja meg a viselkedést az behaviorConfiguration<endpoint> elem attribútumának beállításával, ahogyan az az alábbi kódban látható. A végpontelem az <ügyfélelem> gyermeke. Adja meg a kötéskonfiguráció nevét úgy is, hogy az bindingConfiguration attribútumot az ügyfél kötésére állítja. Ha létrehozott konfigurációs fájlt használ, a rendszer automatikusan létrehozza a kötés nevét. Ebben a példában a név a következő "tcpBindingWithCredential": .

    <client>
      <endpoint name =""
                address="net.tcp://contoso.com:8036/aloha"
                binding="netTcpBinding"
                bindingConfiguration="tcpBindingWithCredential"
                behaviorConfiguration="endpointCredentialBehavior" />
    </client>
    

Lásd még