Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Windows Communication Foundationben (WCF) a szolgáltatás határozza meg az ügyfelek biztonsági követelményeit. Ez azt jelzi, hogy a szolgáltatás milyen biztonsági módot használ, és hogy az ügyfélnek meg kell-e adnia egy hitelesítő adatot. Az ügyfél biztonságossá tételének folyamata tehát egyszerű: használja a szolgáltatásból beszerzett metaadatokat (ha közzé van téve), és hozzon létre egy ügyfelet. A metaadatok határozzák meg az ügyfél konfigurálását. Ha a szolgáltatás megköveteli, hogy az ügyfél hitelesítő adatokat adjon meg, akkor olyan hitelesítő adatot kell beszereznie, amely megfelel a követelménynek. Ez a témakör részletesebben ismerteti a folyamatot. A biztonságos szolgáltatás létrehozásával kapcsolatos további információkért lásd: Securing Services.
A szolgáltatás megadja a biztonságot
A WCF-kötések alapértelmezés szerint engedélyezve vannak a biztonsági funkciókkal. (A kivétel a BasicHttpBinding.) Ezért ha a szolgáltatást a WCF használatával hozták létre, nagyobb az esély arra, hogy a hitelesítés, a bizalmasság és az integritás biztosítása érdekében a biztonságot implementálja. Ebben az esetben a szolgáltatás által biztosított metaadatok jelzik, hogy mire van szükség egy biztonságos kommunikációs csatorna létrehozásához. Ha a szolgáltatás metaadatai nem tartalmaznak biztonsági követelményeket, nem lehet olyan biztonsági sémát bevezetni, mint például a SECURE Sockets Layer (SSL) HTTP-n keresztül egy szolgáltatásra. Ha azonban a szolgáltatás megköveteli az ügyfél számára a hitelesítő adatok megadását, akkor az ügyfél fejlesztőjének, üzembe helyezőjének vagy rendszergazdájának meg kell adnia azt a hitelesítő adatot, amelyet az ügyfél a szolgáltatásban való hitelesítéshez használ.
Metaadatok beszerzése
Ügyfél létrehozásakor az első lépés a szolgáltatás metaadatainak lekérése, amellyel az ügyfél kommunikálni fog. Ez kétféleképpen végezhető el. Először is, ha a szolgáltatás közzétesz egy metaadatcsere (MEX) végpontot, vagy elérhetővé teszi a metaadatait HTTP-n vagy HTTPS-en keresztül, letöltheti a metaadatokat a ServiceModel Metadata segédprogrammal (Svcutil.exe), amely létrehoz kódfájlokat az ügyfél számára, valamint egy konfigurációs fájlt. (Az eszköz használatával kapcsolatos további információkért lásd: Szolgáltatások elérése WCF-ügyféllel.) Ha a szolgáltatás nem tesz közzé MEX-végpontot, és nem teszi elérhetővé a metaadatait HTTP-en vagy HTTPS-en keresztül, a biztonsági követelményeket és a metaadatokat leíró dokumentációért forduljon a szolgáltatás létrehozójához.
Fontos
Javasoljuk, hogy a metaadatok megbízható forrásból származzanak, és ne legyenek módosítva. A HTTP-protokoll használatával lekért metaadatok világos szövegben lesznek elküldve, és módosíthatók. Ha a szolgáltatás a HttpsGetEnabled és HttpsGetUrl tulajdonságokat használja, használja az URL-címet, amit a szolgáltatás létrehozója adott, hogy a HTTPS protokoll használatával letöltse az adatokat.
A biztonság érvényesítése
A metaadat-források két széles kategóriára oszthatók: megbízhatósági forrásokra és nem megbízható forrásokra. Ha megbízik egy forrásban, és letöltötte az ügyfélkódot és az egyéb metaadatokat a forrás biztonságos MEX-végpontjáról, létrehozhatja az ügyfelet, megadhatja a megfelelő hitelesítő adatokat, és futtathatja más problémák nélkül.
Ha azonban úgy dönt, hogy letölt egy ügyfelet és metaadatokat egy olyan forrásból, amelyről keveset tud, győződjön meg arról, hogy ellenőrzi a kód által használt biztonsági intézkedéseket. Nem hozhat létre például olyan ügyfelet, amely személyes vagy pénzügyi adatait egy szolgáltatásnak küldi, kivéve, ha a szolgáltatás bizalmasságot és integritást igényel (legalábbis). Meg kell bíznia a szolgáltatás tulajdonosában olyan mértékben, hogy hajlandó közzétenni ezeket az információkat, mert ezek az információk láthatóak lesznek számukra.
Ezért ha nem megbízható forrásból származó kódot és metaadatokat használ, ellenőrizze a kódot és a metaadatokat, hogy megfeleljen a szükséges biztonsági szintnek.
Ügyfél hitelesítő adatainak beállítása
Az ügyfél hitelesítő adatainak beállítása az ügyfélen két lépésből áll:
Határozza meg a szolgáltatás által igényelt ügyfél-hitelesítőadat-típust . Ezt két módszer egyikével hajtja végre. Először is, ha rendelkezik a szolgáltatás létrehozójától származó dokumentációval, meg kell adnia a szolgáltatáshoz szükséges ügyfél-hitelesítő adatokat (ha vannak ilyenek). Másodszor, ha csak a Svcutil.exe eszköz által létrehozott konfigurációs fájllal rendelkezik, megvizsgálhatja az egyes kötéseket annak megállapításához, hogy milyen hitelesítő adattípusra van szükség.
Adjon meg egy tényleges ügyfél-hitelesítő adatot. A tényleges ügyfél-hitelesítő adatokat ügyfél-hitelesítő értéknek nevezzük, amely megkülönbözteti a típustól. Ha például az ügyfél hitelesítő adatainak típusa tanúsítványt ad meg, meg kell adnia egy X.509-tanúsítványt, amelyet a szolgáltatás megbízhatósági szolgáltatója állít ki.
Az ügyfél hitelesítő adatainak típusának meghatározása
Ha rendelkezik a Svcutil.exe eszköz által létrehozott konfigurációs fájllal, vizsgálja meg a <kötések szakaszt, és állapítsa> meg, hogy milyen ügyfél-hitelesítő adattípusra van szükség. A szakaszban a biztonsági követelményeket meghatározó kötési elemek találhatók. Vizsgálja meg az egyes kötések <biztonsági> elemét. Ez az elem tartalmazza az mode attribútumot, amelyet három lehetséges érték (Messagevagy TransportTransportWithMessageCredentialérték) egyikére állíthat be. Az attribútum értéke határozza meg a módot, és a mód határozza meg, hogy a gyermekelemek közül melyik lényeges.
Az <security> elem tartalmazhat egy <transport> vagy egy <message> elemet, vagy mindkettőt. A fontos elem az, amely megfelel a biztonsági módnak. Az alábbi kód például meghatározza, hogy a biztonsági mód "Message", és a <message> elem ügyfél-hitelesítő típusát a "Certificate" adja meg. Ebben az esetben az <transport> elem figyelmen kívül hagyható. Az <message> elem azonban azt határozza meg, hogy X.509-tanúsítványt kell megadni.
<wsHttpBinding>
<binding name="WSHttpBinding_ICalculator">
<security mode="Message">
<transport clientCredentialType="Windows"
realm="" />
<message clientCredentialType="Certificate"
negotiateServiceCredential="true"
algorithmSuite="Default"
establishSecurityContext="true" />
</security>
</binding>
</wsHttpBinding>
Vegye figyelembe, hogy ha az clientCredentialType attribútum "Windows"értéke az alábbi példában látható, akkor nem kell megadnia a tényleges hitelesítő értéket. Ennek az az oka, hogy a Windows integrált biztonsága biztosítja az ügyfelet futtató személy tényleges hitelesítő adatait (Kerberos-jogkivonatát).
<security mode="Message">
<transport clientCredentialType="Windows "
realm="" />
</security>
Az ügyfél hitelesítő adatainak beállítása
Ha úgy vélik, hogy az ügyfélnek meg kell adnia egy hitelesítő adatot, használja a megfelelő módszert az ügyfél konfigurálásához. Ügyféltanúsítvány beállításához például használja a metódust SetCertificate .
A hitelesítő adatok gyakori formája az X.509-tanúsítvány. A hitelesítő adatokat kétféleképpen adhatja meg:
- Az ügyfélkódban való programozással (a
SetCertificatemetódus használatával).
Az ügyfél konfigurációs fájljában adjon hozzá egy <viselkedési> szakaszt, és használja a clientCredentials elemet (alább látható).
Ügyfél-hitelesítő adatok< értékének >beállítása a Kódban
Ahhoz, hogy beállítson egy <clientCredentials> értéket a kódban, hozzá kell férnie az ClientCredentialsClientBase<TChannel> osztály egyik tulajdonságához. A tulajdonság egy ClientCredentials olyan objektumot ad vissza, amely lehetővé teszi a különböző hitelesítő adatokhoz való hozzáférést az alábbi táblázatban látható módon.
| ClientCredential tulajdonság | Leírás | Jegyzetek |
|---|---|---|
| ClientCertificate | Visszaad egy X509CertificateInitiatorClientCredential | Az ügyfél által a szolgáltatásban való hitelesítéshez biztosított X.509-tanúsítványt jelöli. |
| HttpDigest | Visszaad egy HttpDigestClientCredential | HTTP-kivonat hitelesítő adatokat jelöl. A hitelesítő adat a felhasználónév és a jelszó kivonata. |
| IssuedToken | Visszaad egy IssuedTokenClientCredential | Egy biztonsági jogkivonat-szolgáltatás által kiadott egyéni biztonsági jogkivonatot jelöl, amelyet gyakran használnak összevonási forgatókönyvekben. |
| Peer | Visszaadja a PeerCredential | Társ-hitelesítő adatokat jelöl egy Windows-tartomány társhálójában való részvételhez. |
| ServiceCertificate | Visszaad egy X509CertificateRecipientClientCredential | A szolgáltatás által sávon kívüli egyeztetés során biztosított X.509-tanúsítványt jelöl. |
| UserName | Visszaadja a UserNamePasswordClientCredential | Felhasználónevet és jelszópárt jelöl. |
| Windows | Visszaadja a WindowsClientCredential | Windows-ügyfél hitelesítő adatait (Kerberos-hitelesítő adatokat) jelöl. Az osztály tulajdonságai csak olvashatók. |
Ügyfél-hitelesítő adatok< értékének >beállítása a konfigurációban
A hitelesítő adatok értékeit egy végponti viselkedés használatával adhatók meg az <ügyfél hitelesítő adatai> elem gyermekelemeiként. A használt elem az ügyfél hitelesítő adatainak típusától függ. Az alábbi példa például azt a konfigurációt mutatja be, amely egy X.509-tanúsítványt állít be a <<clientCertificate> használatával.
<configuration>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="myEndpointBehavior">
<clientCredentials>
<clientCertificate findvalue="myMachineName"
storeLocation="Current" X509FindType="FindBySubjectName" />
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Az ügyfél hitelesítő adatainak konfigurációban való beállításához adjon hozzá egy <endpointBehaviors> elemet a konfigurációs fájlhoz. Emellett a hozzáadott viselkedési elemet a szolgáltatás végpontjával kell összekapcsolni a behaviorConfiguration meg kell egyeznie a viselkedési name attribútum értékével.
<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>
Megjegyzés
Az ügyfél hitelesítő adatainak egy része nem állítható be alkalmazáskonfigurációs fájlokkal, például felhasználónévvel és jelszóval, illetve Windows-felhasználó- és jelszóértékekkel. Ezek a hitelesítő adatok csak kódban adhatók meg.
Az ügyfél hitelesítő adatainak beállításáról további információt az Ügyfél hitelesítő adatainak megadása című témakörben talál.
Megjegyzés
ClientCredentialType, amikor SecurityMode értéke "TransportWithMessageCredential"-re van állítva, a rendszer figyelmen kívül hagyja, ahogy azt az alábbi mintakonfiguráció mutatja.
<wsHttpBinding>
<binding name="PingBinding">
<security mode="TransportWithMessageCredential" >
<message clientCredentialType="UserName"
establishSecurityContext="false"
negotiateServiceCredential="false" />
<transport clientCredentialType="Certificate" />
</security>
</binding>
</wsHttpBinding>
Lásd még
- ClientCredentials
- ClientBase<TChannel>
- ClientCredentials
- HttpsGetEnabled
- HttpsGetUrl
- <Kötések>
- Konfigurációszerkesztő eszköz (SvcConfigEditor.exe)
- Szolgáltatások biztonságossá tétele
- Szolgáltatások elérése WCF-ügyféllel
- Útmutató: Ügyfél hitelesítő adatainak megadása
- ServiceModel Metadata Segédprogram (Svcutil.exe)
- Útmutató: Adja meg az ügyfél hitelesítő adatait