Müştəri Etibarnamə axını




OAuth 2, tətbiqlərə Facebook, GitHub və DigitalOcean kimi HTTP xidmətlərində istifadəçi hesablarına məhdud giriş imkanı verən avtorizasiya çərçivəsidir. O, istifadəçinin autentifikasiyasını istifadəçinin hesabını saxlayan xidmətə həvalə etməklə işləyir, üçüncü tərəf tətbiqinə istifadəçinin hesabına daxil olmaq imkanı verir. OAuth 2 veb, masaüstü və mobil proqramlarda işləyir.

Bu məqalə proqram tərtibatçıları üçün nəzərdə tutulub və OAuth 2 üçün rolların, icazə növlərinin və ümumi istifadə hallarının icmalını təqdim edir.

OAuth rolları ilə başlayaq!

OAuth rolları

OAuth dörd rol müəyyən edir:

  • Resurs sahibi
  • Müştəri
  • Resurs Serveri
  • Avtorizasiya serveri

Resurs sahibi: İstifadəçi

Resursun sahibidir istifadəçi, icazə verən tətbiq hesabınıza daxil olmaq üçün. Tətbiqin istifadəçi hesabına girişi verilmiş icazə hüquqlarının əhatə dairəsi ilə məhdudlaşır (məsələn, oxumaq və ya yazmaq imkanı).

Resurs/Authorization Server: API

Resurs serveri birbaşa istifadəçi hesablarının qorunan məlumatlarını saxlayır və avtorizasiya serveri verilən məlumatların həqiqiliyini yoxlayır. istifadəçi, və sonra üçün icazə nişanları yaradır tətbiqlər, onun köməyi ilə proqram istifadəçi məlumatlarına daxil olacaq.

Proqram tərtibatçısı baxımından xidmət API eyni vaxtda resurs serveri və avtorizasiya serveri rolunu yerinə yetirir. Bundan sonra bu iki rolu bir hesab edib, adlandıracağıq Xidmət və ya API.

Müştəri: Ərizə

Müştəridir tətbiq hesaba daxil olmaq istəyənlər istifadəçi. Giriş əldə edilməzdən əvvəl tətbiq istifadəçi tərəfindən icazə verilməlidir və icazə API tərəfindən təsdiqlənməlidir.

İndi OAuth-da istifadə olunan rollar haqqında təsəvvürümüz var, gəlin onların bir-biri ilə necə qarşılıqlı əlaqəsinin diaqramına baxaq.

Bu diaqramdakı addımların ardıcıllığının təsvirini nəzərdən keçirin:

  1. Ərizə-dən sorğular istifadəçi resurs serverinə daxil olmaq üçün icazə.
  2. Əgər istifadəçi sorğuya icazə verir, tətbiq icazə qrantı alır.
  3. Ərizə-dən icazə nişanı tələb edir avtorizasiya serveri(API) özü haqqında məlumat və istifadəçidən icazə icazəsi təqdim etməklə.
  4. Tətbiq təsdiqlənibsə və avtorizasiya icazəsi etibarlıdırsa, avtorizasiya serveri(API) proqram üçün giriş nişanı yaradır. Avtorizasiya prosesi tamamlandı.
  5. Ərizə resurs tələb edir resurs serveri(API), autentifikasiya üçün giriş nişanı təmin edərkən.
  6. Əgər nişan etibarlıdırsa, resurs serveri(API) tələb olunan resursu təmin edir tətbiq.

Təsvir edilən prosesdəki faktiki addımlar istifadə edilən icazə icazəsinin növündən asılı olaraq dəyişə bilər, lakin ümumilikdə proses təsvir edilən kimi görünəcək. Sonra, biz avtorizasiya icazələrinin müxtəlif növlərinə baxacağıq.

Ərizə qeydiyyatı

Tətbiqinizdə OAuth-dan istifadə etməyə başlamazdan əvvəl ərizənizi xidmətdə qeydiyyatdan keçirməlisiniz. Bu, xidmətin veb-saytının “developer” və ya “API” bölməsində qeydiyyatdan keçməklə həyata keçirilir, burada aşağıdakı məlumatları təqdim etməlisiniz (ehtimal ki, ərizənizlə bağlı bəzi təfərrüatlar da daxil olmaqla):

  • Tətbiq adı
  • Tətbiq saytı
  • Yönləndirmə URL və ya geri zəng URL

Yönləndirmə URL-i, tətbiqinizin icazəsi (və ya icazənin rədd edilməsi) sonra xidmətin istifadəçini yönləndirəcəyi URL-dir.

Müştəri ID və Müştəri Sirri

