Web Service (WS) biztonsági bemutató SOAP példával

Tartalomjegyzék:

Anonim

Mi a WS Security?

A WS Security egy olyan szabvány, amely a biztonságra törekszik, amikor az adatokat egy webszolgáltatás részeként cserélik. Ez a SOAP kulcsfontosságú jellemzője, amely nagyon népszerűvé teszi a webszolgáltatások létrehozását.

A biztonság minden webalkalmazás fontos jellemzője. Mivel szinte az összes webalkalmazás ki van téve az internetnek, mindig fennáll annak a veszélye, hogy biztonsági fenyegetést jelent a webalkalmazásokra. Ezért a webalapú alkalmazások fejlesztésekor mindig ajánlott biztosítani, hogy az alkalmazásokat a biztonságot szem előtt tartva tervezzék és fejlesszék.

Ebben az oktatóanyagban megtanulja-

  • Biztonsági fenyegetések és ellenintézkedések
  • Webszolgáltatás biztonsági szabványai
  • Hogyan lehet biztonságos webszolgáltatásokat felépíteni
  • Webszolgáltatás biztonsági bevált gyakorlatok

Biztonsági fenyegetések és ellenintézkedések

A webalkalmazásokkal szemben ellenségesnek tűnő biztonsági fenyegetések megértéséhez nézzük meg a webalkalmazás egyszerű forgatókönyvét, és nézzük meg, hogyan működik a biztonság szempontjából.

A HTTP számára elérhető egyik biztonsági intézkedés a HTTPS protokoll. A HTTPS a kliens és a kiszolgáló közötti biztonságos kommunikáció az interneten keresztül. A HTTPS a Secure Sockets réteget vagy az SSL-t használja a biztonságos kommunikációhoz. Mind az ügyfélnek, mind a szervernek lesz egy digitális tanúsítványa, amely igazolja magukat valódinak, ha bármilyen kommunikáció történik az ügyfél és a szerver között.

Az ügyfél és a kiszolgáló közötti szokásos HTTPS-kommunikáció során a következő lépéseket kell végrehajtani

  1. Az ügyfél kérelmet küld a szervernek az ügyféltanúsítványon keresztül. Amikor a kiszolgáló meglátja az ügyféltanúsítványt, megjegyzést tesz a gyorsítótár-rendszerében, hogy tudja, hogy a válasznak csak ehhez az ügyfélhez kell visszatérnie.
  2. A szerver ezután a tanúsítvány elküldésével hitelesíti magát az ügyfél számára. Ez biztosítja, hogy az ügyfél a megfelelő szerverrel kommunikáljon.
  3. Ezt követően az ügyfél és a szerver közötti minden kommunikáció titkosítva van. Ez biztosítja, hogy ha más felhasználók megpróbálják feltörni a biztonságot és megszerezni a szükséges adatokat, akkor nem tudják elolvasni, mert titkosítva vannak.

De a fenti típusú biztonság nem minden helyzetben működik. Eljöhet az idő, amikor az ügyfél több szerverrel is beszélhet. Az alábbiakban bemutatott példa azt mutatja, hogy az ügyfél egyszerre beszél mind adatbázissal, mind webkiszolgálóval. Ilyen esetekben nem minden információ juthat át a https protokollon.

Itt lép a SOAP az ilyen akadályok leküzdésére a WS Security specifikációjának érvénybe léptetésével. Ezzel a specifikációval az összes biztonsággal kapcsolatos adat a SOAP fejléc elemben kerül meghatározásra.

A fejléc elem tartalmazhatja az alább említett információkat

  1. Ha a SOAP törzsen belüli üzenetet bármilyen biztonsági kulccsal aláírták, akkor a kulcs meghatározható a fejléc elemben.
  2. Ha a SOAP Body bármely eleme titkosítva van, a fejléc tartalmazza a szükséges titkosítási kulcsokat, hogy az üzenet visszafejthető legyen, amikor eléri a célt.

