Programowanie OpenID: Naucz się obsługiwać uniwersalne loginy

Ujawnienie: Twoje wsparcie pomaga utrzymać działanie witryny! Pobieramy opłatę za polecenie niektórych usług, które zalecamy na tej stronie.


OpenID to celowo bezpłatny zdecentralizowany protokół uwierzytelniania. Zapewnia sposób na bezpieczne systemy uwierzytelniania, takie jak Logowanie Google, w celu uwierzytelnienia użytkowników, którzy uzyskują dostęp do stron internetowych i aplikacji stron trzecich. Dzięki OpenID i innym zdecentralizowanym systemom uwierzytelniania blogi osobiste, witryny małych firm i aplikacje mobilne mogą korzystać z bezpiecznych systemów uwierzytelniania zaprojektowanych i wdrożonych przez liderów branży.

Historia OpenID

OpenID urodził się w maju 2005 roku, kiedy Brad Fitzpatrick, założyciel LiveJournal, ogłosił nowy system rozproszonej tożsamości o nazwie Yadis (Yet Another Distributed Identity System). W pierwotnym ogłoszeniu wyjaśniono, że Brad przewidział Yadis jako metodę uwierzytelniania użytkowników LiveJournal na stronach internetowych osób trzecich. Zaledwie kilka dni później Yadis przemianowano na OpenID, gdy domena openid.net została obdarowana do użytku z projektem.

OpenID 1.0 był koncepcyjnym frameworkiem o ograniczonej użyteczności w świecie rzeczywistym. Rozwój nastąpił jednak szybko, a OpenID 2.0 został ogłoszony około rok po uruchomieniu projektu. Przyjęcie OpenID 2.0 było powszechne i szybkie, a na początku 2007 r. Firmy Symantec, Microsoft, AOL i Sun Microsystems były już na pokładzie.

W 2014 roku narodził się OpenID Connect. Nowa generacja OpenID oferuje dwie godne uwagi ulepszenia w porównaniu do OpenID 2.0:

  • Jest zbudowany na solidnych protokołach komunikacji i autoryzacji OAuth 2.0.
  • Jest bardziej przyjazny dla programistów i łatwiejszy do zintegrowania z aplikacjami mobilnymi niż jego poprzednicy.

Kto korzysta z OpenID?

OpenID są wydawane przez wiele popularnych stron internetowych, w tym Google, Yahoo !, Microsoft i PayPal. Gdy zarejestrujesz się w jednej z tych witryn, otrzymasz OpenID. W rezultacie prawdopodobnie masz już jedną, dwie lub garść OpenID, nawet jeśli nie zdajesz sobie z tego sprawy.

Strony internetowe wszystkich typów – witryny e-commerce, blogi, sieci społecznościowe i inne – używają OpenID do uwierzytelniania użytkowników. W rzeczywistości istnieje ponad miliard zarejestrowanych identyfikatorów OpenID i ponad milion witryn i aplikacji, które akceptują identyfikatory OpenID do uwierzytelniania użytkowników.

Jak działa OpenID?

W uwierzytelnianie użytkowników OpenID zaangażowane są trzy strony:

  • Użytkownik końcowy: Osoba, która chce się uwierzytelnić – to znaczy zalogować się – do witryny lub aplikacji.
  • Część zależna (RP): Witryna lub aplikacja, która wymaga uwierzytelnienia użytkownika i korzysta z protokołu OpenID do komunikacji z podmiotem zewnętrznym w celu uwierzytelnienia użytkowników końcowych.
  • Dostawca tożsamości (IDP): Usługa innej firmy, taka jak Google, która rejestruje OpenID i zapewnia usługi uwierzytelniania OpenID.

Po zdefiniowaniu tych trzech stron, oto jak działa OpenID:

  1. Użytkownik końcowy twierdzi, że OpenID rejestruje konto w IDP.
  2. IDP tworzy adres URL OpenID dla użytkownika końcowego. Ten adres URL jest unikalny dla użytkownika końcowego i roszczenie o własność adresu URL wymaga, aby użytkownik końcowy zalogował się do systemu IDP. Na przykład, jeśli używasz Google jako dostawcy IDP, utworzą one adres URL Google+ w Twoim imieniu, który służy jako Twój adres URL OpenID, i musisz zalogować się na swoje konto Google, aby zweryfikować własność tego adresu URL.
  3. Użytkownik końcowy odwiedza OpenID RP i wybiera opcję rejestracji konta, logując się przy użyciu zewnętrznego dostawcy tożsamości, takiego jak Google.
  4. Użytkownik końcowy jest przekierowywany do zewnętrznego dostawcy tożsamości i proszony o potwierdzenie własności adresu URL OpenID po zalogowaniu.
  5. Jeśli użytkownik końcowy zostanie pomyślnie uwierzytelniony przez IDP, IDP odsyła unikalny adres URL OpenID do RP, a RP rejestruje nowego użytkownika z tym adresem URL.

