Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A felderítési specifikáció nem követeli meg, hogy a felderítési folyamatban részt vevő végpontok biztonságosak legyenek. A felderítési üzenetek biztonságra való növelése csökkenti a különböző típusú támadásokat (üzenetmódosítás, szolgáltatásmegtagadás, visszajátszás, hamisítás).
A DiscoveryScenario minta olyan egyéni csatornákat implementál, amelyek kompakt aláírási formátummal (a WS-Discovery specifikáció 8.2. szakaszában leírtak szerint) számítják ki és ellenőrzik az üzenet-aláírásokat. A minta a 2005-ös felderítési specifikációt és az 1.1-es verziót is támogatja.
Az egyéni csatorna a felderítési és bejelentési végpontok meglévő csatornaverem tetejére van alkalmazva. Így minden elküldött üzenethez aláírásfejléc lesz alkalmazva. A rendszer ellenőrzi az aláírást a fogadott üzeneteken, és ha nem egyezik meg, vagy ha az üzenetek nem rendelkeznek aláírással, a rendszer elveti az üzeneteket. Az üzenetek aláírásához és ellenőrzéséhez a minta tanúsítványokat használ.
Megbeszélés
A WCF bővíthető, és lehetővé teszi a felhasználók számára a csatornák igény szerinti testreszabását. A minta egy biztonságos felderítési kötési elemet implementál, amely biztonságos csatornákat hoz létre. A biztonságos csatornák az üzenet-aláírásokat alkalmazzák és ellenőrzik, és az aktuális verem tetején vannak alkalmazva.
A biztonságos összekapcsolási elem biztonságos csatornagyárakat és csatornafigyelőket hoz létre.
Biztonságos csatorna előállító
A biztonságos csatorna-előállító kimeneti vagy kétoldalas csatornákat hoz létre, amelyek kompakt aláírást adnak hozzá az üzenetfejlécekhez. Az üzenetek lehető legkisebb méretben való megtartásához a kompakt aláírási formátumot használja a rendszer. A kompakt aláírás struktúrája az alábbi példában látható.
<d:Security ... >
[<d:Sig Scheme="xs:anyURI"
[KeyId="xs:base64Binary"]?
Refs="..."
[PrefixList]="xs:NMTOKENS"
Sig="xs:base64Binary"
... />]?
...
</d:Security>
Megjegyzés:
A PrefixList 2008-ban a Discovery verzióprotokollban lett hozzáadva.
Az aláírás kiszámításához a minta határozza meg a kibontott aláíráselemeket. Létrejön egy XML-aláírás (SignedInfo) a ds névtér előtagjának használatával, a WS-Discovery specifikációjának megfelelően. A felderítési és címzési névterek törzsére és összes fejlécére az aláírás hivatkozik, így nem módosíthatók. A rendszer az összes hivatkozott elemet az Exclusive Canonicalization (http://www.w3.org/2001/10/xml-exc-c14n#) eljárással alakítja át, majd kiszámítja az SHA-1 kivonat értéket (http://www.w3.org/2000/09/xmldsig#sha1). Az összes hivatkozott elem és azok kivonatolt értékei alapján a rendszer az RSA-algoritmus (http://www.w3.org/2000/09/xmldsig#rsa-sha1) használatával számítja ki az aláírási értéket.
Az üzenetek egy ügyfél által megadott tanúsítvánnyal vannak aláírva. A kötéselem létrehozásakor meg kell adni a tároló helyét, nevét és a tanúsítvány tulajdonosának nevét. A KeyId a kompakt aláírásban az aláíró token kulcsazonosítóját jelöli, és az aláíró token tárgykulcs-azonosítója (SKI), vagy (ha a SKI nem létezik) az aláíró token nyilvános kulcsának SHA-1 kivonata.
Biztonságos csatornafigyelő
A biztonságos csatornafigyelő bemeneti vagy kétoldalas csatornákat hoz létre, amelyek ellenőrzik a kompakt aláírást a fogadott üzenetekben. Az aláírás ellenőrzéséhez a rendszer az KeyId üzenethez csatolt kompakt aláírásban megadott módon választ ki egy tanúsítványt a megadott tárolóból. Ha az üzenet nem rendelkezik aláírással, vagy az aláírás ellenőrzése sikertelen, a rendszer elveti az üzeneteket. A biztonságos kötés használatához a példa meghatároz egy gyárat, amely egyéni UdpDiscoveryEndpoint és UdpAnnouncementEndpoint elemeket hoz létre a hozzáadott felderítési biztonságos kötési elemmel. Ezek a biztonságos végpontok a felderítési hirdetmények figyelőiben és a felderíthető szolgáltatásokban használhatók.
Minta részletei
A minta egy kódtárat és 4 konzolalkalmazást tartalmaz:
DiscoverySecurityChannels: A biztonságos kötést közzétesző kódtár. A kódtár kiszámítja és ellenőrzi a kimenő/bejövő üzenetek kompakt aláírását.
Szolgáltatás: Az ICalculatorService-szerződést kiosztó, saját üzemeltetésű szolgáltatás. A szolgáltatás felderíthetőként van megjelölve. A felhasználó megadja az üzenetek aláírásához használt tanúsítvány részleteit a tároló helyének és nevének, valamint a tanúsítvány tulajdonosának vagy egyéb egyedi azonosítójának, valamint az ügyféltanúsítványok tárolójának (a bejövő üzenetek aláírásának ellenőrzéséhez használt tanúsítványok) megadásával. Ezek alapján a rendszer létrehoz és használ egy UdpDiscoveryEndpointot hozzáadott biztonsággal.
Ügyfél: Ez az osztály megpróbál felderíteni egy ICalculatorService szolgáltatást, és metódusokat hívni a szolgáltatásban. Az üzenetek aláírásához és ellenőrzéséhez szintén létrejön egy UdpDiscoveryEndpoint hozzáadott biztonságú rendszer.
AnnouncementListener: Egy saját üzemeltetésű szolgáltatás, amely figyeli az online és offline bejelentéseket, és a biztonságos bejelentési végpontot használja.
Megjegyzés:
Ha Setup.bat többször fut, a tanúsítványkezelő megkéri, hogy válasszon egy hozzáadni kívánt tanúsítványt, mivel ismétlődő tanúsítványok találhatók. Ebben az esetben a Setup.bat-t meg kell szüntetni, és a Cleanup.bat-et meg kell hívni, mert az ismétlődések már létrejöttek. Cleanup.bat arra is kéri, hogy válasszon egy törölni kívánt tanúsítványt. Válasszon ki egy tanúsítványt a listából, és folytassa a Cleanup.bat végrehajtását, amíg nem maradnak tanúsítványok.
A minta használata
Hajtsa végre a Setup.bat szkriptet a Visual Studio fejlesztői parancssorából. A minta tanúsítványok használatával írja alá és ellenőrzi az üzeneteket. A szkript Makecert.exe használatával hozza létre a tanúsítványokat, majd telepíti őket Certmgr.exehasználatával. A szkriptet rendszergazdai jogosultságokkal kell futtatni.
A minta létrehozásához és futtatásához nyissa meg a Security.sln fájlt a Visual Studióban, és válassza az Összes újraépítése lehetőséget. Frissítse a megoldás tulajdonságait több projekt indításához: a DiscoverySecureChannels kivételével minden projektnél válassza a Start lehetőséget. Futtassa a megoldást normál módon.
Miután végzett a mintával, hajtsa végre a Cleanup.bat szkriptet, amely eltávolítja a mintához létrehozott tanúsítványokat.