Több kiszolgálós környezetben a SOAP-hitelesítés fenti technikája a következő módon segít.

  • Mivel a SOAP törzs titkosított, csak a webszolgáltatást üzemeltető webkiszolgáló tudja visszafejteni. Ennek oka a SOAP protokoll kialakítása.
  • Tegyük fel, hogy ha az üzenetet HTTP-kérésben továbbítják az adatbázis-kiszolgálónak, akkor azt nem lehet visszafejteni, mert az adatbázisnak nincs megfelelő mechanizmusa erre.
  • Csak akkor, amikor a kérés valóban eléri a webkiszolgálót SOAP protokollként, képes lesz megfejteni az üzenetet és visszaküldeni a megfelelő választ az ügyfélnek.

A következő témakörökben megnézzük, hogyan lehet a WS Security szabványt használni a SOAP-hoz.

Webszolgáltatás biztonsági szabványai

Amint azt a korábbi szakaszban kifejtettük, a WS-Security szabvány a SOAP fejlécben szereplő biztonsági definíció körül forog.

A SOAP fejléc hitelesítő adatait kétféleképpen kezelik.

Először meghatározza a UserToken nevű speciális elemet. Ezt a felhasználónév és jelszó átadására használják a webszolgáltatáshoz.

A másik módszer egy bináris token használata a BinarySecurityToken segítségével. Ezt olyan helyzetekben alkalmazzák, amikor olyan titkosítási technikákat használnak, mint a Kerberos vagy az X.509.

Az alábbi ábra bemutatja a biztonsági modell működésének folyamatát a WS Security rendszerben

Az alábbiakban bemutatjuk a fenti munkafolyamat lépéseit

  1. Kérelmet lehet küldeni a webszolgáltatás kliensétől a Security Token Service-hez. Ez a szolgáltatás lehet köztes webszolgáltatás, amelyet kifejezetten felhasználónév / jelszó vagy tanúsítvány szállítására fejlesztenek ki a tényleges SOAP webszolgáltatás számára.
  2. Ezután a biztonsági tokent továbbítja a webszolgáltatás kliensének.
  3. A webszolgáltatás kliens ekkor felhívta a webszolgáltatást, de ezúttal biztosítja, hogy a biztonsági token be legyen ágyazva a SOAP üzenetbe.
  4. Ezután a webszolgáltatás megérti a hitelesítési tokennel rendelkező SOAP-üzenetet, majd felveheti a kapcsolatot a Biztonsági Token szolgáltatással, hogy megnézze, hiteles-e a biztonsági token.

Az alábbi részlet mutatja a WSDL-dokumentum részét képező hitelesítési rész formátumát. Az alábbi részlet alapján a SOAP üzenet 2 további elemet tartalmaz, az egyik a Felhasználónév, a másik a Jelszó.

Amikor a SOAP üzenetet ténylegesen átadják az ügyfelek és a kiszolgáló között, az üzenetnek a felhasználói hitelesítő adatokat tartalmazó része a fentieknek tűnhet. Az wsse elem neve egy speciális elem, amelyet a SOAP-nak definiáltak, és azt jelenti, hogy biztonsági alapú információkat tartalmaz.

Hogyan lehet biztonságos webszolgáltatásokat felépíteni

Most nézzük meg a SOAP webszolgáltatás biztonsági példáját. A SOAP fejezetben korábban bemutatott példára építünk egy webszolgáltatás biztonságát, és hozzáadunk egy biztonsági réteget.

Példánkban egy egyszerű webszolgáltatást fogunk létrehozni, amelyet egy karakterlánc visszaadásához fogunk használni a webszolgáltatást hívó alkalmazáshoz. De ezúttal, amikor a webszolgáltatásra hivatkozunk, meg kell adni a hitelesítő adatokat a hívó szolgáltatásnak. Kövessük az alábbi lépéseket a SOAP webszolgáltatásunk létrehozásához és a biztonsági meghatározás hozzáadásához.

1. lépés: Az első lépés egy üres Asp.Net webalkalmazás létrehozása. A Visual Studio 2013 alkalmazásban kattintson a Fájl-> Új projekt menüpontra.

Miután rákattint az Új projekt opcióra, a Visual Studio megad egy újabb párbeszédpanelt a projekt típusának kiválasztásához és a projekt szükséges részleteinek megadásához. Ezt a következő lépésben magyarázzuk