W żadnym momencie RP nie otrzymuje hasła użytkownika końcowego. Dzięki temu RP nie muszą się martwić o bezpieczne przechowywanie haseł użytkowników. IDP obsługuje uwierzytelnianie, a następnie potwierdza tożsamość użytkownika końcowego dla RP za pomocą adresu URL OpenID użytkownika końcowego.

Stwórz swój własny OpenID URL z phpMyID

Do tej pory korzystaliśmy z przykładów znanych dostawców OpenID. Jednak OpenID jest celowo bezpłatny. Oznacza to, że każdy – nawet ty – może zarejestrować OpenID i służyć jako IDP. Konfigurowanie i oferowanie publicznej rejestracji OpenID jest zdecydowanie złym pomysłem, chyba że jesteś ekspertem od bezpieczeństwa sieci. Jeśli jednak chcesz skonfigurować IDP OpenID na własny użytek i edukację, to naprawdę nie jest takie trudne.

phpMyID to prosty skrypt, którego można użyć do skonfigurowania dowolnego adresu URL, który kontrolujesz, jako własnego osobistego identyfikatora OpenID. Oryginalny projekt został porzucony w 2008 roku i nie działał z PHP 5.4. Jednak z kilkoma aktualizacjami i ulepszeniami bezpieczeństwa projekt został przyspieszony dzięki PHP 5.4 i 5.6 i można go uzyskać z GitHub.

Warto zauważyć, że phpMyID nie spełnia specyfikacji OpenID Connect. Można go jednak użyć do wygenerowania adresów URL OpenID 2.0.

Pamiętaj, że phpMyID jest tak bezpieczny, jak wersja PHP uruchamiająca skrypt, wprowadzone zabezpieczenia hasłem oraz zabezpieczenia chroniące serwer, na którym jest hostowany. W rezultacie skonfigurowanie własnego OpenID przy pomocy phpMyID jest ciekawym projektem do podjęcia, ale ostatecznie ryzykownym przedsięwzięciem, chyba że masz niezbędną wiedzę specjalistyczną, aby zapewnić jego bezpieczeństwo. Innymi słowy, użyj phpMyID, aby dowiedzieć się o OpenID, ale nie używaj go do ogólnego uwierzytelniania użytkowników.

Zasoby

Jeśli chcesz włączyć uwierzytelnianie OpenID do następnego projektu, dostępnych jest wiele zasobów, które pomogą Ci rozpocząć.

Przegląd OpenID

Przed zanurzeniem się we wdrożeniu będziesz chciał mieć solidne zrozumienie na wysokim poziomie, w jaki sposób działa OpenID. Następujące zasoby zapewniają ogólny przegląd, którego potrzebujesz:

  • OpenID Connect FAQ i Q&Jako: oficjalne FAQ OpenID Foundation. Szczegółowe informacje na temat OpenID znajdują się na tej stronie.
  • Porady dla programistów z OpenID wyjaśnione: jeśli wdrażasz OpenID po raz pierwszy, przeczytaj te wskazówki, aby uniknąć typowych pułapek.
  • OpenID Connect w pigułce Nat Sakimura: jeśli czujesz się trochę zastraszony przez wdrożenie OpenID, ten krótki artykuł zawiera przegląd interakcji między zaufanymi partnerami i dostawcami tożsamości.
  • Napisz serwer OpenID Connect w trzech prostych krokach autorstwa Nat Sakimury: nie ma lepszego sposobu na naukę niż robienie. Jeśli jesteś już na bieżąco z OAuth 2.0, ten samouczek przeprowadzi Cię przez proces szybkiego konfigurowania serwera OpenID Connect w oparciu o uwierzytelnianie OAuth 2.0.

Zasoby techniczne