Tətbiqi qeydiyyatdan keçirdikdən sonra xidmət müştəri etimadnaməsini yaradacaq - müştəri ID və müştəri sirri. Müştəri identifikatoru tətbiqi müəyyən etmək üçün xidmət API tərəfindən istifadə edilən və istifadəçilər üçün avtorizasiya URL-ləri yaratmaq üçün istifadə edilən ictimaiyyət üçün açıq olan sətirdir. Müştəri sirri tətbiq istifadəçinin hesabına giriş tələb etdikdə tətbiqin kimliyini xidmət API-də təsdiqləmək üçün istifadə olunur. Müştəri sirri yalnız proqrama və API-yə məlum olmalıdır.

Avtorizasiya icazəsi

IN mücərrəd protokol təsviri Yuxarıdakı ilk dörd addım avtorizasiya icazəsi və giriş nişanının yaradılması məsələlərini əhatə edir. Avtorizasiya icazəsinin növü tətbiqin istifadə etdiyi avtorizasiya sorğusu metodundan, həmçinin API tərəfindən hansı icazə növlərinin dəstəkləndiyindən asılıdır. OAuth 2 hər biri müəyyən hallarda faydalı olan dörd fərqli növü müəyyən edir:

  • İcazə kodu: Server tərəfi proqramlarla istifadə olunur.
  • Gizli: Mobil və ya veb proqramlar tərəfindən istifadə olunur (istifadəçinin cihazında işləyən proqramlar).
  • Resurs Sahibi Parol Etibarnamələri: Xidmətin özünün bir hissəsi olan proqramlar kimi etibarlı proqramlar tərəfindən istifadə olunur.
  • Müştəri Etibarnamələri: Tətbiq API-yə daxil olduqda istifadə olunur.

Avtorizasiya icazə növü: Avtorizasiya kodu

Avtorizasiya koduüçün çox uyğun olduğu üçün avtorizasiya icazəsinin ən geniş yayılmış növlərindən biridir server proqramları, tətbiqin mənbə kodu haradadır və müştəri sirri kənar şəxslər üçün əlçatan deyil. Bu vəziyyətdə proses yönləndirməyə əsaslanır, yəni tətbiqin qarşılıqlı əlaqədə olması lazımdır istifadəçi agenti(istifadəçi-agent), məsələn, veb brauzer vasitəsilə və istifadəçi agenti vasitəsilə yönləndirilmiş API icazə kodlarını qəbul edin.

Prosesi diaqramda təsvir edək:

Addım 1: Avtorizasiya kodu ilə əlaqə saxlayın

  • https://cloud.?response_type=code&client_id=CLIENT_ID &redirect_uri=CALLBACK_URL &scope=read
  • : API icazənin son nöqtəsi.
  • müştəri_id=CLIENT_ID: Tətbiq müştəri identifikatoru (bu ID-dən istifadə edərək, API hansı tətbiqin giriş tələb etdiyini başa düşür).
  • redirect_uri=GERİ ZƏNG_URL: avtorizasiya kodunu verdikdən sonra xidmətin istifadəçi agentini (brauzer) yönləndirəcəyi URL.
  • cavab_tipi=kod: Tətbiqin icazə kodundan istifadə edərək giriş tələb etdiyini göstərir.
  • əhatə dairəsi=oxu: proqrama giriş səviyyəsini təyin edir (bu halda, oxumaq imkanı).

Addım 3: Tətbiq icazə kodu alır

Əgər istifadəçi “Tətbiqi avtorizasiya et” seçimini etsə, xidmət istifadəçi agentini (brauzer) müştərinin qeydiyyatı mərhələsində göstərilən yönləndirmə URL-inə yönləndirir (birlikdə avtorizasiya kodu). Link oxşar görünəcək (bu nümunədə proqram “dropletbook.com” adlanır):

  • https://dropletbook.com/callback?code=AUTHORIZATION_CODE

Addım 4: Tətbiq giriş nişanı tələb edir

Tətbiq icazə kodu və autentifikasiya məlumatı (o cümlədən, daxil olmaqla) göndərməklə API-dən giriş nişanı tələb edir. müştəri sirri) xidmət. Aşağıda DigitalOcean tokenini almaq üçün POST sorğusunun nümunəsi verilmişdir:

  • https://cloud.?client_id=CLIENT_ID &client_secret=CLIENT_SECRET &grant_type=authorization_code&code=AUTHORIZATION_CODE &redirect_uri=CALLBACK_URL

Addım 5: Tətbiq giriş nişanı alır

  • ("access_token":"ACCESS_TOKEN ","token_type":"taşıyıcı","expires_in":2592000,"refresh_token":"REFRESH_TOKEN ","scope":"read","uid":100101,"info":( "name":"Mark E. Mark","e-poçt":" [email protected]"}}