2. lépés) Ebben a lépésben

  1. Először válassza ki az ASP.NET webalkalmazás C # websablonját. A projektnek ilyen típusúnak kell lennie a webszolgáltatási projekt létrehozásához. Ennek a lehetőségnek a kiválasztásával a Visual Studio elvégzi a szükséges lépéseket a szükséges fájlok hozzáadásához, amelyekre bármely webalapú alkalmazás szükséges.
  2. Adjon nevet a projektjének, amelyet esetünkben " webservice.asmx " néven kaptak . Ezután feltétlenül adjon meg egy helyet, ahol a projektfájlok tárolódnak.

Ha elkészült, látni fogja a Visual Studio 2013-ban a megoldásfelfedezőben létrehozott projektfájlt.

3. lépés) Ebben a lépésben

Webprojekt fájlt fogunk hozzáadni a projektünkhöz

  1. Először kattintson jobb gombbal a projektfájlra az alábbiak szerint
  1. Miután a jobb egérgombbal rákattint a projektfájlra, lehetősége van kiválasztani az "Add-> Web Service (ASMX)" lehetőséget egy webszolgáltatási fájl hozzáadásához. Csak adja meg a Tutorial Service nevet a webszolgáltatás névfájljához.

A fenti lépés felszólít egy párbeszédpanelt, ahol megadhatja a webszolgáltatás fájl nevét. Tehát az alábbi párbeszédpanelen adja meg a TutorialService nevet fájlnévként.

4. lépés: Adja hozzá a következő kódot az Oktatószolgáltatás asmx fájljához. Az alábbi kódrészlet egy olyan egyéni osztály hozzáadására szolgál, amely a SOAP fejléc megváltoztatására szolgál a SOAP üzenet létrehozásakor. Mivel most biztonsági hitelesítő adatokat akarunk hozzáadni a SOAP fejlécéhez, erre a lépésre van szükség.

return "This is a Guru99 Web Service";}public class AuthHeader : SoapHeader{public string UserName;public string Password;}}

Kód Magyarázat: -

  1. Most egy külön osztályt hozunk létre AuthHeader néven, amely SoapHeader típusú . Amikor módosítani szeretné, hogy mi kerül átadásra a SOAP fejlécben, létre kell hoznia egy osztályt, amely a beépített .Net SoapHeader osztályt használja. A SOAPheader testreszabásával mostantól képesek vagyunk átadni a "Felhasználónév" és a "Jelszó" nevet, amikor a webszolgáltatást hívják.
  2. Ezután meghatározzuk a 'UserName' és a 'Password' változókat, amelyek típusa string. Ezeket a felhasználónév és jelszó értékeinek tárolására használják, amelyeket a webszolgáltatáshoz továbbítanak.

5. lépés: Következő lépésként a következő kódot kell hozzáadni ugyanahhoz a TutorialService.asmx fájlhoz . Ez a kód tulajdonképpen meghatározza webszolgáltatásunk funkcióját. Ez a függvény egy "Ez egy Guru99 webszolgáltatás" karakterláncot ad vissza az ügyfélnek. De ezúttal a karakterlánc csak akkor kerül visszaadásra, ha az ügyfélalkalmazás átadja a hitelesítő adatokat a webszolgáltatásnak.

public class TutorialService : System.Web.Services.WebService{public AuthHeader Credentials;[SoapHeader("Credentials")][WebMethod]public string Guru99WebService(){if (Credentials.UserName.ToLower() != "Guru99" ||Credentials.Password.ToLower() != "Guru99Password"){throw new SoapException("Unauthorized",SoapException.ClientFaultCode);}eisereturn "This is a Guru99 Web service";}

Kód Magyarázat: -

