8 rozwiązań Open Source do autoryzacji/uwierzytelniania (OAuth) dla Twojego następnego projektu

Czy kiedykolwiek logowałeś się na stronie internetowej za pomocą Google, Facebook, LinkedIn, a nawet Github? Co powiesz na przesyłanie plików do witryny internetowej bezpośrednio z chmury, takiej jak konto na dysku Google?

Cóż, oba są przykładami stron internetowych lub aplikacji uzyskujących dostęp do twoich informacji przechowywanych w innych witrynach lub usługach. Ale jak to osiągnąć bez narażania bezpieczeństwa danych osobowych i podawania danych uwierzytelniających do aplikacji innej firmy?

Weźmy na przykład Facebooka; Facebook może korzystać z kontaktów zapisanych na Twoim koncie Google, aby znaleźć znajomych na platformie. Aby Facebook mógł uzyskać dostęp do Twoich kontaktów i znaleźć znajomych, musisz przyznać mu dostęp do swojego konta Google.

Kilka lat temu robiono to w bardzo prymitywny sposób, gdzie podawałeś Facebookowi swój adres e-mail Google i hasło do Gmaila, których używał do logowania się na twoje konto Google jako ty i uzyskiwania dostępu do twoich kontaktów. Wiele aplikacji, nie tylko Facebook, zaimplementowało w ten sposób autoryzację danych użytkowników przechowywanych w innych serwisach.

Przy tak wielu aplikacjach innych firm wdrażających autoryzację w ten sposób, użytkownicy byli w trudnej sytuacji, ponieważ musieli narażać swoje bezpieczeństwo, aby uzyskać dostęp do usług. Złośliwy programista może łatwo nadużywać danych uwierzytelniających użytkowników ze szkodą dla użytkowników. To właśnie wymusiło rozwój OAuth.

Według Internet Engineering Task Force (IETF) OAuth to struktura autoryzacji, która umożliwia aplikacjom innych firm uzyskiwanie dostępu do usługi w imieniu właściciela zasobu. OAuth umożliwia użytkownikom udzielanie ograniczonego dostępu aplikacjom innych firm.

Dzięki temu aplikacje mogą uzyskiwać dostęp do swoich zasobów online, takich jak ich profile lub dane osobowe przechowywane w innej aplikacji, bez konieczności ujawniania danych logowania aplikacji innej firmy próbującej uzyskać dostęp do zasobu.

Jest to często określane jako dostęp delegowany, w przypadku którego użytkownicy udzielają aplikacjom innych firm ograniczonego dostępu do swoich zasobów hostowanych w innej usłudze bez udostępniania poświadczeń użytkowników.

OAuth 2.0 jest najczęściej używaną wersją protokołu OAuth i jest kluczowym elementem autoryzacji i uwierzytelniania sieciowego.

OAuth jest szeroko stosowany w uwierzytelnianiu aplikacji mobilnych, zabezpieczaniu interfejsów API, umożliwianiu jednokrotnego logowania do wielu aplikacji i delegowaniu dostępu stronom trzecim, a także umożliwia użytkownikom zarządzanie i kontrolowanie uprawnień przyznanych aplikacjom innych firm.

Korzyści z używania platform Open Source OAuth.

Platformy OAuth typu open source odnoszą się do implementacji standardu OAuth typu open source. Biorąc pod uwagę, że aplikacje są tworzone przy użyciu różnych języków programowania i platform, platformy OAuth udostępniają biblioteki i narzędzia, które umożliwiają programistom łatwą integrację funkcji OAuth w ich aplikacjach. Niektóre z korzyści płynących z korzystania z platform Open Source OAuth obejmują:

Jakość i przejrzystość kodu

Platformy typu open source umożliwiają użytkownikom dostęp do ich kodu. Jest to korzystne, ponieważ wielu programistów o szerokim zakresie umiejętności i doświadczenia przegląda kod i może zgłaszać problemy, które mogą zauważyć w kodzie.

Pomaga to zapewnić najwyższą jakość kodu bez luk i błędów. Firmy mogą również przejrzeć kod, aby określić, w jakim stopniu może on zaspokoić ich potrzeby, zanim zobowiążą się do korzystania z produktu.

Opłacalność

Rozwiązania oprogramowania typu open source są bezpłatne, a zatem mogą być dla firm sposobem na zaoszczędzenie kosztów, które poniosłyby, wybierając odpowiednie platformy OAth. Ma to tę zaletę, że nawet firmy bez dużych budżetów mogą zapewnić, że bezpieczeństwo ich użytkowników nie zostanie naruszone.

