Ръководства

Какво е удостоверяване? Вход, сесии и OAuth, обяснено

Удостоверяването е начинът, по който приложението потвърждава кой е потребителят – обикновено като проверява нещо, което той знае (парола), нещо, което притежава (код, изпратен на телефона или имейла му), или идентичност от друга надеждна услуга (например „Вход с Google“). След като потребителят е удостоверен, приложението го помни със сесия или токен, така че да не се налага да влиза при всяка страница. Решението какво този известен потребител има право да прави е отделна стъпка, наречена оторизация.

Защо е важно, когато създаваш с ИИ

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

  • Съхраняват ли се паролите безопасно?
  • Проверява ли всяка частна страница и всяка API точка действително кой пита?
  • Може ли клиент, който е влязъл, да види данните на друг клиент, като промени число в адреса?
  • Какво се случва, когато някой забрави паролата си?

Приложението може да изглежда напълно сигурно и същевременно да се провали по всяко от тези неща. Разбирането на подвижните части ви помага да задавате правилните въпроси и да тествате правилните неща.

Ежедневна аналогия

Представете си настаняване в хотел.

На рецепцията показвате документ за самоличност. Това е удостоверяване: доказвате кой сте. Служителят след това ви дава карта за стая. Тази карта е вашата сесия: през останалото време от престоя не показвате документа си отново – просто докосвате картата.

Картата отваря стаята ви, фитнеса и асансьора до вашия етаж – но не и стаите на други гости или офиса на персонала. Това е оторизацията: до какво има право да достъпва вашата самоличност. Ако изгубите картата, хотелът може да я деактивира на рецепцията (отнемане на сесия). Когато напуснете, тя спира да работи (изход от системата или изтичане на срока).

„Вход с Google“ е като хотел, който приема писмо от доверен партньор, в което се казва „това е кой е този човек“, вместо сам да проверява документа ви.

Основните методи за вход

МетодКак работиПредимстваНедостатъци
Имейл + паролаПотребителят избира парола; приложението съхранява нейния хешПознато, без външна зависимостТрябва безопасно да съхранявате хешовете и да обработвате възстановяването
Магически линк / еднократен кодПриложението изпраща по имейл линк или код, който вписва потребителяНяма пароли за изтичане или забравянеЗависи от доставката на имейла; входът е по-бавен
Вход през социална мрежа (OAuth / OpenID Connect)Потребителят влиза с Google, Apple, GitHub и др.Бързо за потребителите; вие не съхранявате паролаНастройка при всеки доставчик; потребители без такива акаунти
Хостван доставчик на удостоверяванеУслуга като Clerk, Auth0 или Supabase Auth се грижи за регистрацията, входа и възстановяванетоПо-малко работа по сигурността за васМесечна цена при голям мащаб; още една зависимост
Многофакторно удостоверяване (MFA / 2FA)Втора проверка след първата, например код от приложение за автентикацияМного по-трудно за пробивМалко повече неудобство

Как трябва да се съхраняват паролите

Сигурното приложение никога не съхранява действителната ви парола. Вместо това съхранява хеш: резултата от еднопосочна функция, която превръща паролата в фиксиран низ. Когато влезете, приложението хешира въведеното от вас и сравнява резултата със съхранения хеш.

Две подробности правят това безопасно:

  • Сол – случайна стойност, добавена към всяка парола преди хеширането, така че двама души с една и съща парола получават различни хешове и предварително изчислените таблици за търсене са безполезни.
  • Бавен алгоритъм, създаден за пароли – като Argon2, bcrypt или scrypt. Общо предназначените хешове като MD5 или SHA-256 са твърде бързи сами по себе си; нападателите могат да пробват милиарди предположения.

Хеширането не е същото като шифроването. Шифрованите данни могат да бъдат дешифрирани с ключ; хешът на паролата е проектиран да не може да се обърне изобщо.

Сесии срещу токени

След входа приложението трябва да ви разпознава при всяка заявка. Има два често срещани подхода.

Сесия (бисквитка)Токен (напр. JWT)
Какво държи браузърътСлучаен идентификатор на сесията в бисквиткаПодписан токен с информация за потребителя и срок на валидност
Къде живее състоянието на входаНа сървъра, в база данни или хранилищеВътре в самия токен
Изход от всички местаЛесно: изтриване на сесията на сървъраПо-трудно: токенът остава валиден до изтичането си, освен ако не поддържате списък за блокиране
Типично използванеТрадиционни уеб приложенияAPI, мобилни приложения, услуги, които комуникират помежду си

За бисквитките три настройки са важни: HttpOnly (JavaScript на страницата не може да прочете бисквитката), Secure (изпраща се само през HTTPS) и SameSite (ограничава изпращането ѝ при заявки от други сайтове). Съхраняването на токени в localStorage на браузъра е често срещано, но ги излага на всеки скрипт, който работи на страницата.

OAuth и „Вход с Google“

OAuth 2.0 е стандарт за делегирана оторизация: позволява на приложение да получи ограничен достъп до акаунта ви в друга услуга – например да чете вашия Google Календар – без изобщо да вижда паролата ви за Google. Пренасочват ви към Google, вие одобрявате конкретни права (наречени scopes), а Google дава на приложението токен само за тези права.

OAuth сам по себе си е проектиран да предоставя достъп, а не да казва кой сте. OpenID Connect (OIDC) е слой отгоре на OAuth 2.0, който добавя идентичност – именно това използва „Вход с Google“ или „Вход с Apple“. За настройката регистрирате приложението при доставчика и получавате client ID и client secret; тайната остава на вашия сървър.