Tətbiq artıq icazəlidir! O, nişanın müddəti bitənə və ya nişan ləğv edilənə qədər müəyyən giriş məhdudiyyətləri ilə xidmət API vasitəsilə istifadəçi hesabına daxil olmaq üçün nişandan istifadə edə bilər. Əgər giriş nişanı yeniləmə nişanı yaradılıbsa, köhnə nişanın müddəti bitdikdə ondan yeni giriş tokenləri əldə etmək üçün istifadə oluna bilər.

Avtorizasiya icazə növü: Gizli

Gizli avtorizasiya icazə növü məxfiliyin olduğu mobil və veb proqramlar (veb brauzerində işləyən proqramlar) tərəfindən istifadə olunur. müştəri sirri zəmanət vermək olmaz. Gizli icazə növü həmçinin istifadəçi agentinin yönləndirilməsinə əsaslanır, burada giriş nişanı tətbiqə ötürülmək üçün istifadəçi agentinə ötürülür. Bu da öz növbəsində tokeni istifadəçi və istifadəçinin cihazındakı digər proqramlar üçün əlçatan edir. Həmçinin, bu cür avtorizasiya icazəsi tətbiqin şəxsiyyətini təsdiq etmir və prosesin özü yönləndirmə URL-inə (əvvəllər xidmətdə qeydiyyatdan keçmiş) əsaslanır.

Proses belə gedir: proqram istifadəçidən özünü avtorizasiya etməyi xahiş edir, sonra avtorizasiya serveri giriş nişanını istifadəçi agentinə ötürür, o da nişanı tətbiqə ötürür. Sonra prosesi ətraflı təsvir edəcəyik.

Addım 1: Gizli avtorizasiya bağlantısı

Gizli avtorizasiya icazəsi növü ilə istifadəçiyə API-dən işarə tələb edən bir keçid verilir. Bu keçid soruşduğu istisna olmaqla, əvvəlki metodun linki ilə demək olar ki, eyni görünür (icazə kodu ilə). nişan kod əvəzinə (qeyd edin cavab növü"token"):

  • https://cloud.?response_type=token&client_id=CLIENT_ID &redirect_uri=CALLBACK_URL &scope=read

Addım 2: İstifadəçi proqrama icazə verir

İstifadəçi bir keçidə kliklədikdə, ilk növbədə şəxsiyyətini yoxlamaq üçün daxil olmalıdır (əlbəttə ki, onlar artıq daxil deyilsə). Bundan sonra xidmət istifadəçidən istifadəçi hesabına daxil olmaq üçün tətbiqə icazə verməyi və ya icazə verməməyi təklif edəcək. Belə bir dialoqun nümunəsi aşağıda təqdim olunur:

Addım 3: İstifadəçi agenti yönləndirmə URI-dən giriş nişanı alır

  • https://dropletbook.com/callback#token=ACCESS_TOKEN

Addım 4: İstifadəçi agenti yönləndirmə URI-ni izləyir

İstifadəçi agenti giriş nişanını saxlayarkən yönləndirmə URI-ni izləyir.

Addım 5: Tətbiq giriş nişanının axtarışı skriptini işlədir

Tətbiq istifadəçi agenti tərəfindən saxlanılan tam yönləndirmə URI-dən giriş işarəsini çıxarmaq üçün skriptdən ibarət veb səhifəni qaytarır.

Addım 6: Giriş nişanı tətbiqə ötürülür

İstifadəçi agenti giriş tokeninin çıxarılması skriptini işlədir və sonra çıxarılan nişanı tətbiqə ötürür.

Tətbiq artıq icazəlidir! O, nişanın müddəti bitənə və ya nişan ləğv edilənə qədər müəyyən giriş məhdudiyyətləri ilə xidmət API vasitəsilə istifadəçi hesabına daxil olmaq üçün nişandan istifadə edə bilər.

Avtorizasiya icazəsi növü: resurs sahibinin etimadnaməsi

Bu cür avtorizasiya icazəsi ilə istifadəçi xidmətdəki avtorizasiya məlumatlarını (istifadəçi adı və şifrə) tətbiqi birbaşa təqdim edir. Tətbiq, öz növbəsində, xidmətdən giriş nişanı əldə etmək üçün alınan istifadəçi etimadnaməsini istifadə edir. Bu növ avtorizasiya icazəsi yalnız başqa seçimlər olmadıqda istifadə edilməlidir. Bundan əlavə, bu cür icazə yalnız proqram istifadəçi tərəfindən etibar edildikdə istifadə edilməlidir (məsələn, o, xidmətin özünün və ya istifadəçinin əməliyyat sisteminin bir hissəsidir).