Unikaj blokady dostawcy

Korzystając z dostawców OAuth typu open source, można łatwo przełączać się między różnymi dostawcami OAuth bez konieczności przeprojektowywania całej architektury aplikacji w celu dopasowania do nowego dostawcy.

Rozwiązania Open Source OAuth są zgodne z powszechnie akceptowanymi standardami, co zapewnia kompatybilność i interoperacyjność z innymi systemami. Ułatwia to przełączanie się między różnymi rozwiązaniami typu open source.

Społeczność

Rozwiązania open source są często wspierane przez dużą społeczność programistów pracujących nad ich ulepszaniem i dostarczaniem aktualizacji oprogramowania. Gwarantuje to, że oprogramowanie nie tylko działa z wieloma narzędziami używanymi przez programistów, ale także że problemy z oprogramowaniem można rozwiązać szybciej, ponieważ na pewno jest ktoś zaznajomiony z oprogramowaniem gotowy do pomocy.

Kluczowe kryteria oceny platform Open Source OAuth

Niektóre z kluczowych czynników, które należy wziąć pod uwagę podczas oceny platformy OAuth typu open source, obejmują:

Środki bezpieczeństwa i szyfrowania

Ważne jest, aby używane rozwiązanie OAuth typu open source miało solidne, wodoszczelne środki bezpieczeństwa i szyfrowania.

Wynika to z faktu, że platformy obsługują wrażliwe dane użytkowników i zasoby dostępu. Platforma powinna wspierać bezpieczną komunikację, a także zapewniać mechanizmy chroniące tokeny dostępu.

Łatwość integracji i interfejsy API przyjazne dla programistów

Ponieważ platformy OAuth są zintegrowane z aplikacjami, najważniejsze jest, aby rozwiązanie OAuth oferowało przejrzyste i intuicyjne interfejsy API, dokumentację i zestawy programistyczne (SDK), które upraszczają proces integracji.

Punkty końcowe platformy powinny być również dobrze udokumentowane przykładami kodu i bibliotekami dla popularnych języków programowania i ram.

Wsparcie społeczności i aktywny rozwój

Silna, aktywna społeczność użytkowników i współtwórców zasobu open source wskazuje na zdrowe środowisko wokół zasobów. W tym przypadku oznacza to, że OAuth jest stale ulepszany i używany.

Ponadto aktywna społeczność może zapewnić przydatne zasoby i wsparcie, które mogą pomóc w zrozumieniu i korzystaniu z rozwiązania OAuth typu open source.

Skalowalność i wydajność

Aplikacje często mają rosnącą bazę użytkowników, ponieważ coraz więcej osób jest wprowadzanych do aplikacji. Dlatego ważne jest, aby każde używane rozwiązanie OAuth obsługiwało skalowanie w miarę wzrostu liczby użytkowników, a także mogło obsługiwać dużą liczbę jednoczesnych żądań.

Opcje dostosowywania i rozszerzania

Rozwiązanie OAuth powinno być wysoce konfigurowalne, aby dostosować się do różnych wymagań biznesowych i logiki dla szerokiego grona użytkowników. Mówiąc prościej, firmy nie powinny budować swojej logiki wokół platformy OAuth.

Zamiast tego rozwiązanie OAuth powinno być na tyle konfigurowalne i rozszerzalne, aby umożliwić jego wdrożenie bez zmiany logiki biznesowej. Można to osiągnąć, zezwalając na dodawanie niestandardowych przepływów uwierzytelniania, oświadczeń i atrybutów użytkownika.

Mając na uwadze powyższe rozważania, oto niektóre z najlepszych rozwiązań OAuth typu open source do wykorzystania w następnym projekcie

SuperTokeny

SuperTokens jest dostawcą logowania typu open source, który szczyci się szerokim zastosowaniem wśród startupów, takich jak HackeRank, Skoot i Food Market Hub, oraz jest używany przez inżynierów pracujących między innymi w firmach takich jak Google, Amazon i Meta.

SuperTokens zapewnia wysoce konfigurowalne, rozszerzalne i zastępowalne komponenty, które pozwalają użytkownikom łatwo zintegrować uwierzytelnianie użytkownika z ich aplikacją.

Integracja SuperTokens jest nie tylko łatwa i szybka, ale oferuje również gotowe interfejsy użytkownika dla stron rejestracji i funkcje uwierzytelniania użytkowników od razu po wyjęciu z pudełka. Użytkownicy mają również swobodę szybkiego budowania własnego loginu, korzystając z funkcji pomocniczych, które są dostarczane z SuperTokenami.

