Verkkopalvelun (WS) suojausopetus SOAP-esimerkillä

Sisällysluettelo:

Anonim

Mikä on WS Security?

WS Security on standardi, joka kiinnittää huomiota tietoturvaan, kun tietoja vaihdetaan osana verkkopalvelua.Tämä on SOAP: n avainominaisuus, joka tekee siitä erittäin suositun verkkopalvelujen luomisessa.

Turvallisuus on tärkeä ominaisuus kaikissa verkkosovelluksissa. Koska melkein kaikki verkkosovellukset ovat alttiina Internetille, verkkosovelluksille on aina olemassa turvallisuusuhan mahdollisuus. Siksi verkkopohjaisia ​​sovelluksia kehitettäessä on aina suositeltavaa varmistaa, että sovellus suunnitellaan ja kehitetään turvallisuutta silmällä pitäen.

Tässä opetusohjelmassa opit-

  • Turvallisuusuhat ja vastatoimet
  • Verkkopalvelun suojausstandardit
  • Kuinka rakentaa suojattuja verkkopalveluja
  • Verkkopalvelun tietoturvan parhaat käytännöt

Turvallisuusuhat ja vastatoimet

Ymmärtääksemme tietoturvauhat, jotka voivat olla vihamielisiä verkkosovelluksille, tarkastellaan yksinkertaista skenaariota verkkosovelluksesta ja katsotaan, miten se toimii suojauksen kannalta.

Yksi HTTP: n käytettävissä olevista turvatoimista on HTTPS-protokolla. HTTPS on turvallinen tapa kommunikoida asiakkaan ja palvelimen välillä verkon kautta. HTTPS käyttää Secure Sockets -kerrosta tai SSL: ää turvalliseen viestintään. Sekä asiakkaalla että palvelimella on digitaalinen varmenne tunnistamaan itsensä aidoiksi, kun asiakkaan ja palvelimen välillä tapahtuu viestintää.

Asiakkaan ja palvelimen välisessä tavallisessa HTTPS-viestinnässä suoritetaan seuraavat vaiheet

  1. Asiakas lähettää pyynnön palvelimelle asiakasvarmenteen kautta. Kun palvelin näkee asiakassertifikaatin, se tekee muistiinpanon välimuistijärjestelmäänsä niin, että se tietää vastauksen palaavan vain tälle asiakkaalle.
  2. Palvelin todentaa itsensä asiakkaalle lähettämällä varmenteen. Tämä varmistaa, että asiakas on yhteydessä oikeaan palvelimeen.
  3. Kaikki tämän jälkeen tiedonsiirto asiakkaan ja palvelimen välillä on salattu. Tämä varmistaa, että jos muut käyttäjät yrittävät rikkoa tietoturvan ja saada tarvittavat tiedot, he eivät pystyisi lukemaan sitä, koska se olisi salattu.

Edellä mainittu tietoturvatyyppi ei kuitenkaan toimi kaikissa tilanteissa. Voi tulla aika, jolloin asiakas voi puhua useiden palvelimien kanssa. Alla annettu esimerkki osoittaa asiakkaan puhuvan sekä tietokannan että verkkopalvelimen kanssa kerrallaan. Tällaisissa tapauksissa kaikki tiedot eivät voi kulkea https-protokollan kautta.

Täällä SOAP ryhtyy toimiin voittamaan tällaiset esteet ottamalla WS Security -määrityksen käyttöön. Tämän määrityksen mukaan kaikki turvallisuuteen liittyvät tiedot määritellään SOAP-otsikkoelementissä.

Otsikkoelementti voi sisältää alla mainitut tiedot

  1. Jos SOAP-rungossa oleva viesti on allekirjoitettu millä tahansa suojausavaimella, avain voidaan määrittää otsikkoelementissä.
  2. Jos jokin SOAP Body -elementti on salattu, otsikko sisältää tarvittavat salausavaimet, jotta viesti voidaan purkaa, kun se saavuttaa määränpään.

