Czym jest OAuth Connect i jak z niego korzystać
Wielu z nas kontaktuje się z OAuth podczas przeglądania Internetu, a większość z nas nie jest nawet świadoma jego istnienia. OAuth (Open Authentication) to system, który zapewnia stronom trzecim dostęp do kont użytkowników, np. Konta Twitter lub Facebook. Pozwala odwiedzającym na interakcję w obrębie witryny bez konieczności rejestracji nowego konta lub zwalniania nazwy użytkownika i hasła osobom trzecim.
W tym przewodniku chciałbym przedstawić koncepcję OAuth i jej zastosowanie do programistów. W implementację własnej aplikacji OAuth jest wiele szczegółów technicznych. Mój przykład zostanie napisany w PHP za pomocą otwieracza biblioteki Twittera, ale możesz użyć prawie dowolnego popularnego API programowania od Pythona do Ruby lub Objective-C.
Nawet jeśli koncepcja wydaje się tajemnicza, spróbuj przetrawić jak najwięcej. Wciąż jest to bardzo tajemnicza technologia, która została właśnie opracowana w 2007 roku. Z pewnością nie rozumiałem, jak rozwijać pełne połączenia OAuth nawet po kilku pierwszych tutorialach, ale jeśli będziesz się go trzymał, szybko go złapiesz. Teraz najpierw zacznij od rzeczy, małe wprowadzenie!
Jakie problemy możemy rozwiązać?
Jeśli weźmiesz pod uwagę, o ile więcej łączy się Internet, sens ma tylko to, że użytkownicy będą chcieli udostępniać informacje między wieloma kontami z Facebooka na Twitterze, Tumblrze, Foursquare, a teraz nawet do aplikacji mobilnych, takich jak Path lub Instagram. Problem, przed którym obecnie stoimy, polega na tym, jak to osiągnąć w możliwie najbezpieczniejszy i najprostszy sposób. OAuth 1.0 to próba rozwiązania tego i wielu innych problemów w porównaniu ze starszymi standardami OpenID. Użytkownicy nadal wprowadzają swoją nazwę użytkownika / hasło do innych stron internetowych osób trzecich, aby połączyć się z OpenID. To nie czyni go bezpieczniejszym dla użytkownika. W specyfikacjach OAuth użytkownik nigdy nie musi przechowywać żadnych danych konta osobistego w bazie danych osób trzecich.
(Źródło zdjęcia: Martin Hassman)
Dzięki OAuth główny dostawca konta (np. Twitter, Facebook) najpierw przekieruje Cię (użytkownika) na stronę autoryzacji. Następnie użytkownik loguje się do sieci głównej, a następnie akceptuje lub odmawia nowego połączenia z witryną strony trzeciej. Technologia jest bezproblemowo łatwa i zawsze możesz autoryzować połączenia z ustawień konta w dowolnym momencie. Zauważ, że twoje hasło nigdy nie jest przekazywane stronie trzeciej, co czyni ten protokół o wiele bezpieczniejszym niż jego odpowiednik.
Jak działa proces
Istnieją 3 strony, które należy rozważyć w standardowym połączeniu OAuth:
- Dostawca usługi - Główna sieć, z której próbujesz pobrać dane. Dostarczają odpowiedzi API, takie jak nazwa użytkownika, zdjęcie profilu, adres URL witryny i inne rzeczy.
- Konsument - Aplikacja innej firmy szukająca danych. Byłaby to strona internetowa lub aplikacja mobilna, która wykonuje początkowe żądanie połączenia, a następnie obsługuje dane zwrotne po autoryzacji.
- Użytkownik - Osoba siedząca za komputerem współdziałająca ze stronami internetowymi, którymi byłbyś ty!
Celem OAuth nie jest zapewnienie konkretnej biblioteki do użytku przez strony internetowe. Właściwie ustawia “zasady” do budowy otwartego protokołu API. Tak więc wszyscy możemy skorzystać z tej technologii, ale w rzeczywistości deweloperzy naprawdę zainteresują się tą dziedziną. Jeśli potrzebujesz więcej informacji, sprawdź poprawioną edycję wersji 1.0 wydaną w kwietniu 2010 roku.
W obliczu bezpieczeństwa
Cały proces wymaga ostatecznie 2 różnych kluczy wraz z tokenem dostępu. Klucze są dostarczane przez usługę root po zarejestrowaniu aplikacji - są one znane jako twoje klient i tajny identyfikator. Identyfikator klienta jest zazwyczaj przekazywany do adresu URL uwierzytelniania, aby serwer mógł rozpoznać Twoją aplikację.
Tajny identyfikator jest przechowywany w kodzie, aby serwer mógł zweryfikować tożsamość Twojej aplikacji. Podobnie zdalny serwer dopasuje Twój sekretny identyfikator do własnego, dzięki czemu nie będziesz przez pomyłkę wysyłać żądania twittera do interfejsu API Facebooka lub odwrotnie. Jeśli użytkownik autoryzuje połączenie, a wszystkie klucze się zgadzają, są zwracane na twoją stronę z długim kodem losowych liczb i liter.
Ten kod służy do generowania nowego token dostępu. Zachowują się one podobnie do zmiennej sesji, którą można przechowywać w pliku cookie, aby użytkownik był zalogowany do witryny. Jedyną różnicą jest to, że wiele usług odeśle token dostępu i tajny token dostępu. Prawdopodobnie będziesz potrzebował obu tych elementów, aby pobrać dane z serwera. Przykładem może być żądanie zdjęcia profilowego użytkownika, aby zapisać kopię na własnej stronie internetowej.
Przykładowa biblioteka Twitter OAuth
Deweloperzy często nie zaczynają od zera, więc dlaczego nie zajrzeć do wcześniej zbudowanej biblioteki? Pozwoli to zaoszczędzić nam czas i bóle głowy podczas pracy z PHP. Przyjrzyjmy się budowie naprawdę prostego przykładu na szczycie API Twittera.
Gorąco polecam Twitter Async autorstwa Jaisen Mathai na GitHub. Działa doskonale, a nawet dostarcza naprawdę prostych kodów przykładowych, na które możemy spojrzeć. Na razie możesz pobrać plik .zip, ale zanim zajrzymy do kodu, musimy się zarejestrować i pobrać nasze identyfikatory aplikacji z Twittera.
Rejestracja nowej aplikacji
Centrum Dev Dev jest świetnym źródłem informacji dla tych, którzy dopiero zaczynają korzystać z API. Został napisany i przepisany wiele razy w ciągu kilku lat. Strona, którą chcemy, to https://dev.twitter.com/apps/new. Poprosi cię o zalogowanie się na początku, a następnie musisz wprowadzić dane uwierzytelniające dla nowej aplikacji.
Nazwa aplikacji i opis są wyświetlane, gdy użytkownik przejdzie do autoryzacji za pomocą Twittera. Twój adres URL jest również ważny dla odróżnienia adresu strony trzeciej. Łatwiej byłoby pracować z domeną na żywo, chociaż można użyć localhost do testowania, ale nie pobudzam tej metody. Zapisanie się do bezpłatnego hosta internetowego i uruchamianie skryptów jest równie łatwe.
Adres URL wywołania zwrotnego jest określany jako miejsce docelowe po zaakceptowaniu lub odrzuceniu autoryzacji przez użytkowników. Twoim zadaniem jako programisty jest odczytanie odpowiedzi z Twittera i wysłanie odpowiedniej wiadomości. W bibliotece Async mamy już pewne dane uwierzytelniające, ale nie będą działać, ponieważ adres URL wywołania zwrotnego jest określony dla zewnętrznego bloga. Jeśli jesteś zainteresowany zbudowaniem w pełni połączonej aplikacji internetowej OAuth, poniżej zamieściłem kilka szczegółowych samouczków.
Sprawdź kod
Jeśli korzystasz ze zdalnego hosta internetowego, możesz rozpakować biblioteki Async i przesłać je do nowego katalogu. W przeciwnym razie możesz po prostu sprawdzić kod źródłowy. Prawdopodobnie i tak nie uda nam się nawiązać nowego połączenia. Ale praktyczne doświadczenie w przesyłaniu i edycji kodu źródłowego jest zawsze procesem uczenia się.
W katalogu głównym znajdziesz skrypt o nazwie simpleTest.php. Wewnątrz jest mnóstwo kodów PHP związanych z bibliotekami OAuth. Nie będę w stanie zebrać tego wszystkiego razem, ale powinniśmy spojrzeć na ważny blok kodu, aby wskazać godne uwagi szczegóły.
Istnieją 4 bardzo ważne zmienne dla klucza konsumenta i identyfikatora tajnego, wraz z identyfikatorem tokena i tajnego tokenu. Nie wszystkie usługi API będą wymagały tego zestawu 4, ale jest to właściwy protokół OAuth. Klasa EpiTwitter wymaga wszystkich 4 wartości jako parametrów i generuje adres URL połączenia na Twitterze.
https://api.twitter.com/oauth/authorize?oauth_token=TOKEN_ID_HERE
Dzięki temu nowemu dynamicznemu adresowi URL możesz utworzyć przycisk logowania dla swoich użytkowników. Spowoduje to skierowanie ich najpierw do bezpiecznej strony Twitter API, na której użytkownik akceptuje lub odrzuca połączenie. Niezależnie od wyboru użytkownik zostaje przekierowany do adresu URL wywołania zwrotnego aplikacji. Cały otwarty protokół ma bardzo czystą perspektywę, która pozwala na szybki rozwój, szczególnie w przypadku bibliotek dostępnych praktycznie w każdym języku.
powiązane linki
- przewodnik hueniverse oauth 1.0
- Delikatne wprowadzenie do OAuth
- FAQ OAuth
- Przewodnik uwierzytelniania na Facebooku
- Proste logowanie OAuth na Twitterze
- Używanie OAuth z Twitterem w Cocoa Objective-C
- Inteligentne korzystanie z OAuth w Railsach
Wniosek
Mam nadzieję, że to wprowadzenie do OAuth zainteresowało Cię w budowaniu aplikacji za pośrednictwem protokołu. Wielu programistów dążyło właśnie do takiego rozwiązania, a OAuth 2.0 może być przyszłością połączonych sieci społecznościowych. Korzystam już z ponad dwudziestu połączeń na moim koncie na Twitterze i jestem pod wrażeniem dokumentacji programisty!
Oczywiście na ten temat jest wiele do powiedzenia. To nie jest coś, co możesz w pełni przetworzyć podczas jednego posiedzenia. Przeglądaj sieć, aby uzyskać więcej rozwiązań OAuth i daj nam znać swoje myśli w obszarze dyskusji poniżej.