Resurs sahibinin etimadnaməsi ilə proses

İstifadəçi öz etimadnamələrini proqrama təqdim etdikdən sonra proqram avtorizasiya serverindən giriş nişanı tələb edəcək. Nümunə POST sorğusu belə görünə bilər:

  • https://oauth.example.com/token?grant_type=password&username=USERNAME &password=PASSWORD &client_id=CLIENT_ID

Diqqət: DigitalOcean hazırda resurs sahibinin etimadnaməsini istifadə edərək avtorizasiya icazəsi növünü dəstəkləmir, ona görə də yuxarıdakı link xəyali avtorizasiya serverinə “oauth.example.com” işarə edir.

Avtorizasiya icazəsi növü: Müştəri etimadnaməsi

Müştəri etimadnamələrinin icazəsi növü proqrama öz xidmət hesabına daxil olmağa imkan verir. Bu, məsələn, proqram öz xidmət qeydiyyatı məlumatını yeniləmək və ya URI-ni yönləndirmək və ya xidmət API vasitəsilə tətbiqin xidmət hesabında saxlanılan digər məlumatlara daxil olmaq istədikdə faydalı ola bilər.

Müştəri Etibarnamə Prosesi

Tətbiq etimadnamələrini, müştəri ID-sini və müştəri sirrini avtorizasiya serverinə göndərməklə giriş nişanı tələb edir. Nümunə POST sorğusu belə görünə bilər:

  • https://oauth.example.com/token?grant_type=client_credentials&client_id=CLIENT_ID &client_secret=CLIENT_SECRET

Diqqət: DigitalOcean hazırda müştəri etimadnaməsi icazəsi növünü dəstəkləmir, ona görə də yuxarıdakı link xəyali avtorizasiya serverinə “oauth.example.com” işarə edir.

Giriş nişanından istifadə nümunəsi

Tətbiq giriş nişanı aldıqdan sonra o, nişanın müddəti bitənə və ya nişan ləğv edilənə qədər göstərilən giriş məhdudiyyətləri ilə xidmətin API vasitəsilə istifadəçi hesabına daxil olmaq üçün həmin nişandan istifadə edə bilər.

Aşağıda curl istifadə edərək API sorğusunun nümunəsi verilmişdir. Qeyd edək ki, o, giriş nişanını ehtiva edir:

  • curl -X POST -H "İcazə: Daşıyıcı ACCESS_TOKEN "" https://api.site/v2/$OBJECT "

Giriş nişanı etibarlıdırsa, API qəbul edilmiş sorğunu emal edəcək. Əgər giriş nişanının vaxtı keçibsə və ya nişan etibarsızdırsa, API “invalid_request” xətası qaytaracaq.

Token yeniləməsinə daxil olun

Giriş nişanının müddəti bitdikdən sonra ondan istifadə edən bütün API sorğuları “Yanlış Token Xətası” qaytaracaq. Əgər giriş nişanı yaradan zaman yeniləmə nişanı da yaradılıbsa, sonuncu avtorizasiya serverindən yeni giriş nişanı əldə etmək üçün istifadə edilə bilər.

Aşağıda yeni giriş nişanı əldə etmək üçün giriş nişanını yeniləmək üçün işarədən istifadə edən POST sorğusunun nümunəsi verilmişdir:

  • https://cloud.?grant_type=refresh_token&client_id=CLIENT_ID &client_secret=CLIENT_SECRET &refresh_token=REFRESH_TOKEN

Nəticə

Bununla, OAuth 2 ilə bağlı icmalımız yekunlaşır. İndi OAuth 2-nin necə işlədiyi və mövcud icazə icazəsi növlərinin nə vaxt və necə istifadə edilməsi haqqında əsas anlayışınız var.

OAuth 2 haqqında daha çox öyrənmək istəyirsinizsə, aşağıdakı məqalələri nəzərdən keçirməyi məsləhət görürük.

Müştərilərinin qayğısına qalaraq, Invola xidmət komandası OAuth 2.0 texnologiyasından istifadə edərək poçtla birbaşa əlaqə yaratdı.

Bu yazıda bunun nə olduğunu, necə işlədiyini və istifadəçi məlumatlarının təhlükəsizliyinə necə təsir etdiyini sizə xəbər verəcəyik.
Biz texnologiyanın mahiyyətini sadə və adi istifadəçilər üçün başa düşülən dildə çatdıraraq bir sıra texniki məqamları buraxacağıq.

Xidmətin daimi istifadəçiləri bəzən bunun necə olduğunu bilirlər Dublikat e-poçtdan istifadə etmək əlverişsizdir, tez-tez ona başqa bir məktub göndərməyi unudur. Məktublar aldıq ki, bizdən faktura və kommersiya alqoritmini birbaşa poçtla əlaqənin xeyrinə yenidən nəzərdən keçirək.

