Zarządzanie loginem OAuth

Zarządzanie loginem OAuth

Ważne rzeczy, które musisz wiedzieć o OAuth

OAuth to coś, o czym każdy programista musi wiedzieć. Jeśli tworzysz samodzielną aplikację lub aplikację zewnętrzną, która integruje się z inną usługą HTTP, musisz wiedzieć, jak działa OAuth, aby zapewnić użytkownikom łatwe w użyciu i dobrze zintegrowane usługi.

Chodzi o to, aby umożliwić aplikacjach klientów ograniczony dostęp do informacji o użytkowniku bez udostępniania poświadczeń użytkownika lub hasła. OAuth Framework jest odpowiedzialny za wymiany wymagane, zanim aplikacja otrzyma informacje.

Załóżmy, że chcesz zapisać się na dev.do (co jest świetnym miejscem dla programistów do wymiany pomysłów), pozwalają zarejestrować się za pomocą konta Github. Jak to się dzieje? Skąd wiedzą, że posiadasz konto Github, z którym się zapisujesz?

Co ważniejsze, w jaki sposób upewnić się, że dev.do nie przekracza swoich granic, jeśli chodzi o informacje przechowywane w github?

Uczestnicy OAuth

Trzymamy się przykładu wtyczki GitHub Edytora Atom, która umożliwia programistom popychanie kodu do GitHub bezpośrednio za pomocą interfejsu atomu. Powodem tego jako przykładu jest to, że Github nie ukrywa szczegółów za sceną i możesz zobaczyć, co dzieje się pod maską.

Zanim przejdziemy do minutiae pracy Oauth. Przyjmijmy scenę, rozpoznając wszystkich uczestników w giełdzie:

  1. Właściciel lub użytkownik zasobów: Ten użytkownik to ten, do którego należy uzyskać dostęp do informacji o koncie (odczyt i/lub zapisz), aby działał z aplikacją.
  2. Klient: Jest to aplikacja, która szuka Twojej zgody na dostęp do twoich informacji z innej usługi. W naszym przykładzie edytor Atom jest klient.
  3. Ratunek: Zasób to rzeczywiste informacje siedzące na serwerach w jakiejś odległej lokalizacji. Można to uzyskać dostęp za pośrednictwem interfejsu API, jeśli klient otrzymuje odpowiednie uprawnienia.
  4. Serwer autoryzacji: Również połączone z API. Ten serwer jest prowadzony przez usługodawcę (GitHub w naszym przykładzie). Zarówno serwer autoryzacji, jak i serwer zasobów są określane jako interfejs API, ponieważ jest zarządzany przez jeden jednostkę, w tym przypadku github i narażone jako interfejs API dla programisty klientów.

Rejestracja OAuth

Proces rozpoczyna się, gdy opracowywana jest aplikacja kliencka. Możesz przejść do dostawcy zasobów i zarejestrować się w portalu ich dewelopera lub sekcji API na stronie internetowej. Będziesz także musiał podać adres URL zwrotnego, w którym użytkownik zostanie przekierowany po zaakceptowaniu lub odrzuceniu, aby udzielić aplikacji niezbędne uprawnienia.

Na przykład, jeśli przejdziesz do GitHub → Ustawienia → Ustawienia programisty i kliknij „Zarejestruj nową aplikację”. To zapewniłoby ci Identyfikator klienta które można upublicznić i Sekret klienta Które organizacja programistów musi zachować… dobrze w tajemnicy.

Po dostarczeniu identyfikatora klienta i tajemnicy, dewelopera, ty musieć Bądź bezpieczny i bezpieczny, ponieważ nie będzie ich ponownie pokazany przez serwer autoryzacji. To samo dotyczy wszelkich innych tokenów, które zostałyby rzucone (więcej na tokenach później).

OAuth 2 Workflow

Zarejestrowałeś swoją aplikację. Został opracowany i przetestowany, a teraz użytkownicy są gotowi do użycia. Nowy użytkownik podczas rejestracji w usłudze zostanie pokazany opcja „Zaloguj się z GitHub”. To pierwszy krok.

Krok 1: Żądanie autoryzacji