Korzystając z SuperTokens, wdrażasz logowanie za pomocą hasła e-mail, logowanie społecznościowe za pomocą OAuth i logowanie bez hasła do aplikacji. Możesz także użyć loginu społecznościowego i hasła do poczty e-mail na tym samym ekranie logowania do swoich aplikacji.

Cerbos

Cerbos to open-source, niezależna od języka, skalowalna platforma autoryzacyjna, która została uznana przez Business Wire za najlepszą w API Security w 2022 roku.

Cerbos, który jest warstwą autoryzacji do wdrażania ról i uprawnień, współpracuje z różnymi dostawcami tożsamości, w tym między innymi Auth0, Magic, WorkOS, Okta i FusionAuth.

Cerbos umożliwia centralne zarządzanie logiką autoryzacji we wszystkich aplikacjach i natychmiastowe wprowadzanie zmian w sposobie, w jaki aplikacje obsługują autoryzację i uwierzytelnianie.

Ponadto Cerbos oferuje kontekstowe definicje ról i atrybuty oraz udostępnia interfejs API niezależny od języka, który może być używany z dowolnym stosem technologii.

Podsumowując, Cerbos jest zarówno bezstanowy, jak i hostowany samodzielnie i może być hostowany na platformach bezserwerowych, dowolnej chmurze publicznej lub prywatnej, a nawet w prywatnym centrum danych.

Paszport

Passport jest bardzo popularnym oprogramowaniem pośredniczącym do uwierzytelniania dla platformy Node.js i uwierzytelnia przychodzące żądania w aplikacjach zbudowanych z zapleczem Node.js.

Uwierzytelnianie odbywa się za pomocą wtyczek zwanych strategiami. Passport zapewnia programistom haki do kontrolowania działań, które należy podjąć, gdy uwierzytelnianie zakończy się niepowodzeniem lub sukcesem.

Passport oferuje ponad 500 strategii uwierzytelniania i pozwala na jednokrotne logowanie z OpenID i OAuth. Obsługuje również trwałe sesje, dynamiczny zakres i uprawnienia, wdrażanie niestandardowych strategii oraz łatwą obsługę sukcesu i niepowodzenia podczas uwierzytelniania.

Ponadto Passport.js nie montuje tras w aplikacjach Node.js i nie zakłada żadnego konkretnego schematu bazy danych, dzięki czemu programista może podejmować wszystkie decyzje na poziomie aplikacji.

Auth.js

Auth.js to rozwiązanie do uwierzytelniania typu open source, które współpracuje z różnymi frameworkami frontendowymi, w tym między innymi Next.js, SvelteKit i SolidStart.

Auth.js został zaprojektowany do pracy z różnymi wersjami OAuth. Obsługuje uwierzytelnianie bezstanowe z dowolnym zapleczem, uwierzytelnianie e-mail/bez hasła oraz tokeny JSON Web Token wraz z sesjami bazy danych.

Chociaż Auth.js został zaprojektowany z myślą o architekturach bezserwerowych, można go uruchomić w dowolnym miejscu, w tym między innymi AWS Lambda, Docker i Heroku.

Auth.js gwarantuje również użytkownikom kontrolę nad swoimi danymi i może działać bez bazy danych, mimo że ma wbudowaną obsługę popularnych baz danych, takich jak MySQL, Postgres, MongoDB, SQLite, MariaDB i Microsoft SQL Server.

Auth.js wykorzystuje tokeny Cross-site Request Forgery (CSRF) na trasach POST, szyfruje tokeny sieciowe JSON i automatycznie generuje symetryczne klucze podpisywania i szyfrowania dla wygody programisty.

Płaszcz klucza

Keycloak to bardzo popularne rozwiązanie Open Source do zarządzania tożsamością i dostępem. Keycloak to rozwiązanie oparte na standardowych protokołach i obsługujące OAuth 2.0, Security Assertion Markup Language (SAML) oraz OpenID Connect Connect.

Będąc rozwiązaniem typu open source, Keycloak jest bardzo łatwy do zintegrowania i zawiera takie funkcje, jak Single-Sign-On, która umożliwia użytkownikom logowanie się do wielu aplikacji za pomocą jednego logowania do Keycloak.

Jest to również korzystne dla programistów, ponieważ nie muszą oni zajmować się uwierzytelnianiem i przechowywaniem użytkowników oraz tworzeniem formularzy logowania w swoich aplikacjach.

