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


Ügyfelek védelme

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 metaadat-exchange (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 mindkét kódfájlt létrehozza egy ügyfélhez, 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 illetéktelenek legyenek. 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 tulajdonságokat és HttpsGetUrl a HttpsGetEnabled tulajdonságokat használja, a szolgáltatás létrehozója által megadott URL-cím használatával töltse le az adatokat a HTTPS protokoll használatával.

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:

  1. 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.

  2. 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 vagy <message> több <transport> elemet, vagy mindkettőt. A fontos elem az, amely megfelel a biztonsági módnak. Az alábbi kód például azt határozza meg, hogy a biztonsági mód, "Message"és az elem ügyfél-hitelesítő adatainak <message> típusa."Certificate" 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 SetCertificate metódus használatával).

Ha hozzáadja <az ügyfél konfigurációs> fájljának viselkedési szakaszát, és használja az clientCredentials elemet (alább látható).

Ügyfél-hitelesítő adatok> értékének <beállítása a Kódban

Az ügyfél hitelesítő adatainak> kódban való beállításához< hozzá kell férnie az ClientCredentials ClientBase<TChannel> osztály 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 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 Egy HttpDigestClientCredential HTTP-kivonat hitelesítő adatokat jelöl. A hitelesítő adat a felhasználónév és a jelszó kivonata.
IssuedToken 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 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 írásvédettek.

Ü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 az behaviorConfiguration<ügyfélelem> végpontjának> attribútumával<, ahogyan az az alábbi példában látható. Az attribútum értékének 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>

Feljegyzé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.

Feljegyzés

ClientCredentialType a rendszer figyelmen kívül hagyja, amikor SecurityMode az alábbi mintakonfigurációban látható módon van beállítva "TransportWithMessageCredential", .

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

Lásd még