Useissa palvelinympäristöissä yllä oleva SOAP-todennuksen tekniikka auttaa seuraavalla tavalla.

  • Koska SOAP-runko on salattu, sen voi purkaa vain verkkopalvelin, joka isännöi verkkopalvelua. Tämä johtuu siitä, miten SOAP-protokolla on suunniteltu.
  • Oletetaan, että jos viesti välitetään tietokantapalvelimelle HTTP-pyynnössä, sitä ei voida purkaa, koska tietokannalla ei ole oikeita mekanismeja tehdä niin.
  • Vasta kun pyyntö todella saapuu Web-palvelimeen SOAP-protokollana, se pystyy salaamaan viestin ja lähettämään sopivan vastauksen takaisin asiakkaalle.

Näemme seuraavissa aiheissa, kuinka WS Security -standardia voidaan käyttää SOAP: lle.

Verkkopalvelun suojausstandardit

Kuten edellisessä osassa keskusteltiin, WS-Security-standardi pyörii sen suhteen, että turvallisuusmääritys sisältyy SOAP-otsikkoon.

SOAP-otsikon tunnistetietoja hallitaan kahdella tavalla.

Ensinnäkin se määrittelee erityisen elementin nimeltä UserToken. Tätä käytetään välittämään käyttäjänimi ja salasana verkkopalvelulle.

Toinen tapa on käyttää binaaritunnusta BinarySecurityTokenin kautta. Tätä käytetään tilanteissa, joissa käytetään salausmenetelmiä, kuten Kerberos tai X.509.

Alla olevassa kaaviossa näkyy, kuinka suojausmalli toimii WS Securityssä

Alla on vaiheet, jotka tapahtuvat yllä olevassa työnkulussa

  1. Verkkopalveluasiakkaalta voidaan lähettää pyyntö Security Token Service -palveluun. Tämä palvelu voi olla välipohjainen verkkopalvelu, joka on erityisesti rakennettu toimittamaan käyttäjänimiä / salasanoja tai varmenteita todelliselle SOAP-verkkopalvelulle.
  2. Suojaustunnus välitetään sitten verkkopalveluasiakkaalle.
  3. Verkkopalveluasiakas soitti sitten verkkopalveluun, mutta tällä kertaa varmistaen, että suojaustunnus on upotettu SOAP-viestiin.
  4. Verkkopalvelu ymmärtää sitten SOAP-viestin todennustunnuksella ja voi sitten ottaa yhteyttä suojaustunnuspalveluun ja tarkistaa, onko suojaustunnus aito vai ei.

Seuraava katkelma näyttää todennusosan muodon, joka on osa WSDL-asiakirjaa. Nyt alla olevan katkelman perusteella SOAP-viesti sisältää 2 lisäelementtiä, joista toinen on käyttäjätunnus ja toinen salasana.

Kun SOAP-viesti todella välitetään asiakkaiden ja palvelimen välillä, viestin osa, joka sisältää käyttäjän tunnistetiedot, voi näyttää edellä esitetyltä. Wsse-elementin nimi on erityinen elementti, joka on määritelty SOAP: lle ja tarkoittaa, että se sisältää tietoturvaan perustuvia tietoja.

Kuinka rakentaa suojattuja verkkopalveluja

Katsotaan nyt esimerkkiä SOAP-verkkopalvelun suojauksesta. Rakennamme verkkopalveluturvallisuuden aiemmin SOAP-luvussa esitetyn esimerkin perusteella ja lisäämme siihen suojaustason.

Esimerkissämme aiomme luoda yksinkertaisen verkkopalvelun, jota käytetään palauttamaan merkkijono sovellukselle, joka kutsuu verkkopalvelua. Mutta tällä kertaa, kun verkkopalvelua käytetään, tunnistetiedot on toimitettava soittavalle palvelulle. Noudatetaan seuraavia vaiheita luodaksemme SOAP-verkkopalvelumme ja lisäämällä siihen turvallisuusmäärittely.

Vaihe 1) Ensimmäinen vaihe on luoda tyhjä Asp.Net-verkkosovellus. Napsauta Visual Studio 2013: ssä valikkovaihtoehtoa Tiedosto-> Uusi projekti.

