Водич за безбедност веб услуга (ВС) са примером СОАП

Преглед садржаја:

Anonim

Шта је ВС Сецурити?

ВС Сецурити је стандард који се односи на сигурност приликом размене података као дела веб услуге. Ово је кључна карактеристика СОАП-а која га чини веома популарним за стварање веб услуга.

Сигурност је важна карактеристика сваке веб апликације. Будући да су готово све веб апликације изложене Интернету, увек постоји шанса за безбедносну претњу веб апликацијама. Због тога се приликом развоја апликација заснованих на Интернету увек препоручује да се обезбеди да апликација буде дизајнирана и развијена имајући на уму сигурност.

У овом упутству ћете научити-

  • Безбедносне претње и противмере
  • Стандарди безбедности веб услуга
  • Како направити сигурне веб услуге
  • Најбоље праксе безбедности веб услуга

Безбедносне претње и противмере

Да бисмо разумели безбедносне претње које могу бити непријатељске према веб апликацији, погледајмо једноставан сценарио веб апликације и видећемо како она функционише у смислу безбедности.

Једна од безбедносних мера доступних за ХТТП је ХТТПС протокол. ХТТПС је сигуран начин комуникације између клијента и сервера путем Интернета. ХТТПС користи слој Сецуре Соцкетс или ССЛ за сигурну комуникацију. И клијент и сервер имаће дигитални сертификат да би се идентификовали као оригинални када дође до било какве комуникације између клијента и сервера.

У стандардној ХТТПС комуникацији између клијента и сервера одвијају се следећи кораци

  1. Клијент шаље захтев серверу преко сертификата клијента. Када сервер види клијентски сертификат, он бележи у свој систем кеш меморије, тако да зна да одговор треба да се врати само овом клијенту.
  2. Сервер се затим потврђује идентитет клијенту слањем свог сертификата. Ово осигурава да клијент комуницира са правим сервером.
  3. Сва комуникација након тога између клијента и сервера је шифрована. Ово осигурава да ако било који други корисник покуша да разбије безбедност и добије потребне податке, неће их моћи прочитати, јер ће бити шифрован.

Али горе наведена врста обезбеђења неће функционисати у свим ситуацијама. Може доћи тренутак када клијент може разговарати са више сервера. Пример дат у наставку приказује клијента који истовремено разговара и са базом података и са веб сервером. У таквим случајевима не могу све информације да прођу кроз хттпс протокол.

Овде СОАП ступа у акцију да би превазишао такве препреке постављањем ВС безбедносне спецификације. Овом спецификацијом сви подаци повезани са безбедношћу дефинирани су у елементу заглавља СОАП.

Елемент заглавља може садржати доле наведене информације

  1. Ако је порука унутар СОАП тела потписана било којим сигурносним кључем, тај кључ може бити дефинисан у елементу заглавља.
  2. Ако је било који елемент унутар СОАП тела шифрован, заглавље ће садржати потребне кључеве за шифровање, тако да се порука може дешифровати када стигне на одредиште.

У више серверских окружења, горе наведена техника СОАП аутентификације помаже на следећи начин.

  • Пошто је СОАП тело шифровано, дешифроват ће га само веб сервер који хостује веб услугу. То је због начина на који је дизајниран СОАП протокол.
  • Претпоставимо ако се порука проследи серверу базе података у ХТТП захтеву, не може се дешифровати јер база података нема праве механизме за то.
  • Тек када захтев заиста стигне на веб сервер као СОАП протокол, моћи ће да дешифрује поруку и клијенту пошаље одговарајући одговор.

У наредним темама видећемо како се стандард ВС Сецурити може користити за СОАП.

Стандарди безбедности веб услуга

Као што је дискутовано у претходном одељку, стандард ВС-Сецурити врти се око тога да сигурносна дефиниција буде укључена у СОАП заглавље.

Акредитивима у заглављу СОАП-а управља се на два начина.

Прво, дефинише посебан елемент који се зове УсернамеТокен. Ово се користи за прослеђивање корисничког имена и лозинке веб услузи.

Други начин је коришћење Бинарног жетона путем БинариСецуритиТокен-а. Ово се користи у ситуацијама у којима се користе технике шифровања као што су Керберос или Кс.509.