Proqramçı və təhlükəsizlik mütəxəssisi tərəfindən bir neçə həftə səmərəli işdən sonra avtorizasiya alqoritmi həyata keçirilir və indi əsas əlaqə üsuludur müştərilərə xidmət göstərmək.

OAuth nədir?

Quru texniki dildə danışsaq, bu, bir xidmətə (bu halda Invola) başqa bir xidmətdə (poçta giriş) istifadəçi resurslarına daxil olmaq hüququ verməyə imkan verən icazə protokoludur.

İstifadəçinin proqrama etibar etmək üçün daha çox səbəbi var, çünki istifadəçi şəxsi məlumatlarına icazəsiz girişin mümkün olmadığına əmin ola bilər. İstifadəçinin loqini və parolu olmadan, tətbiqi həyata keçirə biləcək yalnız olanlar tədbirlər data ilə istifadəçinin icazə verdiyi, və başqaları yoxdur.

Sadə dillə desək, bunu deyə bilərik: Invola xidməti login və parol tələb etmədən, lakin giriş hüququnu tələb etmədən hesab-fakturaları və kommersiya təkliflərini almaq üçün poçtunuza qoşulur. Təsdiq etsəniz, proqram istifadəçinin özü tərəfindən ləğv edilənə qədər və ya proqram mövcud olduqda və aktiv olduqda giriş əldə edir.

Invola və poçt serveri arasında əlaqə bir saatdan sonra avtomatik olaraq başa çatan və lazım olduqda yenilənən (istifadəçinin müdaxiləsi olmadan, Invola proqramı tərəfindən avtomatik olaraq) yenilənən giriş nişanından (4-5-ci addım) istifadə edir.

İndi təhlükəsizlik və niyə haqqında danışaq OAuth avtorizasiyasına giriş/parol identifikasiyasına üstünlük verilir.

Hesabınıza (mail.ru, gmail.com) daxil olmaq üçün hər hansı bir xidmət təqdim etdikdə, siz faktiki olaraq bütün hesab üçün parol təqdim etmiş olursunuz (bu yolla siz, məsələn, diskə, foto albomlara və digər şəxsi məlumatlar).

OAuth vasitəsilə girişin verilməsi sən özün hansı resurslara daxil olduğunuza nəzarət edin hesab giriş verirsiniz. Involaya qoşulduqda tələb olunan hüquqların nümunəsinə baxaq:

"Poçta baxın və idarə edin" - fakturaların və CP-nin avtomatik qəbulu üçün," ünvana baxmaq" – qutunun e-poçt ünvanını əldə etmək üçün," profilə baxın" – istifadəçi adı əldə etmək üçün (qeydiyyat mərhələsində tələb olunur).

Təəssüf ki, bütün poçt serverləri deyil(korporativ daxil olmaqla) dəstək icazəsi texnologiya ilə OAuth, xüsusən də məşhur Yandex.Mail xidməti. Əgər poçtunuz Yandex-dədirsə, hazırda xidmətimizə yalnız giriş parolunuzdan istifadə etməklə qoşula bilərsiniz.

Təhlükəsizlik haqqında bir az.

Biz konfidensial məlumatların sızmasının və ya müştərilər, maliyyə əməliyyatları və şəxsi yazışmalar haqqında məlumatlara icazəsiz girişin biznes üçün nə qədər kritik olduğunu çox yaxşı başa düşürük. Məlumatların təhlükəsizliyi işimizin əsas prioritetlərindən biridir.

Giriş tokenləri, eləcə də poçta daxil olmaq üçün parollar dinamik açarlara əsaslanan kriptoqrafik sxemdən istifadə etməklə təhlükəsiz ayrılmış verilənlər bazası serverində saxlanılır.

Nəticə olaraq qeyd etmək yerinə düşər ki, əməkdaşlarımızın heç bir halda poçt serverlərinə və istifadəçilərimizin yazışmalarına giriş imkanı yoxdur.

Bütün kommunikasiyalar istifadəçi ilə xidmət arasında, eləcə də xidmət və poçt serveri arasında təhlükəsiz SSL kanalı üzərindən həyata keçirilir, başqa sözlə, hər iki istiqamətdə ötürülən bütün məlumatlar güclü kriptoqrafik alqoritmlə şifrələnir.

