Аутентификация дегеніміз не? Кіру, сессиялар және OAuth түсіндіріледі
Аутентификация — қосымшаның пайдаланушының кім екенін растау тәсілі: әдетте ол білетін бір нәрсені (құпиясөзді), иеленетін бір нәрсені (телефонына немесе поштасына жіберілген кодты) немесе басқа сенімді қызметтегі идентификацияны («Google арқылы кіру» сияқты) тексереді. Пайдаланушы аутентификациядан өткеннен кейін, қосымша оны сессия немесе токен арқылы есте сақтайды, сондықтан әр бетте қайта кіру қажет болмайды. Танылған пайдаланушыға не істеуге рұқсаты бар екенін шешу — авторизация деп аталатын бөлек қадам.
AI көмегімен құрастырғанда бұл неге маңызды
Кіруді қосу — адамдардың AI құрастырушысынан жиі сұрайтын тапсырмаларының бірі, және оны жасырын дұрыс емес жасау оңай. Кіру беті генерациялау оңай. Қиындығы — оның айналасындағы барлық нәрсе:
- Құпиясөздер қауіпсіз сақталған ба?
- Әр жабық бет пен әр API соңғы нүктесі шынымен кім сұрап тұрғанын тексере ме?
- Кірген клиент URL-дағы санды өзгерту арқылы басқа клиенттің деректерін көре ала ма?
- Біреу құпиясөзін ұмытып қалғанда не болады?
Қосымша осының барлығында сәтсіз болса да, мүлде қауіпсіз болып көрінуі мүмкін. Жұмыс бөліктерін түсіну дұрыс сұрақтар қоюға және дұрыс нәрселерді тексеруге мүмкіндік береді.
Күнделікті салыстыру
Қонақүйге тіркелуді елестетіңіз.
Қабылдау үстелінде жеке куәлігіңізді көрсетесіз. Бұл аутентификация: кім екеніңізді дәлелдеу. Администратор сізге кілт картасын береді. Бұл карта — сіздің сессияңыз: бүкіл болу кезінде жеке куәлігіңізді қайта көрсетпейсіз, картаны тақайсыз.
Карта сіздің бөлмеңізді, спорт залын және қабатыңызға көтеретін лифтті ашады — бірақ басқа қонақтардың бөлмелерін немесе қызметкерлер бөлмесін ашпайды. Бұл авторизация: сіздің идентификацияңыз қай қолжетімділікке рұқсат етілгенін. Картаны жоғалтсаңыз, қонақүй оны үстелде өшіре алады (сессияны күшін жою). Кетерде ол жұмыс істеуін тоқтатады (шығу немесе мерзімнің бітуі).
«Google арқылы кіру» — қонақүйдің жеке куәлігіңізді өзі тексермей, сенімді серіктестің «бұл — олар» деген хатын қабылдауы сияқты.
Негізгі кіру тәсілдері
| Тәсіл | Қалай жұмыс істейді | Артықшылықтары | Кемшіліктері |
|---|---|---|---|
| Электрондық пошта + құпиясөз | Пайдаланушы құпиясөз таңдайды; қосымша оның хэшін сақтайды | Таныс, сыртқы тәуелділік жоқ | Хэштерді қауіпсіз сақтау және қалпына келтіруді өңдеу керек |
| Сілтеме / бір реттік код | Қосымша пайдаланушыны кіргізетін сілтемені немесе кодты поштаға жібереді | Ұрланатын немесе ұмытылатын құпиясөз жоқ | Поштаның жеткізілуіне тәуелді; кіру баяу |
| Әлеуметтік кіру (OAuth / OpenID Connect) | Пайдаланушы Google, Apple, GitHub және т.б. арқылы кіреді | Пайдаланушылар үшін жылдам; сіз құпиясөз сақтамайсыз | Әр провайдермен бөлек баптау; бұл аккаунттары жоқ пайдаланушылар |
| Хостингтегі аутентификация провайдері | Clerk, Auth0 немесе Supabase Auth сияқты қызмет тіркеуді, кіруді және қалпына келтіруді өңдейді | Сіз үшін қауіпсіздік жұмысы аз | Ауқымда айлық төлем; тағы бір тәуелділік |
| Көпфакторлық (MFA / 2FA) | Бірінші тексеруден кейін екінші тексеру, мысалы аутентификатор қолданбасының коды | Бұзу әлдеқайда қиын | Сәл көбірек қадам қажет |
Құпиясөздер қалай сақталуы керек
Қауіпсіз қосымша сіздің нақты құпиясөзіңізді ешқашан сақтамайды. Оның орнына ол хэшті сақтайды: құпиясөзді тұрақты жолға айналдыратын бір бағытты функцияның нәтижесі. Кірген кезде қосымша сіз терген мәтіннің хэшін есептеп, нәтижені сақталған хэшпен салыстырады.
Мұны қауіпсіз ететін екі детальдар бар:
- Тұз (salt) — хэштеу алдында әр құпиясөзге қосылатын кездейсоқ мән, сондықтан бірдей құпиясөзі бар екі адамда әр түрлі хэш болады және алдын ала есептелген кестелер пайдасыз болады.
- Құпиясөздерге арналған баяу алгоритм — мысалы Argon2, bcrypt немесе scrypt. MD5 немесе SHA-256 сияқты жалпы мақсаттағы хэштер өз бетінше тым жылдам; шабуылдаушылар миллиардтаған болжам жасай алады.
Хэштеу шифрлеумен бірдей емес. Шифрланған деректерді кілтпен шешуге болады; құпиясөз хэші мүлде қайтарылмайтындай жасалған.
Сессиялар мен токендер
Кіргеннен кейін қосымша әр сұраныста сізді тануы керек. Бұған екі кең таралған тәсіл бар.
| Сессия (cookie) | Токен (мысалы JWT) | |
|---|---|---|
| Браузерде не сақталады | Cookie ішіндегі кездейсоқ сессия ID | Пайдаланушы мәліметі мен мерзімі бар қол қойылған токен |
| Кіру күйі қайда сақталады | Серверде, деректер қорында немесе қоймада | Токеннің ішінде |
| Біреуді барлық жерден шығару | Оңай: серверде сессияны жою | Қиынырақ: токен мерзімі бітпейінше жарамды болып қалады, егер блок-лист сақтамасаңыз |
| Әдеттегі қолданысы | Дәстүрлі веб-қосымшалар | API, мобильді қосымшалар, бір-бірімен сөйлесетін қызметтер |
Cookie үшін үш баптау маңызды: HttpOnly (беттегі JavaScript cookie-ді оқи алмайды), Secure (тек HTTPS арқылы жіберіледі) және SameSite (басқа сайттардан сұраныстарда жіберуді шектейді). Токендерді браузердің localStorage-ында сақтау кең таралған, бірақ бұл оларды беттегі кез келген скриптке ашады.
OAuth және «Google арқылы кіру»
OAuth 2.0 — делегацияланған авторизация стандарты: ол қосымшаға басқа қызметтегі аккаунтыңызға шектеулі қолжетімділік береді — мысалы, Google Calendar-ды оқуға — Google құпиясөзіңізді ешқашан көрместен. Сізді Google-ға жібереді, сіз нақты рұқсаттарды (scope деп аталады) мақұлдайсыз, ал Google қосымшаға тек сол рұқсаттарға арналған токен береді.
OAuth өз бетінше сіз кім екеніңізді айту үшін емес, қолжетімділік беру үшін жасалған. OpenID Connect (OIDC) — OAuth 2.0 үстіндегі қабат, ол идентификацияны қосады; «Google арқылы кіру» немесе «Apple арқылы кіру» осыны пайдаланады. Баптау үшін қосымшаңызды провайдерде тіркейсіз және client ID мен client secret аласыз; құпия кілт серверде қалады.
Жұмыс мысалы: клиенттік портал үшін кіру
Дизайн агенттігінің клиенттері жобаларын және шоттарын көретін портал жасап жатырсыз деп елестетіңіз.
- Аутентификация: клиенттер электрондық пошта мен кіру сілтемесі арқылы кіреді, сондықтан басқаратын құпиясөз жоқ. Агенттік қызметкерлері Google Workspace аккаунттары арқылы кіреді.
- Рөлдер: әр пайдаланушының рөлі бар —
clientнемесеstaff. - Авторизация ережелері:
| Әрекет | Клиент | Қызметкер |
|---|---|---|
| Өз компаниясының жобаларын көру | Иә | Иә |
| Басқа компаниялардың жобаларын көру | Жоқ | Иә |
| Жобаға файл жүктеу | Тек өз жобалары | Иә |
| Шотты төленді деп белгілеу | Жоқ | Иә |
- Қайда орындалады: серверде, әр сұраныс үшін. Сервер кірген пайдаланушыны іздейді, содан кейін тек
project.company_idпайдаланушының компаниясына сәйкес келетін жобаларды қайтарады. «Төленді» түймесін жасыру жеткіліксіз — соңғы нүктенің өзі бас тартуы керек.
Ортақ терминдер
| Термин | Мағынасы |
|---|---|
| Аутентификация (AuthN) | Кімнің екенін растау. |
| Авторизация (AuthZ) | Ол не істей алатынын шешу. |
| Сессия | Сұраныстар арасында қосымшаның сіздің кірген екеніңізді есте сақтауы. |
| Cookie | Браузер әр сұранысымен сайтқа қайтаратын шағын дерек. |
| JWT | JSON Web Token: пайдаланушы ID және мерзім сияқты талаптарды алып жүретін қол қойылған, ықшам токен. |
| Рөл / рұқсат | Қолжетімділікті анықтайтын admin немесе member сияқты белгілер. |
| MFA / 2FA | Аутентификатор қолданбасының коды сияқты екінші дәлелді талап ету. |
| SSO | Бірыңғай кіру: көптеген қосымшаға бір кіру (көбіне компания аккаунты). |
| 401 және 403 | «Сіз кімсіз?» (аутентификацияланбаған) және «Сіз мұны істей алмайсыз» (авторизацияланбаған). |
Жиі кездесетін қателер мен қате түсініктер
- Рұқсаттарды тек бетте тексеру. Браузер түймені жасырса, бірақ API тексермесе, кез келген адам API-ды тікелей шақыра алады.
- URL-дағы ID-ларға сену.
/invoices/1042шот 1042 кірген пайдаланушыға тиесілі екенін тексеруі керек. - Өз криптографиясын жасау. Танымал кітапханаларды немесе провайдерлерді пайдаланыңыз; AI-ға хэштеу схемасын ойлап табуға рұқсат бермеңіз.
- Әлсіз құпиясөзді қалпына келтіру. Қалпына келтіру сілтемелері бір реттік болуы, тез мерзімі бітуі және поштада аккаунт бар-жоғын аштырмауы керек.
- Кіруді құрастырушының кірумен шатастыру. Қосымшаңыздың пайдаланушылары — құрастыратын құралдағы аккаунтыңыздан бөлек.
- Кіруде жиілікті шектеудің болмауы. Онсыз шабуылдаушылар құпиясөздерді шексіз қарап шығады.
AI құрастырушыдан не сұрау керек
- «[танымал кітапхананы немесе провайдерді] пайдаланып тіркелу мен кіруді қосыңыз. Өз құпиясөз хэштеуін жазбаңыз.»
- «Құпиясөздерді bcrypt немесе Argon2 арқылы хэштеп сақтаңыз.»
- «Сессия үшін HttpOnly, Secure cookie пайдаланыңыз.»
- «Рөлдерді қосыңыз: admin және member. Әр соңғы нүктені және оны кім шақыра алатын рөлдерді тізіңіз.»
- «Пайдаланушылар тек өз жазбаларын оқып, өңдей алатынын серверде қамтамасыз етіңіз. Содан кейін қалай тексергеніңізді көрсетіңіз.»
- «Бір сағатта мерзімі бітетін бір реттік сілтемелермен құпиясөзді қалпына келтіруді қосыңыз.»
- «Кіру әрекеттерінің жиілігін шектеңіз.»
Содан кейін өзіңіз тексеріңіз: екі аккаунт жасап, бірінің деректеріне екіншісі ретінде кіріп көріңіз. Біздің кіруді қосу нұсқаулығы және қауіпсіздік тексеру тізімі тереңірек түсіндіреді.
Mythex-тегі аутентификация
Mythex қосымшаңыздың пайдаланушылары үшін кірген өнімді ұсынбайды; сіз тәсілді таңдайсыз — жобаңыздың деректер қорында сақталатын электрондық пошта мен құпиясөз, немесе хостингтегі провайдердің SDK-сы — және агенттен оны қосуды сұрайсыз. Провайдер кілттері чатта емес, жобаның құпияларында сақталады. Бұл Mythex-тің өзіне қалай кіретініңізден бөлек. Қосымшаға кіруді қосу туралы құжаттама рецептінде бейімдей алатын бастапқы сұраныс бар, ал API дегеніміз не сол серверлік тексерулердің қайда орналасқанын түсіндіреді.
Сұрақтар
Аутентификация мен авторизацияның айырмашылығы неде?
Аутентификация сіздің кім екеніңізді тексереді, мысалы құпиясөзіңізді растау арқылы. Авторизация сіз танылғаннан кейін не істеуге рұқсатыңыз барын шешеді, мысалы әкімші бетін көре аласыз ба немесе басқа адамның брондауын өңдей аласыз ба. Қосымшаларға екеуі де қажет.
OAuth дегеніміз не?
OAuth 2.0 — қосымшаға құпиясөзіңізді көрмей, басқа қызметтегі аккаунтыңызға шектеулі қол жеткізуге мүмкіндік беретін стандарт. «Google арқылы кіру» OpenID Connect-ті пайдаланады — ол OAuth 2.0 негізінде жасалған идентификация қабаты, сондықтан қосымша сіз кім екеніңізді Google-дан біледі.
Қосымшам құпиясөздерді сақтауы керек пе?
Ешқашан оқылатын түрде емес. Егер электрондық пошта мен құпиясөз арқылы кіруді пайдалансаңыз, құпиясөздер Argon2 немесе bcrypt сияқты құпиясөздерге арналған баяу алгоритммен жасалған, тұзы бар хэштер түрінде сақталуы керек. Көп қосымша мәселені провайдердің хостингтегі аутентификация қызметін, әлеуметтік кіруді немесе электрондық пошта сілтемелерін пайдаланып айналып өтеді.
Сессиялар ма, токендер ме — қосымшам қайсысын пайдалануы керек?
Екеуі де жұмыс істейді. Сессия кіру күйін серверде сақтайды және браузерге cookie ішінде кездейсоқ ID береді, оны оңай күшін жоюға болады. JWT сияқты токен қол қойылған ақпаратты өзінде алып жүреді, бұл API мен мобильді клиенттерге сай келеді, бірақ мерзімі бітпестен бұрын тоқтатуы қиынырақ. Әдеттегі веб-қосымша үшін cookie негізіндегі сессиялар сенімді әдепкі таңдау.