Middle
OAuth аутентификациясы эмне жана ал кандай иштейт?
sobes.tech AI
AIден жооп
OAuth — бул ачык стандарт авторизация үчүн. Ал колдонуучу үчүн башка кызматта (ресурс серверде) сакталган өзүнүн маалыматтарына чектелген жеткиликтүүлүккө уруксат берүү мүмкүнчүлүгүн берет, бул колдонмого өзүнүн логин/паролун берүү зарылчылыгынсыз.
OAuth иштөө негизделген "жарактуулук токендерин" берүүдө, ал эми негизги агым төмөнкүчө көрүнөт:
- Авторизация сураныч: Колдонуучу үчүнчү колдонмодо аракет кылып жатат, ал ресурстук серверден маалымат алууга муктаж. Колдонмо авторизация серверине сураныч жиберет.
- Авторизация серверине багыттоо: Колдонуучу авторизация серверинин барагына багытталат.
- Колдонуучуну аутентификациялоо: Колдонуучу авторизация серверинде аутентификацияланат (эгер ал дагы деле аутентификацияланбаган болсо).
- Колдонуучунун макулдугу (Consent): Авторизация серверу колдонуучудан анын маалыматтарына белгилүү бир деңгээлдеги жеткиликтүүлүк берүү үчүн уруксат сурайт. Колдонуучу макулдугун берет же четке кагат.
- Авторизация коду чыгаруу: Эгер колдонуучу макул болсо, авторизация сервери колдонуучуну кайра үчүнчү колдонмоңузга багыттап, "авторизация коду" берет.
- Авторизация кодун жеткиликтүү токенге алмаштыруу: Ал эми үчүнчү колдонмо, ал кодду алган соң, авторизация серверине түздөн-түз сураныч жиберет, ал кодду "жарактуулук токенине" (Access Token) жана мүмкүн болсо "жаңылоо токенине" (Refresh Token) алмаштыруу үчүн. Бул суроо серверлер ортосунда өтөт, колдонуучунун браузеринен көз каранды эмес, бул коопсуздукту жогорулатат.
- Маалыматка жетүү: Үчүнчү колдонмо алынган жеткиликтүүлүк токенин колдонуучу атынан ресурстук серверге суроо-талаптарды аткарат. Ар бир суроо-талапта токен баштамага салынады.
- Токенди текшерүү: Ресурс сервери жеткиликтүүлүк токенин текшерет жана ал жарактуу жана талап кылынган scope-ларга жооп берсе, маалыматка жеткиликтүүлүк берет.
OAuth ар кандай сценарийлер үчүн ылайыктуу бир нече агымдарды (flows) сунуштайт:
- Authorization Code Flow: Эң коопсуз, веб-колдонмолор үчүн колдонулат.
- Implicit Flow: Эскирген, веб-колдонмолор үчүн колдонулган, бирок азыр колдонулбайт.
- Client Credentials Flow: Өзүнүн ресурстарына жетүүчү колдонмолор үчүн, колдонуучусуз.
- Resource Owner Password Credentials Flow: Кошулбайт, колдонуучунун логин/паролун колдонмо аркылуу берүү сунушталбайт.
(Авторизация коду агымынын мисалы)
C#да OAuth реализациясы үчүн, ASP.NET Core Identity сыяктуу китепканалар кеңири колдонулат, ал тургай Google, Facebook сыяктуу провайдерлер менен иштейт, же өзүнүн авторизация серверин түзүү үчүн IdentityServer китепканалары колдонулат.