Jak zatańczyć OAuth: lekcja krok po kroku

Pięć sześć siedem osiem!

Przez większość czasu próbuję nauczyć się czegoś nowego i zastosować to w praktyce, szybko zaczynam czuć się, jakbym zagubił się w niezliczonych ruchach tanecznych. Desperacko staram się znaleźć właściwy sposób na zrobienie czegoś, ale nie bardzo rozumiem, co się dzieje i jak skończyłem po niewłaściwej stronie pokoju ...

Po prostu próbuję rzeczy, dopóki coś nie zadziała.

Może wynika to ze sposobu, w jaki działa mój proces uczenia się, a może przewodniki i samouczki są skierowane do osób bardziej doświadczonych lub technicznych. Ale po tym, jak skończyłem owijać głowę wokół tematu, zawsze mam wrażenie, że powinien istnieć łatwy przewodnik do zrozumienia kluczowych pojęć i ułatwienia ich zastosowania w projekcie.

Więc tym razem postanowiłem przestać marzyć i zrobić to sam, wykorzystując ostatnią rzecz, której się nauczyłem.

I to była OAuth 2.0.

Co to jest OAuth?

Zacznijmy od podstaw: OAuth oznacza otwartą autoryzację. Jest to proces, za pomocą którego aplikacja lub witryna mogą uzyskać dostęp do danych prywatnych użytkowników z innej witryny.

Ta inna strona internetowa zwykle działa tylko jako zaufany dostawca tożsamości. Podaje żądającej aplikacji podstawowe informacje o Tobie, dzięki czemu aplikacja może utworzyć profil. W ten sposób nie musisz wypełniać nudnego formularza rejestracji i zajmować się kolejnym hasłem

Używałeś tego już co najmniej raz, a używałeś go za każdym razem, gdy klikałeś „Zaloguj się przez Facebook / Google / GitHub /…”. Następnie pokazano ekran zgody, który wyświetlał informacje z twojego (powiedzmy) profilu na Facebooku, które pozwalasz tej-hot-new-app.com czytać (a czasem pisać). Następnie, ponieważ that-hot-new-app.com ufa tożsamości podanej przez Facebooka, może utworzyć dla Ciebie profil w swojej bazie danych, korzystając z otrzymanych danych.

Komunikacja między tym-hot-new-app.com a Facebookiem zwykle kończy się tutaj. Dlatego Twoje zdjęcie profilowe nie zmieni się w całym Internecie, jeśli zmienisz je na Facebooku. Po prostu nigdy nie wracają do Facebooka i proszą o zaktualizowane dane.

Kiedy zaczynają się grać rytmy marimba…

Istnieje jeszcze jeden cel, aby zbudować tego rodzaju mechanizm, który ma znacznie większy potencjał: wykorzystanie dostawcy tożsamości jako dostawcy usług (w sposób ciągły). Oznacza to regularną komunikację z użytkownikami w celu zapewnienia ulepszonych funkcji użytkownikom.

Dobrym przykładem tego jest Relive, usługa, która łączy się z różnymi aplikacjami do śledzenia sportu, aby tworzyć filmy z biegu lub jazdy w widoku Ziemi. Za każdym razem, gdy zakończysz działanie, Relive wyświetla monit o zaoferowanie utworzenia z niego filmu. Jeśli powiesz tak, przetworzą go i powiadomią, kiedy będzie gotowy do przechwalania się w mediach społecznościowych ... Mam na myśli udostępnianie

Naprawdę nie ma technicznej różnicy między tymi dwoma zastosowaniami. Dlatego należy zachować ostrożność przy logowaniu za pomocą mediów społecznościowych lub konta Google / Gmail.

Może to zabrzmieć przerażająco, ale naprawdę nie ma się czego bać. Pamiętaj, że zezwalasz na to-hot-new-app.com na dostęp do tych informacji o Tobie, które są wyszczególnione na ekranie zgody, potencjalnie cyklicznie. Pamiętaj o przyznanych uprawnieniach i upewnij się, że wiesz, jak je wyłączyć, gdy nie masz już zaufania.

Na przykład, jeśli używasz konta Google do uzyskiwania dostępu do tej-hot-new-app.com, ale nie chcesz już na to zezwalać, po prostu przejdź do ustawień konta Google i wyłącz ich dostęp.

Wszyscy główni dostawcy tożsamości oferują kontrolę nad tym.

W porządku, ale jak tańczysz OAuth?

Zanim wylądujesz na that-hot-new-app.com, a nawet klikniesz „Zaloguj się za pomocą YourFavoriteIdentityProvider”, ktoś - prawdopodobnie programista - musi utworzyć aplikację na stronie dostawcy.

Jest to sposób na zarejestrowanie that-hot-new-app.com, aby później dostawca wiedział, kto prosi o prywatne dane.

Na tym etapie programista skonfiguruje pewne informacje o aplikacji, takie jak nazwa aplikacji lub witryna internetowa oraz - co najważniejsze - identyfikator URI przekierowania. Dostawca (np. Google lub Facebook) użyje tego, aby skontaktować się z aplikacją proszącą i powiedzieć im, że użytkownik powiedział „tak”