Obszarem, w którym KeyCloak błyszczy, jest łatwość integracji z aplikacjami. KeyCloak pozwala w łatwy sposób dodać możliwość logowania się do aplikacji za pomocą sieci społecznościowych bez konieczności zmiany aplikacji lub kodu.

Wszystko to odbywa się za pośrednictwem konsoli administracyjnej, w której można również skonfigurować dodatkowe funkcje Keycloak, takie jak federacja użytkowników i pośrednictwo tożsamości. Za pomocą konsoli administracyjnej możesz także tworzyć i zarządzać aplikacjami i usługami oraz dostosowywać zasady autoryzacji.

Apereo CAS

Apereo CAS to rozwiązanie typu open source do pojedynczego logowania i dostawca tożsamości. CAS obsługuje szeroką gamę protokołów uwierzytelniania, w tym między innymi OAuth 2.0, SAML, OpenID, REST i WS-Federation.

CAS ma wbudowaną obsługę zarządzania hasłami, powiadomień, warunków użytkowania i personifikacji.

CAS obsługuje również uwierzytelnianie typu pluggable, uwierzytelnianie delegowane do zewnętrznych dostawców tożsamości, takich jak Facebook, Twitter i OpenID Connect, oraz uwierzytelnianie wieloskładnikowe za pośrednictwem dostawców, takich jak między innymi Google Authenticator, Authy, YubiKey, Acceptto i Inwebo.

Aby korzystać z CAS, najlepiej używać go z oficjalnie obsługiwanymi platformami klienckimi, takimi jak Java, .NET, Apache i PHP.

Orego Kratosa

Ory Kratos to solidny i bogaty w funkcje system zarządzania użytkownikami, który obsługuje chmurę. Chociaż Ory Kratos jest napisany w Go, zawiera zestawy SDK dla każdego języka programowania, wraz z konfigurowalnym logowaniem, rejestracją i zarządzaniem profilami.

Ponadto Ory Kratos może współpracować z dowolnym frameworkiem interfejsu użytkownika i wymaga minimalnego kodu do skonfigurowania.

Niektóre godne uwagi funkcje oferowane przez Ory Kratos obejmują uwierzytelnianie wieloskładnikowe u różnych dostawców, samoobsługowe logowanie i rejestrację, logowanie do sieci społecznościowych, weryfikację i odzyskiwanie konta oraz zarządzanie użytkownikami.

Zarządzanie użytkownikami umożliwia tworzenie, aktualizowanie i usuwanie tożsamości oraz ich danych w Twojej bazie użytkowników. Wreszcie, Ory Kratos umożliwia korzystanie z konfigurowalnych modeli tożsamości, w których można tworzyć własne interfejsy i definiować niestandardowe pola, takie jak imiona, adresy lub ulubione zwierzątko.

Zaloguj się

Zgodnie z dokumentacją, Logto jest opłacalną alternatywą typu open source dla Auth0, która jest zastrzeżonym rozwiązaniem do uwierzytelniania i autoryzacji. Logto oferuje wszystkie funkcje potrzebne do bezpiecznego uwierzytelniania i autoryzacji w bardziej przystępnych cenach.

Logto jest dostarczane z gotowym do użycia interfejsem API do zarządzania, który może być używany jako dostawca uwierzytelniania. Posiada również SDK, które pozwalają na łatwą i szybką integrację Logto z dowolną tworzoną aplikacją.

OpenID Connect Connect (OIDC), który rozszerza protokół autoryzacji OAuth 2.0, jest używany do uwierzytelniania, podczas gdy kontrola dostępu oparta na rolach (RBAC) jest używana do autoryzacji.

Dzięki LogTo Twoje aplikacje mogą implementować logowanie społecznościowe bez hasła i być w stanie obsłużyć użytkowników, którzy zapomnieli swoich danych logowania. Aby programowanie było jeszcze łatwiejsze i szybsze, LogTo oferuje piękne, gotowe komponenty interfejsu użytkownika z dostosowywalnym CSS.

Użytkownicy uzyskują również dostęp do swojej platformy w chmurze, gdzie mogą dostosowywać, integrować i przeglądać uwierzytelnianie, które wdrażają w swojej aplikacji.

Wniosek

Podczas wdrażania uwierzytelniania i autoryzacji w aplikacji istnieje wiele rozwiązań typu open source, które pozwolą Tobie i Twojej firmie zaoszczędzić mnóstwo pieniędzy. Rozważ dowolne z rozwiązań opisanych w artykule, aby zabezpieczyć swoją firmę i krytyczne dane użytkowników.

Możesz także zapoznać się z najlepszymi platformami uwierzytelniania użytkowników.