Middle
Čo je OAuth overovanie a ako funguje?
sobes.tech AI
Odpoveď od AI
OAuth je otvoren štandard за авторизацију. Он омогућава кориснику да пружи ограничени приступ својим подацима који се налазе на другом сервису (ресурсном серверу), без потребе да преноси своје акредитиве (корисничко име/лозинка) тој апликацији.
Рад OAuth-а се заснива на издавању "токена за приступ" уместо акредитива. Типичан ток изгледа овако:
- Захтев за ауторизацију: Корисник покушава да изврши радњу у трећој апликацији која захтева приступ подацима са ресурсног сервера. Апликација иницира захтев за ауторизацију ка серверу за ауторизацију ресурсног сервера.
- Преусмеравање на сервер за ауторизацију: Корисник је преусмерен на страницу сервера за ауторизацију.
- Аутентикација корисника: Корисник се аутентификује на серверу за ауторизацију (ако већ није).
- Сагласност корисника (Consent): Сервис за ауторизацију тражи од корисника дозволу за пружање одређеног нивоа приступа његовим подацима (scopes). Корисник или пристаје или одбија захтев.
- Издавање кода за ауторизацију: Ако се корисник слаже, сервер за ауторизацију пренасмерава корисника назад у трећу апликацију, дајући "код за ауторизацију".
- Обмена кода за ауторизацију за токен за приступ: Трећа апликација, која је добила код за ауторизацију, директно шаље захтев серверу за ауторизацију да замени тај код за "токен за приступ" (Access Token) и по жељи "токен за обнову" (Refresh Token). Овај захтев се извршава између сервера, без учешћа прегледача корисника, што повећава сигурност.
- Приступ подацима: Трећа апликација користи добијени токен за приступ за извршавање захтева ка ресурсном серверу у име корисника. При сваком таквом захтеву, токен се шаље у заглављу.
- Валидирање токена: Ресурсни сервер валидира токен за приступ и, ако је валидан и одговара захтеваним scope-овима, пружа приступ подацима.
OAuth има неколико токова (flows), погодних за различите сценарије, на пример:
- Authorization Code Flow: Најсигурнији, користи се за веб апликације са серверском страном.
- Implicit Flow: Застарео, користио се за веб апликације без серверске стране.
- Client Credentials Flow: За апликације које добијају приступ својим ресурсима, а не корисничким.
- Resource Owner Password Credentials Flow: Не препоручује се, преноси корисничке акредитиве апликацији.
(Пример Authorization Code Flow)
У C# за имплементацију OAuth у веб апликацијама често се користе библиотеке као што су ASP.NET Core Identity са различитим провајдерима (Google, Facebook итд.), или библиотеке IdentityServer за креирање сопственог сервера за ауторизацију.