Sobes.tech
Middle

OAuth autentifikasiyası nədir və necə işləyir?

sobes.tech Süni İntellekt

AI-dan cavab

OAuth açıq standartdır. Bu, istifadəçiyə digər xidmətdə (resurs serverində) saxlanılan məlumatlarına məhdud giriş imkanı verir, bu zaman istifadəçi öz hesab məlumatlarını (giriş/şifrə) həmin tətbiqə ötürmədən.

OAuth-un işləmə prinsipi, giriş məlumatları yerinə "giriş tokenləri"nin verilməsinə əsaslanır. Tipik axın aşağıdakı kimidir:

  1. İcazə istəyi: İstifadəçi üçüncü tərəf tətbiqində, resurs serverinin məlumatlarına giriş tələb edən əməliyyat həyata keçirməyə çalışır. Tətbiq, resurs serverinin icazə serverinə icazə istəyi göndərir.
  2. İcazə serverinə yönləndirmə: İstifadəçi icazə serverinin səhifəsinə yönləndirilir.
  3. İstifadəçinin autentifikasiyası: İstifadəçi, əgər hələ etməyibsə, icazə serverində autentifikasiya olunur.
  4. İstifadəçinin razılığı: İcazə serveri istifadəçidən üçüncü tərəf tətbiqinə müəyyən səviyyədə giriş icazəsi verməsini istəyir (scopes). İstifadəçi razılaşır və ya rədd edir.
  5. İcazə kodunun verilməsi: Əgər istifadəçi razı olsa, icazə serveri istifadəçini yenidən üçüncü tərəf tətbiqinə yönləndirir və "icazə kodu" verir.
  6. İcazə kodunun giriş tokeninə dəyişdirilməsi: Üçüncü tərəf tətbiqi, kodu aldıqdan sonra, birbaşa icazə serverinə sorğu göndərərək bu kodu "giriş tokeni" və istəyə bağlı olaraq "yeniləmə tokeni" ilə dəyişir. Bu sorğu serverlər arasında həyata keçirilir, istifadəçinin brauzeri vasitəsilə deyil, bu da təhlükəsizliyi artırır.
  7. Məlumatlara giriş: Üçüncü tərəf tətbiqi, əldə etdiyi giriş tokenindən istifadə edərək, istifadəçi adından resurs serverinə sorğular göndərir. Hər bir sorğuda token başlıqda göndərilir.
  8. Tokenin doğrulanması: Resurs serveri giriş tokenini doğrulayır və əgər düzgün və tələb olunan scope-larla uyğun gəlirsə, məlumatlara giriş imkanı verir.

OAuth-un müxtəlif axışları (flows) mövcuddur və müxtəlif ssenarilərə uyğundur, məsələn:

  • Authorization Code Flow: Ən təhlükəsiz, server tərəfli veb tətbiqlər üçün istifadə olunur.
  • Implicit Flow: Köhnəlmiş, serversiz veb tətbiqlər üçün istifadə olunur.
  • Client Credentials Flow: Öz resurslarına giriş alan tətbiqlər üçün, istifadəçi resursları deyil.
  • Resource Owner Password Credentials Flow: Tövsiyə edilmir, istifadəçinin giriş məlumatlarını tətbiqə ötürür.

(Authorization Code Flow nümunəsi)

C#-da OAuth-u veb tətbiqlərdə həyata keçirmək üçün, adətən, ASP.NET Core Identity kimi kitabxanalar, müxtəlif provayderlər (Google, Facebook və s.) və ya IdentityServer kimi kitabxanalar istifadə olunur, öz icazə serverinizi yaratmaq üçün.