Əgər biznesiniz varsa və müştərilərinizə çoxlu faktura və təkliflər göndərirsinizsə, o zaman sadəcə sistemimizi sınamalısınız. Invola avtomatik xəbərdarlıqlar göndərir, fakturada heç bir cavab olmadıqda, həmçinin müştərilərinizin hesab-fakturalara reaksiyasına nəzarət edir (bahalı, uzun çatdırılma müddəti və s.). Nəticə olaraq ödənişli veksellərin payında artım əldə edirsiniz, həmçinin menecerlərinizin fəaliyyəti və tez-tez imtina səbəbləri haqqında statistik məlumat toplamaq imkanınız var.


  1. Daxili brauzerin giriş səhifəsi ilə açılması
  2. İstifadəçidən hüquqların verildiyini təsdiqləməsi xahiş olunur.
  3. İstifadəçi razılaşarsa, brauzer URL-i əlavə edilən fraqmentdə (#-dan sonra) qaralama səhifəsinə yönləndirilir. giriş nişanı
  4. Tətbiq yönləndirməni kəsir və qəbul edir giriş nişanı səhifənin ünvanından
Bu seçim proqramda brauzer pəncərəsinin qaldırılmasını tələb edir, lakin server hissəsini və mübadilə üçün əlavə serverdən serverə zəng tələb etmir. avtorizasiya kodu haqqında giriş nişanı.
Misal
Giriş səhifəsi ilə brauzeri açın:
> GET /oauth/authorize?response_type=token&client_id=464119 HTTP/1.1 > Host: connect.mail.ru

İstifadəçi icazələr verdikdən sonra, Mail.Ru üçün bu, standart qaralama səhifəsinə yönləndirmə baş verir. connect.mail.ru/oauth/success.html:
< HTTP/1.1 302 Found < Location: http://connect.mail.ru/oauth/success.html#access_token=FJQbwq9&token_type=bearer& expires_in=86400&refresh_token=yaeFa0gu

Tətbiq sonuncu yönləndirməni kəsməli və ünvandan əldə etməlidir access_token və qorunan resurslara daxil olmaq üçün istifadə edin.

Giriş və şifrə ilə avtorizasiya

Loqin və şifrə ilə avtorizasiya sadə POST sorğusudur və nəticədə o, geri qaytarılır giriş nişanı. Bu sxem yeni bir şey deyil, lakin ümumilik üçün standarta daxildir və yalnız digər icazə seçimləri mövcud olmadıqda istifadə üçün tövsiyə olunur.
Misal
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Məzmun növü: application/x-www-form-urlencoded > > grant_type=password&client_id=31337&client_secret=deadbeef&username=api@corp.mail.ru& password= qwerty< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"SlAV32hkKG", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"8xLOxBtZp8", < }
Spesifikasiyada təsvir

Əvvəlki icazənin bərpası

Adətən, giriş nişanı məhdud saxlama müddəti var. Bu, məsələn, açıq kanallar üzərindən ötürülürsə, faydalı ola bilər. Müddəti bitdikdən sonra istifadəçini daxil olmağa məcbur etməmək üçün giriş nişanı"və yuxarıda göstərilən bütün variantlarda əlavə olaraq giriş nişanı"Bəlkə yenidən qayıdın tokeni təzələyin. Almaq üçün istifadə edə bilərsiniz giriş nişanı giriş və paroldan istifadə etməklə avtorizasiyaya bənzər bir HTTP sorğusundan istifadə etməklə.
Misal
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Məzmun növü: application/x-www-form-urlencoded > > grant_type=refresh_token&client_id=31337&client_secret=deadbeef&refresh_token=8xLOxBtZp8< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"Uu8oor1i", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"ohWo1ohr", < } |

OAuth 2, tətbiqlərə istifadəçi hesablarına məhdud HTTP girişi verən avtorizasiya protokoludur. O, istifadəçi autentifikasiyasını hesabları saxlayan və üçüncü tərəf proqramlarına icazə verən xidmətə ötürür və onlara istifadəçi hesabına giriş imkanı verir. OAuth 2 veb proqramlar və mobil cihazlar üçün avtorizasiya təmin edir.

Bu təlimat sizi OAuth 2 rolları, icazə növləri, axınları və OAuth 2 üçün istifadə halları ilə tanış edəcək.

OAuth rolları

OAuth-da dörd rol var:

  1. Resurs sahibi
  2. Müştəri
  3. Resurs Serveri
  4. Avtorizasiya serveri

Gəlin hər bir rola daha ətraflı baxaq.

Resurs sahibi: istifadəçi

Resurs sahibi öz hesabına giriş əldə etmək üçün tətbiqin autentifikasiyasını həyata keçirən istifadəçidir.

Tətbiq icazələrdən istifadə edərək istifadəçi hesabına girişi məhdudlaşdırır (yəni müəyyən bir hərəkəti yerinə yetirmək hüququ: oxumaq, yazmaq və s.).

