Database
 sql >> Baza danych >  >> RDS >> Database

Logowanie za pomocą usług zewnętrznych

Wprowadzenie nazwy użytkownika i hasła to jeden ze sposobów uzyskania dostępu do konta, ale nie jedyny. W tym artykule zobaczymy, jak włączyć usługi zewnętrzne (takie jak Google lub Facebook) podczas logowania do bazy danych.

Co to są loginy do usług zewnętrznych?

Dawanie użytkownikowi opcji dostępu do jego kont systemowych za pośrednictwem usług zewnętrznych to rosnący trend wśród projektantów stron internetowych. Ta opcja może zapewnić kilka korzyści, na przykład dać użytkownikom do zapamiętania jedną kombinację nazwy i hasła mniej. Może również pomóc administratorom w personalizacji doświadczeń użytkowników.

Gdy aplikacje internetowe oferują logowanie do usługi zewnętrznej, ekran logowania wygląda jak na poniższym obrazku. Użytkownik może wprowadzić swój login i hasło lub kliknąć przycisk, który przekieruje go do wybranej przez siebie usługi (Facebook, Twitter, Google itp.), gdzie zaloguje się i zostanie przekierowany do oryginalnej aplikacji.

Oto przykładowy ekran logowania z Akademii Vertabelo:

Jak działają zewnętrzne logowania

Dodanie zewnętrznych usług logowania wymaga od programistów dodatkowej pracy. Większość popularnych serwisów społecznościowych korzysta z protokołu o nazwie OAuth 2.0 . Tylko Twitter używa starszego protokołu o nazwie OAuth 1.0 . Protokół umożliwia odczytywanie informacji o użytkowniku, takich jak imię i nazwisko, adres e-mail, płeć itp. Dokładne dostępne informacje zależą od usługi mediów społecznościowych i tego, co podał użytkownik. (Na przykład możliwe jest posiadanie konta na Facebooku bez dołączonego adresu e-mail.) Niezależnie jednak skupimy się na tym, jak wdrożyć ten system w projekcie bazy danych.

Jako punkt wyjścia użyjemy naszego poprzedniego artykułu na temat odzyskiwania hasła i potwierdzania wiadomości e-mail jako podstawy. Oto tabele związane z użytkownikami z tego artykułu.




Projektowanie bazy danych dla zewnętrznych loginów

Wiele informacji na user_account tabela jest związana z obsługą uwierzytelniania – plus powiązane funkcje, takie jak przypomnienie hasła i potwierdzanie wiadomości e-mail – we własnym zakresie. Nie potrzebujemy tych kolumn, jeśli użytkownik uwierzytelnia się za pomocą usługi zewnętrznej. Przypomnienie hasła, potwierdzenie e-mailem i inne funkcje są obsługiwane przez usługę zewnętrzną. Pierwszym krokiem w naszym projekcie jest oddzielenie user_account tabela na dwie tabele:user_account i user_profile .

user_account table teraz obsługuje całą własną księgowość uwierzytelniania. user_profile tabela przedstawia rzeczywiste informacje o użytkowniku:imię i nazwisko, adres e-mail, strefę czasową, warunki korzystania z usługi i tak dalej. Wszystkie tabele biznesowe powinny być teraz powiązane z user_profile tabela.

Teraz do kont zewnętrznych. OAuth protokół w końcu daje nam identyfikator dla użytkownika w ich systemie. Ten identyfikator nie jest nazwą użytkownika w systemie zewnętrznym. To tylko identyfikator naszej aplikacji. Musimy przechowywać ten wewnętrzny identyfikator w naszej bazie danych. Moglibyśmy dodać kolumny dopuszczające wartość null facebook_id , google_id , twitter_id itp. do tabeli user_profile . Ale zrobimy coś innego.

Dodamy nowe tabele:facebook_account , twitter_account , google_account , który będzie przechowywać zewnętrzny identyfikator. W ten sposób, jeśli zajdzie taka potrzeba, możemy dodać dodatkowe informacje specjalnie dla każdego serwisu społecznościowego. Jeśli chcemy dodać możliwość logowania do innego serwisu społecznościowego, nie będziemy musieli zmieniać user_profile stół. Dodamy tylko kolejne external_service_account tabela.

Każda z nowych tabel ma ten sam format kolumn. Jednym z nich będzie int user_profile_id , który jest zarówno kluczem obcym odwołującym się do kolumny id w user_profile tabeli i klucza podstawowego. (Może to służyć jako klucz podstawowy, ponieważ żadne dwa konta w naszym systemie nie powinny być powiązane z wieloma kontami tej samej usługi zewnętrznej).

Druga kolumna będzie identyfikatorem konta zewnętrznego – facebook_id , na przykład. Każdy z facebook_id ma unikalne ograniczenie , google_id i twitter_id kolumny. Wiemy, że nie ma dwóch kont o takim samym identyfikatorze. W rzeczywistości, gdy użytkownik jest uwierzytelniany za pomocą usługi zewnętrznej, znamy jego facebook_id . Gdy znajdziemy odpowiedni wiersz na facebook_account tabeli i znajdź odpowiedni user_profile , wiemy, który użytkownik właśnie zalogował się do systemu. Jeśli nie ma wiersza o tym identyfikatorze, tworzymy nowy wiersz w user_profile tabeli i nowy wiersz w odpowiedniej tabeli konta.

Oto ostateczny model:





  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie JShell w Javie 9 w NetBeans 9.0, część 2

  2. Webinarium Plan Explorer 3.0 — próbki i pytania i odpowiedzi

  3. Instalowanie SQL Express

  4. MuleSoft wykorzystuje GraphQL w celu zaawansowanej integracji API

  5. Podłączanie 32-bitowej aplikacji do jBASE