Kun napsautat Uusi projekti -vaihtoehtoa, Visual Studio antaa sinulle uuden valintaikkunan projektityypin valitsemiseksi ja tarvittavien yksityiskohtien antamiseksi projektista. Tämä selitetään seuraavassa vaiheessa

Vaihe 2) Tässä vaiheessa

  1. Varmista, että valitset ensin C # -verkkomallin ASP.NET-verkkosovellukselle. Projektin on oltava tämän tyyppinen verkkopalveluprojektin luomiseksi. Valitsemalla tämän vaihtoehdon Visual Studio suorittaa tarvittavat vaiheet lisätäksesi tarvittavat tiedostot, joita kaikki verkkopohjaiset sovellukset edellyttävät.
  2. Anna projektillesi nimi, joka on tapauksessamme annettu nimellä " webservice.asmx ". Varmista sitten, että annat sijainnin, johon projektitiedostot tallennetaan.

Kun olet valmis, näet projektitiedoston, joka on luotu Visual Studio 2013: n ratkaisuohjelmaasi.

Vaihe 3) Tässä vaiheessa

Aiomme lisätä verkkopalvelutiedoston projektiimme

  1. Ensin napsauta hiiren kakkospainikkeella projektitiedostoa alla olevan kuvan mukaisesti
  1. Kun napsautat hiiren kakkospainikkeella projektitiedostoa, sinulla on mahdollisuus valita vaihtoehto "Lisää-> verkkopalvelu (ASMX) lisätäksesi verkkopalvelutiedoston. Anna verkkopalvelun nimitiedostolle vain Tutorial Service -nimi.

Yllä oleva vaihe kehottaa valitsemaan valintaikkunan, jossa voidaan syöttää verkkopalvelutiedoston nimi. Syötä siis alla olevaan valintaikkunaan TutorialService-nimi tiedostonimeksi.

Vaihe 4) Lisää seuraava koodi Opetuspalvelun asmx-tiedostoon. Alla olevaa koodinpätkää käytetään lisäämään mukautettu luokka, jota käytetään muuttamaan SOAP-otsikkoa, kun SOAP-viesti luodaan. Koska haluamme nyt lisätä suojaustiedot SOAP-otsikkoon, tämä vaihe vaaditaan.

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

Koodin selitys: -

  1. Luomme nyt erillisen luokan AuthHeader, joka on tyyppiä SoapHeader . Aina kun haluat muuttaa mitä SOAP-otsikossa välitetään, on luotava luokka, joka käyttää sisäänrakennettua SoPHeader-luokkaa .Net. Mukauttamalla SOAPheaderia meillä on nyt mahdollisuus välittää käyttäjätunnus ja salasana, kun verkkopalvelua kutsutaan.
  2. Sitten määritellään muuttujat 'UserName' ja 'Password', jotka ovat tyypin merkkijonoja. Niitä käytetään verkkopalvelulle välitettävän käyttäjänimen ja salasanan arvojen säilyttämiseen.

Vaihe 5) Seuraavana vaiheena seuraava koodi on lisättävä samaan TutorialService.asmx-tiedostoon . Tämä koodi määrittää itse asiassa verkkopalvelumme toiminnan. Tämä toiminto palauttaa merkkijonon "Tämä on Guru99-verkkopalvelu" asiakkaalle. Mutta tällä kertaa merkkijono palautetaan vain, jos asiakasohjelma välittää tunnistetiedot verkkopalvelulle.

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";}

Koodin selitys: -

  1. Tässä luomme AuthHeader-luokan objektin, joka luotiin edellisessä vaiheessa. Tämä objekti välitetään Guru99Webservice-palveluumme , jossa käyttäjätunnusta ja salasanaa voidaan tutkia tarkasti.
  2. [SoapHeader] -attribuuttia käytetään nyt määrittämään, että kun verkkopalvelua kutsutaan, sillä on oltava käyttäjänimi ja salasana.
  3. Tässä koodilohkossa tarkastelemme itse asiassa käyttäjänimeä ja salasanaa, jotka on annettu verkkopalvelua soitettaessa. Jos käyttäjätunnus on yhtä suuri kuin "Guru99" ja salasana on sama kuin "Guru99Password", niin viesti "Tämä on Guru99-verkkopalvelu" välitetään asiakkaalle. Muuten virhe lähetetään asiakkaalle, jos väärä käyttäjätunnus ja salasana välitetään.

