Което е добро за максимална уеб сигурност

Както JWT, така и OAuth могат да ви помогнат да подобрите сигурността на вашето уеб приложение, като предлагат сигурно удостоверяване и оторизация. Но кой трябва да внедрите, за да позволите на потребителите да имат защитен достъп до вашето уеб приложение? Подготвили сме подробна статия за JWT срещу OAuth, за да отговорим на този въпрос.

След като го прочетете, ще имате ясна представа какво представляват JWT и OAuth, какви предимства предлагат, как се различават и кой от тях трябва да внедрите, за да подобрите сигурността на вашето уеб приложение.

Без повече шум, нека се потопим.

Какво е JWT?

JWT, което означава JSON Web Token, е отворен стандарт, определящ начин за сигурно споделяне на информация между две страни като JSON обект. Тъй като информацията е цифрово подписана, страните могат да се доверят и да проверят информацията, предадена чрез JSON уеб токени.

Сравнително малкият размер на JWT позволява те да бъдат изпращани чрез POST параметър, URL адрес или вътре в HTTP хедър. JSON Web Token има три части: заглавка, полезен товар и подпис.

Заглавието казва какъв тип токен е и вида на използвания алгоритъм за подписване. Частта Payload на JWT включва твърдения, които са твърдения за потребители и допълнителни данни.

Както подсказва името, частта за подпис на JSON Web Token има подпис, за да потвърди, че съобщението не е било темперирано по пътя.

Как работят JWT

Източник на изображението: DEV

Следното е как работи JSON Web Token.

Вход на потребител

Потребителите влизат във вашето уеб приложение, като изпращат своите потребителски имена и пароли. След това вашето приложение прехвърля тези идентификационни данни за вход към сървъра за удостоверяване.

Генериране на токени

След като сървърът за удостоверяване провери идентификационните данни за вход на потребителите, той генерира JSON уеб токени и ги изпраща на потребителите. Тези JWT могат да включват критична информация за потребителите и сесиите за удостоверяване. Потребителите съхраняват тези JWT локално. Въз основа на настройките сървърът може също да подписва JWT, като използва споделен таен или частен ключ за подобряване на сигурността.

Проверка на токена

Когато потребителите отправят заявки към вашия сървър на приложения за достъп до който и да е ресурс, те ще включат своите JWT в своите заявки към сървъра. Вашият сървър на приложения ще провери подписите в JWT и ще провери твърденията в полезните натоварвания, за да провери дали на потребителите е разрешен достъп до исканите ресурси.

Ако JWT са валидни, на потребителите ще бъде предоставен достъп до исканите ресурси на вашето уеб приложение.

Случаи на използване на JWT

Човек може да използва JSON уеб токени по следните начини:

#1. Упълномощаване

След като потребителите успешно влязат във вашето уеб приложение чрез крайната точка за влизане, сървърът за удостоверяване ще им издаде JWT. Потребителите ще използват своите JWT за достъп до ресурси в рамките на приложението, които изискват удостоверяване, за да докажат своята самоличност.

Обмен на информация между страните

JSON Web Token може да бъде правилната опция за сигурно предаване на информация на валидни потребители. JSON уеб токените са подписани, за да се гарантира, че информацията идва от оригиналния източник. Освен това структурата на JWT (частта за подпис) позволява на приемниците да проверят дали информацията не е променяна по пътя.

  Вероятно няма да получите $25 от споразумението за ограничаване на iPhone на Apple

Ползи от JWT

По-долу са ключови предимства от внедряването на JWT във вашето уеб приложение.

  • За разлика от SAML токените, JWT са леки. Така че можете бързо да ги внедрите в HTML и HTTP среди, което прави JWT идеални за клиентски приложения като мобилни приложения.
  • JWT предлагат стабилна сигурност. Можете симетрично да подписвате JWT чрез споделена тайна, като използвате алгоритъма HMAC или частен ключ, за да ги подписвате асиметрично.
  • JWT идват с вграден механизъм за изтичане, което ви позволява да зададете периода на изтичане на JWT, за да подобрите сигурността.
  • JSON уеб токените са широко възприети от различни решения за единично влизане. В резултат на това е лесно да се работи с JWT.

Освен това JWT могат да спестят място за съхранение на база данни във вашата компания. Това е така, защото вашият сървър създава само JWT и те се записват от страна на клиента. Освен това JWT не изискват търсене в база данни.

Така че JWT могат да бъдат проверени бързо, предлагайки превъзходно потребителско изживяване.

Ограничения на JWT

