Przejdź do treści

Logowanie kontem google do aplikacji WEB

Informacje ogólne

Logowanie do aplikacji utworzonej za pomocą platformy NEOS jest dostępne w 2 trybach.

  1. Logowanie standardowe po podaniu loginu i hasła, które uwierzytelnia usera za pomocą procedury BD ustawionej w profilu. Gdy nie jest wskazana procedura w profilu to korzysta z standardowej SYS_GET_USERINFO.
  2. Logowanie przy użyciu konta google. Całym uwierzytelnieniem usera zajmuje się usuga GOOGLE jednak my musimy powiązać konkretny adres @ z kontem w naszym systemie. Za powiązanie odpowaida procedura w BD o nazwie SYS_GET_USERINFO_GOOGLE, weryfikuje usera na podstawie przekazanego adresu @. Adres @ musi być wskazany w tabeli S_USERS.

Aby uruchomić lokalnie logowanie za pomocą konta google należy wykonać kilka poniższych kroków. Konfiguracja produkcyjna nieznacznie różni się od konfiguracji lokalnej.

Konfiguracja lokalna na swoim koncie GOOGLE

  1. Dodajemy w pliku konfiguracyjnym NEOSa (.smd) w sekcji HTTPServer* poniższe 2 wpisy:
[HTTPServer]
LoginByGoogleEnabled=yes
LoginByGoogleAppId=#klucz uzyskamy wykonując kolejne kroki#

  • Klikamy w przycisk "Nowy Projekt".

  • Wprowadzamy nazwę projektu i klikamy "Utwórz".

  • Po utworzeniu projektu przechodzimy ponownie do okna wszystkich projektów i wybieramy go z listy.

  • Po wybraniu projektu przechodzimy do “Dane logowania”, następnie klikamy “Utwórz dane logowania” i wybieramy “Identyfikator klienta OAuth”.

  • Klikamy “Skonfiguruj ekran zgody”.

  • Wybieramy typ “Wewnętrzny” i klikamy “Utwórz”.

Tip

Jeśli chcemy skonfigurować na środowisko produkcyjne to wtedy wybieramy "Zewnętrzny".

  • Podajemy podstawowe dane odpowiednio modyfikując pod swoją konfigurację / potrzeby i klikamy “Zapisz i kontynuuj”.

Tip

Oczywiście prezentowana konfiguracja działa tylko dla lokalnej instancji NEOSa. Jeśli chcemy skonfigurować produkcyjnego to należy odpowiednio pozamieniać te adresy.

  • Dalej kilkamy "Zapisz i kontunuuj".

  • Klikamy “Powrót do panelu”

  • Ponownie przechodzimy do zakładki “Dane logowania”, następnie wybieramy “Utwórz dane logowania” i wybieramy “Identyfikator klienta OAuth”.

  • Wybieramy “Aplikacja internetowa” i uzupełniamy podstawowe informacje i klikamy “Utwórz”.

  • Pokaże nam się informacja o utworzeniu klienta OAuth. Powinniśmy otrzymać 2 klucze. Kopiujemy klucz "Identyfikator klienta" (tylko wyróżnioną część do kropki) i wklejamy w konfigurację SMD do klucza "LoginByGoogleAppId".

  • Docelowo sekcja konfiguracyjna powinna wyglądać następująco:
[HTTPServer]
LoginByGoogleEnabled=yes
LoginByGoogleAppId=501806752619-sedf4l0gb0h26c1bjoqggt2gm9eg9gek
  • Dostęp do tego klucza mamy również w zakładce “Dane logowania”.

  • Po restarcie NEOSa powinniśmy uzyskać taki efekt.

Uwaga!

Jeśli po wybraniu swojego konta nie uda nam się zalogować należy zweryfikować czy na naszej BD posiadamy procedurę SYS_GET_USERINFO_GOOGLE oraz czy ta procedura zwraca krotkę z naszymi danymi po podaniu adresu email jako parametr URS

Uwierzytelnienie użytkownika

Uwierzytelnienie użytkownika w BD jest przeprowadzane na kilka sposobów w zależności czy logujemy się kontem google, czy standardowym logowaniem. Ponadto możemy sami skonfigurować profile na które może zalogować się użytkownik.

Logowanie na profil domyślny

Podczas logowania na profil domyślny są uruchamiane następujące procedury: Logowanie standardowe: SYS_GET_USERINFO Logowanie przez google: SYS_GET_USERINFO_GOOGLE

Logowanie na profil zdefiniowany w pliku SMD

Przykładowa konfiguracja profilu:

[Profile:przyklad]
Name=Przykładowy profil
LoginProcedure=CUSTOM_LOGIN_USER

Przy powyższej konfiguracji będą wywoływane następujące procedury: Logowanie standardowe: CUSTOM_LOGIN_USER Logowanie przez google: CUSTOM_LOGIN_USER_GOOGLE

Zatem gdy chcemy wykorzystywać logowanie przez google w zdefiniowanym własnym profilu to należy dodać i obsłużyć procedurę CUSTOM_LOGIN_USER_GOOGLE gdzie parametry wejściowe powinny być takie jak poniżej:

create or alter procedure CUSTOM_LOGIN_USER_GOOGLE(  -- Wartości przekazane przez NEOSa przy logowaniu google
  USR varchar(40),                -- 'adres@email.xx'
  PSW varchar(40),                -- ''
  OLDPSW varchar(40),             -- ''
  ID varchar(255),                -- ''
  LOGINAD varchar(255) = 'no')    --
returns