Obiecuję, że nie będziesz musiał pisać tego ręcznie, jesteśmy dumni z naszej braku papieru.

Po zarejestrowaniu aplikacji dostawca przekaże temu-hot-new-app.com identyfikator klienta i klucz klienta, które zostaną wykorzystane w komunikacji między nimi. Działają one jak nazwa użytkownika i hasło do aplikacji.

Identyfikator klienta i identyfikator klienta otrzymasz bezpośrednio po kliknięciu Zapisz aplikację

Bardzo ważne jest, aby przechowywać swój ClientSecret w bezpiecznym miejscu i nie udostępniać go nieznajomym. Jeśli ktoś uzyska do niego dostęp, może poprosić o dane prywatne użytkownika od dostawcy w twoim imieniu, a następnie wykorzystać je do zła!

Nie chcemy tego.

Ręce na talii lub ramionach

Oprócz skonfigurowania tych wszystkich rzeczy programista musi dowiedzieć się, do jakiego rodzaju danych zapewnia dostęp dostawca i jak jest podzielony na segmenty.

Te „segmenty” są znane jako zakresy i określają prawa dostępu, zwykle rozdzielone na kategorie do odczytu / zapisu. Na przykład ten-hot-new-app.com może poprosić o zakresy „profil: odczyt” i „kontakty: odczyt”. Oznacza to, że mogą czytać wszystko, co dostawca przypisuje do segmentów „profil” i „kontakty”. Inne rzeczy nie będą dostępne, na przykład twoje posty lub jakie treści lubisz.

Cóż, dla uproszczenia, powiedzmy, że that-hot-new-app.com to strona internetowa, która integruje się z Typeform, usługą do tworzenia pięknych i inteligentnych formularzy, a także firmą, w której pracuję. Zdecydowanie chcesz mieć teraz najgorętszą rzecz, i to szybko, więc na ich stronie internetowej kliknij „Zaloguj się za pomocą Typeform”, aby przejść od razu do akcji. Co dalej?

Oto domowy, organiczny i wolny od cholesterolu schemat, który można wykorzystać jako mapę całej sprawy. Może to wyglądać na nieco skomplikowane, ale nie martw się, sprawdzimy każdy krok dalej.

Kolorowe nuty przynoszą radość mojemu sercu

Autoryzuj: pierwszy krok w tańcu OAuth

Więc przejmij inicjatywę i kliknij „Połącz z Typeform”. Tutaj, that-hot-new-app.com (odtąd THNA, bo mam już dość pisania słów rozdzielanych myślnikiem) wyśle ​​cię do punktu końcowego autoryzacji Typeform (/ oauth / authorize) i zapewni:

  • ich clientId (pamiętaj, że to nazwa użytkownika THNA)
  • żądane zakresy (lub prawa dostępu)
  • i ich identyfikator URI przekierowania (Typeform już o tym wie, kiedy wszystko konfigurujemy, ale wysyłamy go ponownie jako dodatkową warstwę bezpieczeństwa)

Ten adres URL będzie wyglądał mniej więcej tak:

https://api.typeform.com/oauth/authorize?client_id=yourClientId&scope=accounts:read+forms:read+results:read

Typeform użyje tych informacji do wygenerowania ekranu zgody, w którym możesz sprawdzić, jakie rzeczy autoryzujesz THNA do zobaczenia i zrobienia.

Po dokładnym przeczytaniu tego, na co się zgadzasz i szczęśliwym kliknięciu „Zezwalaj”, Typeform wyśle ​​cię do identyfikatora URI przekierowania tymczasowo, na przykład:

https://that-hot-new-app.com/auth/redirect?code=xxxXXXxxxXXXxxx

Token: potrzeba 2 na tangOAuth

Wszystko to sprawia wrażenie, jakby ktoś zabierał cię na tango, prawda?

Drugim krokiem tańca OAuth jest otrzymanie tego kodu przez THNA i wymiana go na Token OAuth.

Więc THNA bierze ten kod i odsyła go z powrotem do Typeform, wraz z identyfikatorem URI przekierowania (tak, jeszcze raz!) I kluczem tajnym klienta (to hasło aplikacji!).

W nagrodę za dobrze zatańczony taniec THNA dostanie błyszczący Token OAuth , którego może użyć do interakcji z Typeform w imieniu użytkownika, czyli… ciebie!

Zostań ze mną, kołysz się ze mną

Odtąd każde żądanie THNA wysyłane do Typeform w Twoim imieniu będzie musiało zawierać nagłówek autoryzacji z tym tokenem dostępu. Dzięki niej Typeform (lub dowolny inny dostawca) może zidentyfikować:

  • kto prosi o dane (w tym przypadku THNA)
  • kim są dane (ty!)
  • a także upewnij się, że mają odpowiednie uprawnienia dostępu do tych danych (tylko to, na co wyraziłeś zgodę).

Gotowy na parkiet

Teraz, kiedy znasz już wszystkie kroki i techniki tańca OAuth, powinieneś być gotowy do tworzenia własnych choreografii, to znaczy integracji i uczynienia z Internetu jeszcze większego miejsca.

Naprawdę własne rysunki, zdjęcie na okładce Gez Xavier Mansfield na Unsplash.