Въпреки че JWT са отличен начин за упълномощаване на потребители. Те имат определени ограничения, като например:

  • Вие носите отговорност за осигуряването на безопасността на ключа за криптиране. Ако хакер се докопа до ключа, който подписва вашите JWT, имате големи проблеми. Те биха могли да направят фалшиви токени, които се забъркват с вашите потребителски данни. Това е огромен риск за сигурността.
  • JWT не се нуждаят от извикване на база данни за всяка проверка, което звучи добре. Но ако трябва да отмените едно възможно най-скоро, ще трябва да го поставите в черния списък. Това не е бърза или проста задача.
  • Когато JWT изтече, не става въпрос само за удължаване на таймера. Системата ви ще поиска от потребителя да влезе отново, за да получи нов токен. Това добавя сложност към целия процес, изисквайки повече мисъл за потребителското изживяване и потоците за сигурност. За да улесните процеса, можете да внедрите токени за опресняване в комбинация с JWT. Когато токенът за достъп изтече, клиентите могат да използват тези токени за опресняване, за да поискат нови токени за достъп, без клиентът отново да изпраща идентификационни данни за вход.
  • Внедряването на JWT във вашето уеб приложение не е проста задача; това изисква допълнителна инженерна работа. Ще трябва да настроите процеса на създаване на токени, да изберете правилния механизъм за подписване, който да отговаря на вашето приложение, и да интегрирате всичко това с вашата съществуваща архитектура.

JWT не са едноетапно решение, а по-скоро проект, който се нуждае от внимателно планиране и изпълнение.

Какво е OAuth?

OAuth, съкращение от отворена авторизация, е отворен стандартен протокол за авторизация. Той позволява на уеб приложения или уебсайтове да имат достъп до ресурси, хоствани от приложения на трети страни от името на потребителите, без потребителите да споделят идентификационни данни за вход за приложения на трети страни.

Сега, написан като OAuth 2.0 (най-новата версия на OAuth), той се използва широко за удостоверяване на потребители чрез сървър за удостоверяване.

Например, с наличен OAuth, потребителите могат да влизат в приложението ви със своите Facebook или Google акаунти. Но те ще въведат своите идентификационни данни за вход само в акаунти във Facebook или Google.

Как работи OAuth

Източник на изображението: Зохо

Например, имате приложение за управление на времето. И за да позволите на всеки да използва вашето приложение ефективно, имате нужда от достъп до техните имейл кутии. В по-ранни дни потребителите трябваше да споделят своите идентификационни данни за вход с вашето приложение, за да позволят на приложението да има достъп до техните входящи кутии. OAuth2.0 реши този проблем.

  Коригирайте грешката при забранено изтегляне на Google Drive

