Web Service(WS) Security Tutorial SOAP-esimerkillä

Mikä on WS Security?

WS Security on standardi, joka käsittelee tietoturvaa, kun tietoja vaihdetaan osana verkkopalvelua. Tämä on SOAPin keskeinen ominaisuus, joka tekee siitä erittäin suositun verkkopalveluiden luomisessa.

Suojaus on tärkeä ominaisuus missä tahansa verkkosovelluksessa. Koska lähes kaikki verkkosovellukset ovat alttiina Internetiin, verkkosovelluksille on aina olemassa turvallisuusuhka. Tästä syystä verkkopohjaisia ​​sovelluksia kehitettäessä on aina suositeltavaa varmistaa, että sovellus on suunniteltu ja kehitetty turvallisuutta ajatellen.

Turvallisuusuhat ja vastatoimet

Ymmärtääksemme tietoturvauhkia, jotka voivat olla vihamielisiä verkkosovellukselle, katsotaanpa yksinkertaista verkkosovelluksen skenaariota ja katsotaan kuinka se toimii turvallisuuden kannalta.

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

Turvallisuusuhat ja vastatoimet

Normaalissa HTTPS-viestinnässä asiakkaan ja palvelimen välillä tapahtuu seuraavat vaiheet

  1. Asiakas lähettää pyynnön palvelimelle asiakasvarmenteen kautta. Kun palvelin näkee asiakasvarmenteen, se tekee merkinnän välimuistijärjestelmäänsä, jotta se tietää, että vastauksen pitäisi palata vain tälle asiakkaalle.
  2. Tämän jälkeen palvelin todentaa itsensä asiakkaalle lähettämällä varmenteensa. Tämä varmistaa, että asiakas kommunikoi oikean palvelimen kanssa.
  3. Kaikki viestintä sen jälkeen asiakkaan ja palvelimen välillä on salattua. Tämä varmistaa, että jos muut käyttäjät yrittävät rikkoa suojauksen ja saada tarvittavat tiedot, he eivät voi lukea niitä, koska ne olisivat salattuja.

Mutta yllä oleva suojaustyyppi ei toimi kaikissa tilanteissa. Saattaa tulla aika, jolloin asiakas voi puhua useiden palvelimien kanssa. Alla olevassa esimerkissä asiakas puhuu sekä tietokannan että verkkopalvelimen kanssa kerrallaan. Tällaisissa tapauksissa kaikki tiedot eivät voi kulkea https-protokollan läpi.

Turvallisuusuhat ja vastatoimet

Tässä SOAP ryhtyy toimiin voittaakseen tällaiset esteet käyttämällä WS Security -spesifikaatiota. 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-tekstin sisällä oleva viesti on allekirjoitettu millä tahansa suojausavaimella, tämä avain voidaan määrittää otsikkoelementissä.
  2. Jos jokin SOAP-rungon elementti on salattu, otsikko sisältää tarvittavat salausavaimet, jotta viestin salaus voidaan purkaa, kun se saavuttaa määränpään.

Usean palvelimen ympäristöissä yllä oleva SOAP-todennustekniikka auttaa seuraavalla tavalla.

  • Koska SOAP-runko on salattu, vain verkkopalvelua isännöivä verkkopalvelin voi purkaa sen salauksen. Tämä johtuu siitä, miten SOAP-protokolla on suunniteltu.
  • Oletetaan, että jos viesti välitetään tietokantapalvelimelle HTTP-pyynnössä, sen salausta ei voida purkaa, koska tietokannassa ei ole oikeita mekanismeja siihen.
  • Vasta kun pyyntö todella saavuttaa Web-palvelimen SOAP-protokollana, se pystyy purkamaan viestin ja lähettämään asianmukaisen vastauksen takaisin asiakkaalle.

Näemme seuraavissa aiheissa, miten WS Security -standardia voidaan käyttää SAIPPUA.

Verkkopalvelun suojausstandardit

Kuten aikaisemmassa osiossa mainittiin, WS-Security-standardi perustuu siihen, että suojausmääritelmä sisällytetään SOAP-otsikkoon.

SOAP-otsikon valtuustietoja hallitaan kahdella tavalla.

Ensinnäkin se määrittelee erityisen elementin nimeltä UsernameToken. Tätä käytetään käyttäjätunnuksen ja salasanan välittämiseen verkkopalveluun.

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

Alla oleva kaavio näyttää, miten suojausmalli toimii WS Securityssa