Практически пример: вход за клиентски портал

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

  • Удостоверяване: клиентите влизат с имейл и магически линк, така че няма пароли за управление. Служителите на агенцията влизат с акаунти в Google Workspace.
  • Роли: всеки потребител има роля – client или staff.
  • Правила за оторизация:
ДействиеКлиентСлужител
Да вижда проектите на собствената си компанияДаДа
Да вижда проектите на други компанииНеДа
Да качва файл към проектСамо към собствени проектиДа
Да маркира фактура като платенаНеДа
  • Къде се прилага: на сървъра, при всяка заявка. Сървърът търси влезлия потребител и връща само проектите, където project.company_id съвпада с компанията на потребителя. Скриването на бутона „Маркирай като платено“ не е достатъчно – самата точка трябва да отказва.

Често срещани термини с обяснение

ТерминЗначение
Удостоверяване (AuthN)Потвърждаване кой е даден човек.
Оторизация (AuthZ)Решаване какво има право да прави.
СесияПриложението помни, че сте влезли, между отделните заявки.
Бисквитка (cookie)Малко парче данни, което браузърът изпраща обратно към сайта при всяка заявка.
JWTJSON Web Token: подписан, компактен токен, който носи данни като потребителски идентификатор и срок на валидност.
Роля / правоЕтикети като admin или member, които решават достъпа.
MFA / 2FAИзискване за второ доказателство, например код от приложение за автентикация.
SSOЕдинен вход: един вход (често фирмен акаунт) за много приложения.
401 срещу 403„Кой сте?“ (не сте удостоверен) срещу „Не можете да направите това“ (нямате оторизация).

Често срещани грешки и заблуди

  • Проверка на правата само в страницата. Ако браузърът скрие бутон, но API-то не проверява, всеки може да извика API-то директно.
  • Доверие на идентификатори от адреса. /invoices/1042 трябва да проверява дали фактура 1042 принадлежи на влезлия потребител.
  • Самостоятелно измисляне на криптография. Използвайте добре познати библиотеки или доставчици; не оставяйте ИИ да измисля схема за хеширане.
  • Слабо възстановяване на парола. Линковете за възстановяване трябва да се използват еднократно, да изтичат бързо и да не показват дали даден имейл има акаунт.
  • Смесване на вашия вход с този на инструмента, с който строите. Потребителите на вашето приложение са отделни от акаунта ви в инструмента, с който го създавате.
  • Без ограничение на опитите за вход. Без него нападателите могат безкрайно да пробват пароли.

Какво да поискате от вашия ИИ инструмент

  • „Добави регистрация и вход с [добре позната библиотека или доставчик]. Не пиши собствено хеширане на пароли.“
  • „Съхранявай паролите хеширани с bcrypt или Argon2.“
  • „Използвай HttpOnly, Secure бисквитки за сесията.“
  • „Добави роли: admin и member. Изброй всяка крайна точка и кои роли може да я извиква.“
  • „Наложи на сървъра потребителите да могат да четат и редактират само собствените си записи. После ми покажи как си проверил.“
  • „Добави възстановяване на парола с еднократни линкове, които изтичат за един час.“
  • „Ограничи броя опити за вход.“

После тествайте сами: създайте два акаунта и опитайте да достъпите данните на единия, докато сте влезли като другия. Нашето ръководство за добавяне на вход и контролен списък за сигурност вървят по-далеч.

Удостоверяване в Mythex

Mythex не предоставя вграден продукт за удостоверяване на потребителите на вашето приложение; вие избирате подход – имейл и парола, съхранени в базата данни на проекта, или SDK на хостван доставчик – и помолите агента да го добави. Ключовете на доставчика се поставят в тайните на проекта, не в чата. Това е отделно от това как влизате в самия Mythex. Рецептата в документацията за добавяне на вход към приложението съдържа стартов промпт, който можете да адаптирате, а какво е API обяснява къде се намират тези проверки на сървъра.

Въпроси

В какво е разликата между удостоверяване и оторизация?

Удостоверяването проверява кой сте, например като потвърждава паролата ви. Оторизацията решава какво имате право да правите, след като сте известни – например дали можете да видите административната страница или да редактирате резервация на друг човек. Приложенията се нуждаят и от двете.

Какво е OAuth?

OAuth 2.0 е стандарт, който позволява на едно приложение да получи ограничен достъп до акаунта ви в друга услуга, без да вижда паролата ви. „Вход с Google“ използва OpenID Connect – слой за идентичност, построен върху OAuth 2.0, така че приложението научава кой сте от Google.

Трябва ли приложението ми да съхранява пароли?

Никога в четим вид. Ако използвате вход с имейл и парола, паролите трябва да се съхраняват като хешове със сол, създадени с бавен алгоритъм, предназначен за пароли, като Argon2 или bcrypt. Много приложения избягват проблема, като използват хостван доставчик на удостоверяване, вход през социална мрежа или магически имейл линкове.

Сесии или токени – кое да използва приложението ми?

И двете работят. Сесията съхранява състоянието на входа на сървъра и дава на браузъра случаен идентификатор в бисквитка, който лесно може да се отмени. Токен като JWT носи подписана информация в себе си, което подхожда на API-та и мобилни клиенти, но е по-трудно да се анулира преди изтичане. За типично уеб приложение бисквитките със сесии са разумен избор по подразбиране.

Mythex · Pricing · Създай всичко с ИИ · Шаблони за уебсайтове и приложения · Mythex в сравнение · Речник на създаването на приложения с ИИ · Безплатни инструменти за създаване на приложения с ИИ · English

English አማርኛ العربية বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)