Jeśli chcesz wyjść poza wprowadzanie i przeglądy oraz zagłębić się we wdrażanie, oto specyfikacje techniczne i biblioteki, do których będziesz potrzebować dostępu.

  • Biblioteki, produkty i narzędzia: ta lista bibliotek, produktów i narzędzi OpenID jest prowadzona przez OpenID Foundation. Jeśli masz już plan rozwoju lub język dla swojego projektu, istnieje duża szansa, że ​​na tej liście znajdziesz narzędzie, produkt lub bibliotekę dla swojego środowiska. Dostępne zasoby obejmują biblioteki napisane dla JavaScript, Java, PHP, Python, Ruby, C #, C i wielu innych języków, a także produkty OpenID z Amazon Web Services, Microsoft Azure, Ping Identity i wielu innych dostawców.
  • Witamy w OpenID Connect: ta oficjalna strona główna OpenID Connect zawiera łącza do specyfikacji OpenID. Dostępne dokumenty obejmują specyfikację OpenID Connect Core, podstawowy przewodnik po implementacji klienta, niejawny przewodnik po implementacji klienta i wiele więcej.
  • Zasoby dostawcy OpenID: niektórzy dostawcy OpenID oferują obszerną dokumentację, aby programiści mogli używać swoich systemów OpenID do uwierzytelniania użytkowników.
    • Google Identity Platform: OpenID Connect
    • Deweloper PayPal: Zintegrowane logowanie za pomocą PayPal
    • Sieć programistów Yahoo: OpenID Connect
    • Microsoft Azure: autoryzuj dostęp do aplikacji internetowych za pomocą OpenID Connect i Azure Active Directory

Książki

Dostępne są również dobrze sprawdzone książki, które wprowadzają OpenID i wyjaśniają implementację uwierzytelniania.

  • OAuth 2.0: Pierwsze kroki w API Security (2015) autorstwa Matthiasa Biehla: krótkie wprowadzenie do OAuth 2.0 i OpenID Connect, które zapewni podstawy do rozwiązania bardziej zaawansowanych materiałów.
  • Zaawansowane zabezpieczenia API: Zabezpieczanie interfejsów API za pomocą OAuth 2.0, OpenID Connect, JWS i JWE (2014) autorstwa Prabath Siriwardena: dokładne wprowadzenie do uwierzytelniania API, które obejmuje najpopularniejsze obecnie standardy uwierzytelniania, w tym OAuth 2.0 i OpenID. Na ponad 250 stronach nie jest to szybki odczyt.
  • Pierwsze kroki z OAuth 2.0 (2012) autorstwa Ryana Boyda: krótkie wprowadzenie do implementacji OAuth 2.0 do uwierzytelniania użytkowników. Ten tekst zorientowany na wyniki przedstawia OAuth 2.0 i wyjaśnia, w jaki sposób OpenID Connect umożliwia uwierzytelnianie bez konieczności budowania systemu uwierzytelniania.

Następne kroki

OpenID Connect nie jest autonomicznym protokołem uwierzytelniania. Aby z niego korzystać, musisz także znać praktyczną znajomość OAuth 2.0, ponieważ wszystkie systemy OpenID Connect są na nim zbudowane. Krzywa uczenia się, jak rozpocząć korzystanie z OpenID Connect, jest stroma. Jest wiele do nauczenia się. Po opanowaniu będziesz w stanie zintegrować wysoce bezpieczne uwierzytelnianie użytkowników w swojej witrynie lub aplikacji przy względnie minimalnym wysiłku.

Dalsza lektura i zasoby

Mamy więcej przewodników, samouczków i infografik związanych z kodowaniem i programowaniem:

  • Wprowadzenie i zasoby dotyczące OAuth: ściśle powiązany system, który zezwala na dwie aplikacje w imieniu użytkownika.
  • Wprowadzenie do OpenSSL, samouczki i zasoby: zacznij tworzyć bezpieczne strony internetowe z SSL.
  • Szybkie wprowadzenie i zasoby: jest to jeden z najnowszych języków podobnych do C. Przyszłość programowania? Dowiedz się tutaj!

Jakiego kodu należy się nauczyć?

Mylisz się w jakim języku programowania powinieneś nauczyć się kodować? Sprawdź naszą infografikę, jakiego kodu powinieneś się nauczyć? Nie tylko omawia różne aspekty języków, ale także odpowiada na ważne pytania, takie jak: „Ile pieniędzy zarobię na programowanie Java na życie?”

Jakiego kodu powinieneś się nauczyć?
Jakiego kodu należy się nauczyć?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me