Jos koodi suoritetaan onnistuneesti, seuraava tulos näkyy, kun suoritat koodin selaimessa.

Tuotos:

Yllä oleva lähtö näkyy, kun ohjelma suoritetaan, mikä tarkoittaa, että verkkopalvelu on nyt käytettävissä. Napsautetaan Palvelun kuvaus -linkkiä.

Palvelun kuvauksesta näet nyt, että käyttäjänimi ja salasana ovat WSDL-tiedoston elementtejä. Nämä parametrit on lähetettävä, kun verkkopalvelua käytetään.

Verkkopalvelun tietoturvan parhaat käytännöt

Seuraavassa on turvallisuusnäkökohdat, jotka on otettava huomioon työskenneltäessä verkkopalveluiden kanssa

  1. Tarkastus ja lokin hallinta - Käytä sovellusten kirjaamista kaikkien verkkopalveluihin liittyvien pyyntöjen kirjaamiseen. Tämä antaa yksityiskohtaisen raportin siitä, kuka on käyttänyt verkkopalvelua, ja voi auttaa vaikutusten analysoinnissa, jos tietoturvaloukkauksia tapahtuu.

  2. Puhelujen kulku verkkopalveluun - Yritä huomioida puheluiden kulku verkkopalveluissa. Oletusarvoisesti sovellus voi soittaa useille verkkopalvelupyynnöille näiden verkkopalvelujen välillä välitetyillä todennustunnuksilla. Kaikkia verkkopalvelujen välisiä puheluita on seurattava ja kirjattava.

  3. Arkaluonteiset tiedot - Älä sisällytä lokimerkintöihisi arkaluontoisia tietoja, kuten salasanoja tai luottokorttinumeroita tai muita luottamuksellisia tietoja. Jos on tapahtuma, jolla on jokin näistä tiedoista, se on hylättävä ennen kirjautumista.

  4. Seuraa liiketoimintaa - Seuraa merkittäviä liiketoimintoja. Instrumentoi sovelluksesi esimerkiksi tallentamaan pääsy erityisen arkaluontoisiin menetelmiin ja liiketoimintalogiikkaan. Otetaan esimerkki verkkokauppasovelluksesta. Tyypillisessä sovelluksessa on useita vaiheita, kuten ostettavien tuotteiden valinta, ostoskoriin ladatut tuotteet ja lopullinen osto. Verkkopalvelun on seurattava koko liiketoiminnan työnkulkua.

  5. Oikea todennus - Todennus on mekanismi, jolla asiakkaat voivat vahvistaa henkilöllisyytensä verkkopalveluun käyttämällä tiettyjä tunnistetietoja, jotka voivat todistaa kyseisen henkilöllisyyden. Käyttäjän tunnistetietoja ei pitäisi koskaan tallentaa, joten jos WS Security -palvelua käytetään verkkopalvelun soittamiseen, on huomattava, että verkkopalvelun ei pitäisi tallentaa SOAP-otsikkoon lähetettyjä tunnistetietoja. Verkkopalvelun tulisi heittää ne pois.

Yhteenveto

  • SOAP tarjoaa lisäkerroksen nimeltä WS Security, joka tarjoaa lisäturvaa, kun soitetaan verkkopalveluihin.
  • WS Security voidaan kutsua yksinkertaisella käyttäjätunnuksella tai salasanalla tai sitä voidaan käyttää binaaristen varmenteiden kanssa todennukseen
  • Olemme havainneet, että .Netissä voimme mukauttaa verkkopalvelua siten, että käyttäjänimi ja salasana välitetään osana SOAP-otsikkoelementtiä.