Verkkopalvelun suojausstandardit

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

  1. Pyyntö voidaan lähettää verkkopalveluasiakkaalta Security Token Servicelle. Tämä palvelu voi olla välivaiheen verkkopalvelu, joka on erityisesti rakennettu antamaan käyttäjätunnukset/salasanat tai varmenteet varsinaiselle SOAP-verkkopalvelulle.
  2. Suojaustunnus välitetään sitten verkkopalveluasiakkaalle.
  3. Web-palvelun asiakas soitti sitten verkkopalveluun, mutta tällä kertaa varmistaen, että suojaustunnus on upotettu SOAP-viestiin.
  4. Tämän jälkeen verkkopalvelu ymmärtää SOAP-sanoman todennustunnisteella ja voi sitten ottaa yhteyttä Security Token -palveluun tarkistaakseen, onko suojaustunnus aito vai ei.

Alla oleva katkelma näyttää WSDL-asiakirjaan kuuluvan todennusosan muodon. Nyt alla olevan katkelman perusteella SOAP-viesti sisältää 2 lisäelementtiä, joista toinen on käyttäjätunnus ja toinen salasana.

<xs:element name="UsernameToken">  
	<xs:complexType>       
		<xs:sequence>           
			<xs:element ref="Username"/>         
			<xs:element ref="Password" minOccurs="0"/>        
		</xs:sequence>       
	<xs:attribute name="Id" type="xs:ID"/>    
</xs:complexType></xs:element>

Kun SOAP-sanoma todella välitetään asiakkaiden ja palvelimen välillä, viestin osa, joka sisältää käyttäjän tunnistetiedot, saattaa näyttää yllä esitetyltä. wsse-elementin nimi on SOAP:lle määritetty erikoiselementti, joka tarkoittaa, että se sisältää tietoturvaan perustuvia tietoja.

Kuinka rakentaa suojattuja verkkopalveluita

Katsotaanpa nyt SOAP-verkkopalvelun tietoturvaesimerkkiä. Rakennamme verkkopalvelun tietoturvan aiemmin SOAP-luvussa esitetyn esimerkin pohjalta ja lisäämme siihen tietoturvakerroksen.

Esimerkissämme aiomme luoda yksinkertaisen verkkopalvelun, jota käytetään palauttamaan merkkijono verkkopalvelua kutsuvalle sovellukselle. Mutta tällä kertaa, kun verkkopalvelua vedetään, valtuustiedot on toimitettava soittavalle palvelulle. Noudatetaan alla olevia ohjeita luodaksesi SOAP-verkkopalvelumme ja lisätäksesi siihen suojausmäärityksen.

Vaihe 1) Ensimmäinen askel on luoda tyhjä Asp.Net Web-sovellus. Napsauta Visual Studio 2013:ssa valikkovaihtoehtoa Tiedosto-> Uusi projekti.

Luo suojattuja verkkopalveluita

Kun napsautat Uusi projekti -vaihtoehtoa, Visual Studio antaa sinulle toisen valintaikkunan, jossa voit valita projektin tyypin ja antaa tarvittavat tiedot projektista. Tämä selitetään seuraavassa vaiheessa

Vaihe 2) Tässä vaiheessa

  1. Varmista, että valitset ensin C# Web-malli ASP.NET-verkkosovellukselle. Projektin on oltava tämän tyyppinen, jotta voidaan luoda verkkopalveluprojekti. Valitsemalla tämän vaihtoehdon Visual Studio suorittaa sitten tarvittavat vaiheet minkä tahansa verkkopohjaisen sovelluksen vaatimien tiedostojen lisäämiseksi.
  2. Anna projektillesi nimi, joka meidän tapauksessamme on annettu "webservice.asmx.” Varmista sitten, että annat paikka, johon projektitiedostot tallennetaan.

Luo suojattuja verkkopalveluita

Kun olet valmis, näet Visual Studio 2013:n Solution Explorerissa luodun projektitiedoston.

Luo suojattuja verkkopalveluita

Vaihe 3) Tässä vaiheessa

Aiomme lisätä verkkopalvelutiedoston projektiimme

  1. Napsauta ensin hiiren kakkospainikkeella projektitiedostoa alla olevan kuvan mukaisesti

Luo suojattuja verkkopalveluita

  1. Kun napsautat projektitiedostoa hiiren kakkospainikkeella, voit valita vaihtoehdon "Lisää-> Verkkopalvelu (ASMX) lisätäksesi verkkopalvelutiedoston. Anna verkkopalvelun nimitiedostolle Tutorial Servicen nimi.

    Luo suojattuja verkkopalveluita

Yllä oleva vaihe avaa valintaikkunan, johon voidaan syöttää verkkopalvelutiedoston nimi. Joten kirjoita alla olevaan valintaikkunaan tiedostonimeksi TutorialServicen nimi.

Luo suojattuja verkkopalveluita

Vaihe 4) Lisää seuraava koodi Tutorial Service asmx-tiedostoosi. 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ä suojaustunnukset SOAP-otsikkoon, tämä vaihe on pakollinen.