Ето как изглежда работният процес на OAuth2.0:

  • Вашето приложение за управление на времето (клиентът) иска достъп до защитени ресурси; в този случай това е входящата кутия на потребителя, собственост на потребителя (собственика на ресурса). Вашето приложение прави това, като изпраща потребителя до оторизираната крайна точка.
  • Собственикът на ресурса (потребителят) удостоверява и разрешава заявката за достъп до ресурс от приложението за управление на времето. Клиентът (вашето приложение) ще получи разрешение за оторизация от оторизираната крайна точка.
  • Вашето приложение ще поиска токен за достъп от сървъра за оторизация за достъп до входящата кутия на потребителя. Той ще направи това чрез подаване на разрешението за разрешение и със собствено удостоверяване на самоличността.
  • Ако самоличността на приложението ви е удостоверена и предоставеното разрешение е валидно, приложението ви ще получи токен за достъп за достъп до входящата кутия на потребителя.
  • Ако токенът за достъп е валиден, вашето приложение вече може да осъществява достъп до потребителски данни (входяща кутия на потребителя), като изпрати токена за достъп за удостоверяване.
  • Сега вашето приложение за управление на времето има достъп до входящата кутия на потребителя. Както Oauth има различни видове грантовепотокът на оторизация може да се различава леко в зависимост от типовете предоставяне на оторизация.

    Предимства на OAuth

    По-долу са основните предимства на използването на OAuth.

    • OAuth е широко приет стандарт. Това означава, че всички водещи услуги за удостоверяване разбират и използват OAuth.
    • Потребителите ще намерят много OAuth добавки и функции, от които да избират, благодарение на широкото му използване и съвместимост.
    • OAuth предлага тествани клиентски библиотеки за почти всички езици за програмиране и уеб рамки. Така че можете да използвате предпочитания от вас език с OAuth.
    • OAuth е много сигурен и добре проверен. Тъй като е толкова широко използван, експертите вече са разгледали всички възможни рискове за сигурността.
    • OAuth е страхотен за отделяне на код. Вашият основен код на приложение не се обърква при обработка на задачи за удостоверяване. Това улеснява управлението и актуализирането на вашето приложение в дългосрочен план.

    Случаи на използване на OAuth

    Следват някои популярни случаи на използване на OAuth:

    • Най-честата употреба на OAuth 2.0 е да се правят приложения на трети страни за достъп до потребителски акаунти. С OAuth 2.0 потребителите могат да упълномощят трети страни за достъп до техните данни, съхранявани в различни услуги, без да предоставят на трети страни идентификационните данни за влизане в тези услуги.
    • Като собственик на уеб приложение можете да използвате OAuth 2.0, за да внедрите единично влизане. Можете да разгледате тези OAuth решения с отворен код за вашия проект.
    • Можете да внедрите OAuth 2.0 във вашия API шлюз, за ​​да накарате API шлюза да действа като сървър за оторизация. Това ще гарантира, че API шлюзът ще препраща заявки от клиенти с валидни токени за достъп.
    • OAuth 2.0 може да даде възможност на IoT и смарт устройства като хладилници или телевизори да взаимодействат с API на трети страни от името на потребителите. Това е полезно, когато потребител иска да влезе в приложение на джаджи без обикновена клавиатура, като смарт телевизор или конзола за игри.

    Ограничения на OAuth

    Диапазонът от налични потоци може да бъде плашещ за тези, които са нови в OAuth. Не става въпрос само за избор на един; понякога се нуждаете от комбинация, която да отговори на всички ваши изисквания за сигурност. Тази сложност може да затрудни начинаещите да знаят откъде да започнат, какво да използват и как да го интегрират ефективно.

      13 най-добри инструмента за сравнение/сравнение на заплати за специалисти по човешки ресурси

    Всеки поток служи за уникална цел, независимо дали за мобилни приложения, комуникация между сървъри или уеб приложения. Така че внимателното анализиране на специфичните ви нужди е от съществено значение, преди да направите избор.

    OAuth 2.0 зависи от SSL/TLS, за да запази нещата в безопасност. Ако SSL/TLS не е настроен правилно, тогава сигурността на OAuth 2.0 може да е изложена на риск.

    Освен това OAuth може да повдигне проблеми с поверителността, особено при проследяване на потребителската активност. Когато използвате услуга като „Влизане с Google“, Google може да научи за вашата активност на този сайт на трета страна. Google не само може да знае, че сте влезли, но може също така да проследи колко често и кога взаимодействате с този сайт.

    Освен това OAuth може да е пресилен за по-прости настройки, като приложение само с преден и заден край. Може да не се нуждаете от неговите сложности в такива случаи.

    Разлика между JWT и OAuth

    JWT и OAuth изпълняват ключовата функция за проверка на самоличността на потребителя за разрешаване на достъп до ресурси. Те са основни инструменти в областта на сигурността, но се различават по обхват, сложност и приложение.

    ХарактеристикиJWTsOAuth Основна употребаJWT се фокусират основно върху API. OAuth обхваща уеб, браузър, API и други приложения. Токен срещу протокол. съхранение от страна на сървъра. Гъвкавост JWT са с по-ограничен обхват. OAuth предлага повече гъвкавост и по-широк набор от случаи на употреба. Лесно използване JWT са по-прости и лесни за разбиране. OAuth е по-сложен.

    Докато JWT са по-прости и насочени към сигурността на API, OAuth предоставя цялостно решение за механизъм за удостоверяване, което може да се адаптира към различни сценарии.

    И OAuth може да позволи на потребителите да позволят на приложение на трета страна да има достъп до техните данни на друга платформа, без да разкрива данните за вход.

    Дали някой е по-добър зависи от специфичните нужди на въпросната система или мрежа.

    Можете ли да използвате JWT и OAuth заедно?

    Въпреки че JWT и OAuth служат за различни цели, можете да ги комбинирате заедно.

    Протоколът OAuth не посочва формат на токен, който трябва да се използва стриктно. Така че можете да внедрите JWT в OAuth.

    Например сървърът за удостоверяване на OAuth2 може да издаде токен за достъп, включващ JWT. И този JWT може да включва допълнителна информация в полезния товар, подобрявайки производителността. Това е така, защото ще има намалени двупосочни пътувания между сървърите за удостоверяване и ресурсите.

    Комбинирането на JWT и OAuth2 може също да се случи чрез подход с двоен токен – OAuth2 издава два отделни токена в този метод: access_token и JWT. JWT съдържа допълнителна информация за самоличност. Този подход осигурява допълнителен слой детайли, като ви дава повече контрол върху потребителския достъп и данни.

    От решаващо значение е да използвате OpenID Connect, когато избирате тази стратегия с двоен токен. OpenID Connect се основава на OAuth2 и добавя повече стандартизирани полета към токените.

    Използването на JWT вместо OAuth2 може да направи нещата по-бързи и по-малко сложни за конкретни задачи. Но също така може да направи развитието по-предизвикателно.

    Когато решавате да използвате JWT с OAuth2, помислете дали увеличаването на скоростта оправдава добавената работа в разработката.

    Заключение

    В битката на JWT срещу OAuth за максимална сигурност в мрежата, всеки има предимства и недостатъци. JWT блести за бързо удостоверяване без състояние, но има ограничения като липса на вградено отмяна. OAuth превъзхожда сложни сценарии за оторизация, но може да е пресилен за по-прости проекти.

    Ако имате нужда от стабилна авторизация и ефективно удостоверяване, помислете за комбиниране на JWT и OAuth чрез OpenID Connect.

    Вашият избор трябва да зависи от конкретните нужди на вашия проект, а не само от шума около тези технологии.

    Освен това можете да разгледате тези популярни платформи за удостоверяване на потребители, за да изберете най-доброто решение за вашето приложение.