Дијаграм у наставку приказује ток рада сигурносног модела у ВС Сецурити

Испод су кораци који се одвијају у горе наведеном току рада

  1. Захтев се може послати од клијента веб услуге услузи Сецурити Токен Сервице. Ова услуга може бити посредна веб услуга која је посебно направљена за пружање корисничких имена / лозинки или сертификата стварној СОАП веб услузи.
  2. Сигурносни токен се затим прослеђује клијенту веб услуге.
  3. Клијент веб услуге је тада назвао веб услугу, али овог пута осигуравајући да је сигурносни токен уграђен у СОАП поруку.
  4. Веб услуга тада разуме СОАП поруку са токеном за потврду идентитета, а затим може контактирати услугу Сецурити Токен да види да ли је сигурносни токен аутентичан или није.

Исечак у наставку приказује формат дела за потврду идентитета који је део ВСДЛ документа. Сада на основу доњег исечка, СОАП порука ће садржати 2 додатна елемента, један је Корисничко име, а други Лозинка.

Када се СОАП порука стварно прослеђује између клијената и сервера, део поруке који садржи корисничке акредитиве могао би изгледати као онај приказан горе. Име елемента вссе је посебан елемент именован дефинисан за СОАП и значи да садржи информације засноване на безбедности.

Како направити сигурне веб услуге

Сада погледајмо пример безбедности СОАП веб услуга. Изградићемо сигурност веб услуге на примеру приказаном раније у поглављу СОАП и додаћемо јој заштитни слој.

У нашем примеру ћемо створити једноставну веб услугу која ће се користити за враћање низа у апликацију која позива веб услугу. Али овог пута, када се позове веб услуга, акредитиви морају бити достављени позивајућој служби. Слиједимо кораке у наставку да бисмо креирали нашу СОАП веб услугу и додали јој сигурносну дефиницију.

Корак 1) Први корак је стварање празне веб апликације Асп.Нет. У Висуал Студио 2013 кликните на опцију менија Датотека-> Нови пројекат.

Једном када кликнете на опцију Нови пројекат, Висуал Студио ће вам дати други дијалошки оквир за одабир врсте пројекта и давање потребних детаља о пројекту. Ово је објашњено у следећем кораку

Корак 2) У овом кораку,

  1. Уверите се да сте прво изабрали веб образац Ц # за веб апликацију АСП.НЕТ. Пројекат мора бити ове врсте да би се креирао пројекат веб услуга. Одабиром ове опције, Висуал Студио ће затим извршити неопходне кораке за додавање потребних датотека које су потребне било којој веб апликацији.
  2. Дајте име свом пројекту који је у нашем случају добио назив „ вебсервице.асмк. “ Затим обавезно наведите локацију на којој ће се датотеке пројекта чувати.

Када завршите, видећете датотеку пројекта створену у вашем истраживачу решења у Висуал Студио 2013.

Корак 3) У овом кораку,

У наш пројекат ћемо додати датотеку веб услуге

  1. Прво кликните десним тастером миша на датотеку пројекта као што је приказано испод
  1. Једном када десним тастером миша кликнете на датотеку пројекта, имаћете прилику да изаберете опцију „Додај-> Веб услуга (АСМКС) да бисте додали датотеку веб услуге. Само наведите име Туториал Сервице за датотеку имена веб услуге.

Горњи корак затражиће дијалошки оквир у који се може унети име датотеке веб услуге. Дакле, у доњи дијалошки оквир унесите име ТуториалСервице као име датотеке.

Корак 4) Додајте следећи код у своју асмк датотеку Туториал Сервице. Доле наведени исечак кода користи се за додавање прилагођене класе која ће се користити за промену заглавља СОАП-а када се генерише СОАП порука. Будући да сада желимо да додамо сигурносне акредитиве у заглавље СОАП-а, потребан је овај корак.

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