Luo suojattuja verkkopalveluita

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

	}
}

Koodin selitys: -

  1. Luomme nyt erillistä luokkaa nimeltä AuthHeader joka on tyyppiä SoapHeader-luokka. Aina kun haluat muuttaa sitä, mitä SOAP-otsikossa välitetään, on luotava luokka, joka käyttää sisäänrakennettua .Netin SoapHeader-luokkaa. Räätälöimällä SOAP-otsikkoa voimme nyt antaa käyttäjätunnuksen ja salasanan, kun verkkopalvelua kutsutaan.
  2. Määrittelemme sitten muuttujat 'UserName' ja 'Password', jotka ovat tyyppiä merkkijono. Niissä säilytetään verkkopalvelulle välitetyt käyttäjätunnuksen ja salasanan arvot.

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

Luo suojattuja verkkopalveluita

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);
		}
		eise
		return "This is a Guru99 Web service";
	}

Koodin selitys: -

  1. Täällä luomme AuthHeader-luokan objektia, joka luotiin aikaisemmassa vaiheessa. Tämä kohde luovutetaan meille Guru99verkkopalvelu jossa käyttäjätunnus ja salasana voidaan tutkia tarkasti.
  2. [SoapHeader]-attribuuttia käytetään nyt määrittämään, että kun verkkopalvelua kutsutaan, sen on välitettävä käyttäjänimi ja salasana.
  3. Tässä koodilohkossa tutkimme itse asiassa verkkopalvelua kutsuttaessa annettua käyttäjätunnusta ja salasanaa. Jos käyttäjätunnus on sama kuin "Guru99" ja salasana on sama kuin "Guru99Password", viesti "Tämä on Guru99-verkkopalvelu" välitetään asiakkaalle. Muussa tapauksessa asiakkaalle lähetetään virheilmoitus, jos väärä käyttäjätunnus ja salasana välitetään.

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

lähtö:

Luo suojattuja verkkopalveluita

Yllä oleva tulos näytetään, kun ohjelma ajetaan, mikä tarkoittaa, että verkkopalvelu on nyt saatavilla. Napsautamme Palvelua Descriptioni linkki.

Luo suojattuja verkkopalveluita

Palvelukuvauksesta näet nyt, että käyttäjätunnus ja salasana ovat osa palvelua wsdl tiedosto. Nämä parametrit on lähetettävä, kun verkkopalvelua kutsutaan.

Verkkopalvelun suojauksen parhaat käytännöt

Seuraavassa on turvallisuusnäkökohdat, jotka tulee huomioida Web-palveluita käytettäessä

1. Tarkastus ja lokinhallinta – Käytä sovellusten kirjaamista kirjataksesi kaikki verkkopalveluihin tulevat pyynnöt. Tämä antaa yksityiskohtaisen raportin siitä, kuka on käyttänyt verkkopalvelua, ja voi auttaa vaikutusten analysoinnissa, jos tietoturvaloukkauksia tapahtuu.

2. Puhelut verkkopalveluun – Yritä huomioida puhelujen kulku verkkopalveluissa. Oletuksena sovellus voi kutsua useita verkkopalvelupyyntöjä näiden verkkopalvelujen välillä välitetyillä todennustunnuksilla. Kaikkia verkkopalveluiden välisiä puheluita on seurattava ja kirjattava.

3. Arkaluonteiset tiedot – Älä sisällytä lokimerkintöihisi arkaluonteisia tietoja, kuten salasanoja tai luottokorttien numeroita tai muita luottamuksellisia tietoja. Jos jokin tapahtuma sisältää jotain näistä tiedoista, se on hylättävä ennen kirjaamista.

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

5. Oikea todennus – Todennus on mekanismi, jolla asiakkaat voivat vahvistaa identiteettinsä verkkopalvelussa käyttämällä tiettyä tunnistesarjaa, joka voi todistaa henkilöllisyyden. Käyttäjätunnuksia ei pidä koskaan tallentaa, ja siksi, jos WS Securityä käytetään verkkopalvelun soittamiseen, on huomioitava, että verkkopalvelu ei saa tallentaa SOAP-otsikossa lähetettäviä tunnistetietoja. Verkkopalvelun tulee hävittää ne.

Yhteenveto

  • SOAP tarjoaa ylimääräisen kerroksen, nimeltään WS Security, joka tarjoaa lisäsuojausta, kun verkkopalveluihin soitetaan.
  • WS Security voidaan kutsua yksinkertaisella käyttäjätunnuksella tai salasanalla tai sitä voidaan käyttää binäärivarmenteilla todennusta varten
  • Olemme nähneet sen sisällä . Net voimme mukauttaa verkkopalvelun siten, että käyttäjätunnus ja salasana välitetään osana SOAP-otsikkoelementtiä.