Ú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
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.
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.
Keresse meg a <biztonsági> elemet a módattribútummal (<biztonsági mód =>
MessageOrTransport
aholMessageOrTransport
az egyik biztonsági mód van beállítva).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>.
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
A ServiceModel metadata segédprogrammal (Svcutil.exe) hozhat létre kódot és konfigurációt a szolgáltatásból.
Hozza létre a WCF-ügyfél egy példányát a létrehozott kóddal.
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
Adjon hozzá egy viselkedési> elemet a <viselkedéselemhez>.<
Ü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.Adjon hozzá egy <clientCertificate> elemet az <ügyfél hitelesítő adatai> elemhez.
Állítsa a következő attribútumokat a megfelelő értékekre:
storeLocation
,storeName
,x509FindType
ésfindValue
, 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>
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 azbindingConfiguration
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
- NetTcpBinding
- SetCertificate
- X509CertificateRecipientServiceCredential
- ClientBase<TChannel>
- X509CertificateInitiatorClientCredential
- WCF-biztonság programozása
- Hitelesítő adattípus kiválasztása
- ServiceModel Metadata Segédprogram (Svcutil.exe)
- Tanúsítványok használata
- Útmutató: Ügyfél létrehozása
- <netTcpBinding>
- <Biztonság >
- <üzenet>
- <Viselkedés>
- <Viselkedésmódok>
- <clientCertificate>
- <ügyfél hitelesítő adatai>