  1. Itt hozzuk létre az AuthHeader osztály egy objektumát, amelyet a korábbi lépésben hoztunk létre. Ezt az objektumot továbbítjuk a Guru99Webszolgáltatásunknak , amelyben a felhasználónév és a jelszó alaposan megvizsgálható.
  2. A [SoapHeader] attribútumot most arra használjuk, hogy meghatározzuk, hogy a webszolgáltatás hívásakor át kell adnia a felhasználónevet és a jelszót.
  3. Ebben a kódblokkban valójában a webszolgáltatás hívásakor megadott felhasználói nevet és jelszót vizsgáljuk. Ha a felhasználónév megegyezik a "Guru99" -vel és a jelszó megegyezik a "Guru99Password" -vel, akkor az "Ez egy Guru99 webszolgáltatás" üzenetet továbbítja az ügyfélnek. Ha hibás felhasználói azonosítót és jelszót ad meg, hibát küldünk az ügyfélnek.

A kód sikeres végrehajtása esetén a következő kimenet jelenik meg, amikor a böngészőben futtatja a kódot.

Kimenet:

A fenti kimenet a program futtatásakor jelenik meg, ami azt jelenti, hogy a webszolgáltatás már elérhető. Kattintson a Szolgáltatás leírása linkre.

A szolgáltatás leírásából most láthatja, hogy a felhasználónév és a jelszó a WSDL fájl elemei. Ezeket a paramétereket el kell küldeni a webszolgáltatás meghívásakor.

Webszolgáltatás biztonsági bevált gyakorlatok

Az alábbiakban bemutatjuk azokat a biztonsági szempontokat, amelyeket figyelembe kell venni a webszolgáltatásokkal való munka során

  1. Naplózás és naplókezelés - Alkalmazásnaplózás segítségével naplózhatja az összes kérést, amely a webszolgáltatásokhoz érkezik. Ez részletes jelentést ad arról, hogy ki hivatkozott a webszolgáltatásra, és segíthet a hatáselemzésben, ha bármilyen biztonsági rés történik.

  2. Hívások áramlása a webszolgáltatáshoz - Próbálja meg figyelembe venni a hívások folyamatát a webszolgáltatásokban. Alapértelmezés szerint egy alkalmazás több webszolgáltatási kérelmet is felhívhat az e webszolgáltatások között átadott hitelesítési tokenekkel. A webszolgáltatások közötti összes hívást figyelemmel kell kísérni és naplózni kell.

  3. Érzékeny információk - Ne tartalmazzon bizalmas információkat a naplóbejegyzésekben, például jelszavakat vagy hitelkártyaszámokat, vagy bármilyen más bizalmas információt. Ha van olyan esemény, amely rendelkezik ezen információk bármelyikével, akkor a naplózás előtt el kell vetni.

  4. Üzleti műveletek nyomon követése - Jelentős üzleti műveletek nyomon követése. Például hangolja be az alkalmazását, hogy rögzítse a hozzáférést a különösen érzékeny módszerekhez és üzleti logikához. Vegyünk egy példát egy online vásárlási alkalmazásra. Egy tipikus alkalmazásban több lépés van, például a megvásárolni kívánt termékek kiválasztása, a kosárba helyezett elemek, majd a végső vásárlás. Ezt a teljes üzleti munkafolyamatot a webszolgáltatásnak kell követnie.

  5. Megfelelő hitelesítés - A hitelesítés az a mechanizmus, amellyel az ügyfelek bizonyos hitelesítő adatok felhasználásával megállapíthatják identitásukat a webszolgáltatással, amelyek igazolhatják ezt az identitást. Soha nem szabad tárolni a felhasználói hitelesítő adatokat, és ezért, ha a WS Security-t használják a webszolgáltatás hívására, meg kell jegyezni, hogy a webszolgáltatásnak nem szabad tárolnia a SOAP fejlécben elküldött hitelesítő adatokat. Ezeket a webszolgáltatásnak el kell dobnia.

Összegzés

  • A SOAP a WS Security néven egy további réteget biztosít, amely további biztonságot nyújt a webszolgáltatások hívásakor.
  • A WS Security meghívható egyszerű felhasználónévvel vagy jelszóval, vagy használható bináris tanúsítványokkal hitelesítéshez
  • Láttuk, hogy a .Net-ben testreszabhatjuk a webszolgáltatást úgy, hogy a felhasználónevet és jelszót a SOAP fejléc elem részeként adja át.