Żądanie autoryzacji jest częścią, w której nowe okno (lub podobny monit) otwiera się z stroną zasobów i prosi użytkowników o zalogowanie się. Jeśli jesteś już zalogowany, na tym urządzeniu, ten krok jest pomijany i po prostu zapytano cię GitHub. Jest to o wiele bardziej przejrzyste w przypadku atomu, ponieważ proszą cię o ręczne przejście na stronę GitHub i udzielić im zgody.

Po wizycie URL poproszono Cię o pozwolenie.

Zwróć uwagę na adres URL, który pokazuje, że jest to strona internetowa bezpieczna (HTTPS) przez Github.Inc. Teraz użytkownik możesz być pewien, że bezpośrednio wchodzisz w interakcje z GitHub. Atom po prostu czeka, całkiem nieźle.

W przeciwieństwie do ATOM, większość aplikacji klientów automatycznie ładuje stronę logowania lub uprawnień. Chociaż jest to bardzo wygodne, można go również niewłaściwie wykorzystać, jeśli aplikacja kliencka zdecyduje się otworzyć link phishingowy. Aby tego uniknąć, musisz zawsze sprawdzić adres URL, do którego jesteś przekierowywany, i upewnić się, że jest to prawidłowy adres URL i używa protokołu HTTPS.

Krok 2: Uzyskanie dotacji autoryzacji

Aby powiadomić klienta ATOM, otrzymasz token (dotację autoryzacji), który jest następnie przesyłany do klienta Atom.

Gdy użytkownik to zrobi, zadanie użytkownika jest zakończone. (W rzeczywistości typowy użytkownik nawet nie jest świadomy gantu upoważnienia. Przykład Githuba został wybrany, aby pokazać, że tak się dzieje).

Krok 3: Uzyskanie tokena dostępu

Dotacja autoryzacji nadal nie jest jednostką, która daje klientowi dostęp do informacji o użytkowniku. To uzyskuje się za pomocą czegoś zwanego tokenem dostępu. Która aplikacja kliencka spróbuje dostać w tym kroku.

Aby to zrobić, klient będzie musiał teraz udzielić dotacji autoryzacji serwerze autoryzacji wraz z dowodem własnej tożsamości. Tożsamość jest weryfikowana przy użyciu identyfikatora klienta i sekretu klienta, które zostały wcześniej przekazane aplikacji klienta.

Weryfikacja tożsamości odbywa się, aby upewnić się, że użytkownik nie jest oszukany w użyciu nikczemnej aplikacji, która udawała, że ​​jest to legalna aplikacja. Na przykład, jeśli ktoś zdecyduje się wymienić swój wykonywalny jako atom o tej samej nazwie, użytkownik logo i funkcjonalności może zostać oszukany, aby uzyskać dostęp do klienta, który może niewłaściwie wykorzystać Twoje informacje. Mogą węszyć, a nawet działać bez twojej zgody. Serwer autoryzacji zapewnia, że ​​klient jest rzeczywiście tym, co wydaje się swoim użytkownikom.

Po zweryfikowaniu tożsamości i przyjęciu dotacji autoryzacji serwer autoryzacji rzuca token do aplikacji klienckiej. Pomyśl o tokenie jako kombinacji zarówno nazwy użytkownika, jak i hasła, które można przekazać serwerze zasobów, aby uzyskać dostęp do określonego zasobu chronionego.

Wreszcie, korzystając z tego tokena, aplikacja może teraz uzyskać dostęp do wymaganych informacji użytkownika i innych zasobów z serwera zasobów.

Zauważ, jak za całą wymianę faktyczną nazwę użytkownika i hasło, gdzie nigdy nie udostępniono klientowi? To jest piękno Oauth. Zamiast podawać nazwę użytkownika i hasła, które zapewniłyby aplikacji cały dostęp do zasobu, zamiast tego używa tokenów. A token może uzyskać tylko ograniczony dostęp do zasobu.

Odwracanie uprawnień

Załóżmy, że stracisz dostęp do urządzenia, w którym autoryzowana aplikacja klienta. Możesz zalogować się do GitHub i przejść do ustawień → Aplikacje → Upoważnione aplikacje OAuth do odwołania dotacji autoryzacji i tokenu dostępu. Będę robić to samo, ponieważ na powyższych zrzutach ekranu dotacja autoryzacji została pokazana publicznie.

Teraz, gdy masz widok na ptasie oko.Możesz przeczytać więcej o dotacjach autoryzacji i innych drobniejszych szczegółach protokołu oraz o tym, jak zawierają połączenia API tutaj.