Објашњење кода: -

  1. Сада креирамо засебну класу која се зове АутхХеадер која је типа СоапХеадер . Кад год желите да промените оно што се прослеђује у заглављу СОАП, треба створити класу која користи уграђену класу СоапХеадер .Нет. Прилагођавањем СОАПхеадер-а, сада имамо могућност прослеђивања „корисничког имена“ и „лозинке“ када се позове веб услуга.
  2. Затим дефинишемо променљиве „УсерНаме“ и „Пассворд“ које су типа стринг. Они ће се користити за чување вредности корисничког имена и лозинке које се прослеђују веб услузи.

Корак 5) Као следећи корак, следећи код треба додати истој датотеци ТуториалСервице.асмк . Овај код заправо дефинише функцију наше веб услуге. Ова функција клијенту враћа низ „Ово је Гуру99 веб услуга“. Али овог пута, низ ће се вратити само ако клијентска апликација преда акредитиве веб услузи.

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

Објашњење кода: -

  1. Овде креирамо објекат класе АутхХеадер који је створен у претходном кораку. Овај објекат ће бити прослеђен нашој Гуру99Вебсервице у којој се може пажљиво испитати корисничко име и лозинка.
  2. Атрибут [СоапХеадер] се сада користи за одређивање да приликом позивања веб услуге треба да проследи корисничко име и лозинку.
  3. У овом блоку кода заправо испитујемо корисничко име и лозинку прослеђене када се позове веб услуга. Ако је Корисничко име једнако „Гуру99“, а лозинка једнака „Гуру99Пассворд“, тада се порука „Ово је Гуру99 веб услуга“ преноси клијенту. Иначе ће се грешка послати клијенту ако се проследе погрешни кориснички ИД и лозинка.

Ако се код успешно изврши, следећи излаз ће се приказати када покренете свој код у прегледачу.

Излаз:

Горњи излаз се приказује када се програм покреће, што значи да је Веб услуга сада доступна. Кликните на везу Опис услуге.

Из описа услуге сада ћете моћи да видите да су корисничко име и лозинка елементи ВСДЛ датотеке. Ове параметре треба послати када се позове веб услуга.

Најбоље праксе безбедности веб услуга

Следе безбедносна разматрања која треба имати на уму приликом рада са веб услугама

  1. Ревизија и управљање евиденцијом - Користите евиденцију апликација да бисте евидентирали све захтеве који долазе до веб услуга. Ово даје детаљан извештај о томе ко се позвао на веб услугу и може вам помоћи у анализи утицаја ако дође до било каквог кршења безбедности.

  2. Ток позива веб услузи - Покушајте да забележите ток позива у веб услугама. Подразумевано, апликација може да позива више захтева за веб услуге са токенима за потврду идентитета који су прослеђени између ових веб услуга. Сви позиви између веб услуга морају се надгледати и евидентирати.

  3. Осетљиве информације - Не уврштавајте осетљиве информације у своје записе као што су лозинке или бројеви кредитних картица или било које друге поверљиве информације. Ако постоји догађај који има било коју од ових информација, потребно га је одбацити пре пријављивања.

  4. Прати пословно пословање - Прати значајне пословне операције. На пример, инструментирајте своју апликацију да бележи приступ посебно осетљивим методама и пословној логици. Узмимо пример апликације за куповину на мрежи. У типичној апликацији постоји више корака, попут избора предмета који се купују, предмета утоварених у корпу, а затим коначне куповине. Веб-услуга мора да прати читав овај пословни ток.

  5. Правилна аутентификација - аутентификација је механизам којим клијенти могу да утврде свој идентитет са веб услугом користећи одређени скуп акредитива који могу да докажу тај идентитет. Никада не треба чувати корисничке акредитиве, па према томе, ако се ВС Сецурити користи за позивање веб услуге, мора се имати на уму да веб услуга не би смела да чува акредитиве који су послати у заглављу СОАП. Веб услуга их треба одбацити.

Резиме

  • СОАП пружа додатни слој назван ВС Сецурити за пружање додатне сигурности приликом упућивања позива веб услугама.
  • ВС Сецурити се може позвати једноставним корисничким именом или лозинком или се може користити са бинарним сертификатима за потврду идентитета
  • Видели смо да у .Нету можемо прилагодити веб услугу тако да се корисничко име и лозинка прослеђују као део СОАП елемента заглавља.