Resurs və avtorizasiya serveri: API

Resurs serveri təhlükəsiz istifadəçi hesablarını saxlayır və avtorizasiya serveri istifadəçinin etimadnaməsini yoxlayır və sonra proqrama giriş nişanları verir.

Proqram tərtibatçısının nöqteyi-nəzərindən xidmət API-si resurs serveri və avtorizasiya serveri rollarını yerinə yetirir. Aşağıda biz bu rollara xidmət və ya API kimi istinad edəcəyik.

Müştəri: proqram

Müştəri istifadəçinin hesabına daxil olmaq istəyən proqramdır. Bunu etməzdən əvvəl istifadəçi tətbiqdə avtorizasiyaya malik olmalıdır və API avtorizasiyanı təsdiqləməlidir.

Protokol axınları

OAuth rolları bir-biri ilə aşağıdakı kimi qarşılıqlı əlaqədədir:

  • Tətbiq xidmət resurslarına giriş əldə etmək üçün istifadəçidən icazə tələb edir.
  • Tətbiqin tələbi ilə istifadəçiyə icazə verilirsə, proqram icazələr alır.
  • Tətbiq avtorizasiya serverindən (API) giriş nişanı tələb edir.
  • Tətbiq autentifikasiya olunubsa və onun etimadnamələri etibarlıdırsa, avtorizasiya serveri (API) ona giriş nişanı verir. Avtorizasiya tamamlandı.
  • Tətbiq resurs serverindən (API) resurs tələb edir və autentifikasiya üçün giriş nişanı təqdim edir.
  • Giriş nişanı etibarlıdırsa, resurs serveri (API) proqram üçün resurslara xidmət edir.

Ərizə qeydiyyatı

Tətbiqdə OAuth-dan istifadə etməzdən əvvəl proqramı qeydiyyatdan keçirməlisiniz. Bu, xidmətin veb saytının Tərtibatçı və ya API bölməsindəki qeydiyyat forması vasitəsilə həyata keçirilir, burada aşağıdakı məlumatları təqdim etməlisiniz:

  • Proqram adı;
  • Tətbiq veb-saytı;
  • Geri çağırış URL-i və ya yönləndirmə URI-si (burada xidmət istifadəçi avtorizasiyadan keçdikdən (və ya uğursuz) sonra onu yönləndirəcək; tətbiqin bu hissəsi icazə kodlarını və ya giriş nişanlarını idarə edəcək).

Müştəri ID və gizli açar

Tətbiqi qeydiyyatdan keçirdikdən sonra xidmət sizə müştəri identifikatoru və müştəri sirri sahələrində tapıla bilən ərizə etimadnaməsini təqdim edəcək. Müştəri ID-si tətbiqi müəyyən etmək üçün xidmət API tərəfindən istifadə edilən ictimai sətirdir; avtorizasiya URL-lərini yaratmaq üçün də istifadə olunur. Müştəri Sirri xidmət API-yə istifadəçi hesabına giriş tələb etdikdə tətbiqin autentifikasiyasına imkan verir. Bu həssas məlumatlar proqram və API arasında saxlanılır.

Avtorizasiya İcazələri

Avtorizasiya icazələri tətbiqin avtorizasiya tələb etmək üçün istifadə etdiyi üsuldan, həmçinin API tərəfindən dəstəklənən icazələrin növlərindən asılıdır. OAuth 2 hər biri müxtəlif hallarda faydalı olan dörd növ icazəni müəyyən edir:

  1. Doğrulama Kodu: Server tərəfindəki proqramlarda istifadə olunur.
  2. Gizli giriş: Veb və mobil proqramlarda istifadə olunur (istifadəçinin cihazında işləyən proqramlar).
  3. Müştəriyə parolun verilməsi: Təhlükəsizliyi məlum olan proqramlarda istifadə olunur (məsələn, xidmətə məxsus proqramlar).
  4. Müştəri imtiyazları: tətbiq API-yə giriş.

təsdiqedici kod

Doğrulama kodu mənbə kodunun qapalı olduğu və Müştəri Sirrinin kənar şəxslər üçün əlçatan olmadığı server tərəfi proqramlar üçün optimallaşdırılmış ən ümumi səlahiyyət növüdür. Bu axın yönləndirməyə əsaslanır, yəni proqram istifadəçi agenti (yəni istifadəçinin veb brauzeri) ilə qarşılıqlı əlaqə qura bilməli və istifadəçi agenti vasitəsilə yönləndirilən API icazə kodlarını qəbul etməlidir.

Təsdiq kodu axını belə görünür:

  1. İstifadəçi təsdiq koduna keçid alır.
  2. İstifadəçi icazəlidir. Linkə klikləməklə istifadəçi məlumatların həqiqiliyini təsdiq edir. Təqdim olunan məlumatlar səhv olarsa, istifadəçiyə icazə verilməyəcək.
  3. Tətbiq doğrulama kodu alır. Xidmət istifadəçi agentini yoxlama kodu ilə birlikdə müştəri qeydiyyatdan keçərkən müəyyən edilmiş URI-yə yönləndirir.
  4. Tətbiq, müştəri sirri daxil olmaqla, yoxlama kodu və avtorizasiya məlumatlarını təmin edən API-dən giriş nişanı tələb edir.
  5. Tətbiq icazə etibarlıdırsa, giriş nişanı alır.

Gizli giriş axını

Gizli giriş axını müştəri sirrinin məxfiliyinə zəmanət verilə bilməyən mobil proqramlar və ya veb proqramlar tərəfindən istifadə olunur. Bu axın həm də yönləndirməyə əsaslanır, lakin istifadəçi agenti giriş nişanını alır və sonra onu tətbiqə ötürür. Bu yolla o, istifadəçiyə və ya istifadəçinin cihazındakı digər proqramlara görünə bilər. Bundan əlavə, bu axın tətbiqin autentifikasiyasını yoxlayır, bunu URI-dən (xidmətdə qeydiyyatdan keçmiş) istifadə edərək edir.

Yeniləmə nişanları gizli giriş üçün dəstəklənmir.

Gizli giriş axını əsasən belə işləyir: istifadəçidən proqrama daxil olmaq tələb olunur, avtorizasiya serveri giriş nişanını istifadəçi agentinə ötürür, o da onu proqrama ötürür. Daha ətraflı olaraq bu proses belə görünür:

  1. İstifadəçi API-dən nişan tələb edən gizli giriş linki alır.
  2. İstifadəçi linkə klikləməklə icazə verilir. İstifadəçi daxil ola bilmirsə, ona giriş qadağan ediləcək.
  3. İstifadəçi agenti giriş nişanı və Yönləndirmə URI-si alır.
  4. İstifadəçi agenti Yönləndirmə URI-ni izləyir.
  5. Tətbiq giriş nişanını əldə etmək üçün skript göndərir. Tətbiq Yönləndirmə URI-dən giriş nişanını çıxara bilən skripti olan veb səhifəni qaytarır.
  6. Tətbiq giriş nişanı alır. Avtorizasiya tamamlandı.

Müştəriyə parolun verilməsi

Bu növ istifadəçinin etimadnamələri birbaşa tətbiqə ötürməsini nəzərdə tutur ki, bu da onlardan giriş nişanı əldə etmək üçün istifadə edir. Bu növ yalnız avtorizasiya serverində dəstəklənməlidir. Bundan əlavə, o, yalnız proqrama etibar etmək mümkün olduqda istifadə edilməlidir (məsələn, o, xidmətə və ya istifadəçinin əməliyyat sisteminə aiddir).

İstifadəçinin etimadnaməsini aldıqdan sonra proqram avtorizasiya serverindən giriş nişanı tələb edir. Etibarnamələr düzgündürsə, avtorizasiya serveri giriş nişanı təqdim edəcək. Avtorizasiya tamamlandı.

Müştəri etimadnaməsi

Bu növ proqrama öz xidmət hesabına qoşulmağa imkan verir. Tətbiq qeydə alınmış təsviri yeniləmək və ya URI-ni yönləndirmək və ya xidmət hesabında saxlanılan digər məlumatlara daxil olmaq istəsə, bu axın faydalıdır.

Tətbiq etimadnamələrini, müştəri identifikatorunu və müştəri sirrini göndərməklə giriş nişanı tələb edir. . Etibarnamələr düzgündürsə, avtorizasiya serveri giriş nişanı təqdim edəcək. Avtorizasiya tamamlandı.

Giriş nişanlarından istifadə

Tətbiq giriş nişanı aldıqdan sonra API vasitəsilə istifadəçinin hesabına daxil olmaq üçün ondan istifadə edə bilər.

Token etibarlıdırsa, API sorğunu emal edir. Token etibarsızdırsa, API invalid_request xətası atacaq.

Yenilənə bilən işarə ilə axın

Giriş nişanının müddəti bitdikdən sonra API invalid_request xətası verəcək. Tətbiq giriş nişanı ilə birlikdə yeniləmə nişanı alıbsa, o, indi avtorizasiya serverindən yeni giriş nişanı tələb etmək üçün ondan istifadə edə bilər.

İndi OAuth 2-nin əsasları ilə tanışsınız.

Etiketlər: ,