Przejdź do treści
Sugester V1 - Baza  Wiedzy

Logowanie Multipass

Aktualizacja: Wyświetleń: 8168 3 min czytania

Logowanie

Sugester poza ręcznym zakładaniem użytkowników oferuje również synchronizacje "do wewnątrz" z innymi serwisami poprzez powszechnie stosowane protokoły Simple SSO oraz Multipass SSO. Za pomocą ww. protokołów Sugester jest w stanie uwierzytelniać użytkowników z zewnętrznej bazy. Simple SSO wymaga jedynie skonfigurowania linku (logowanie > simple sso > sso url) do logowania w zewnętrznym serwisie. Multipass poza linkiem (logowanie > multipass sso > multipass url) potrzebuje także prywatnego tokenu (logowanie > multipass sso > multipass token), w którego posiadaniu powinna być administracja zewnętrznego serwisu. Multipass jest trudniejszy w konfiguracji, ale w zamian zapewnia większe bezpieczeństwo danych.

Ustawienia Multipass

Aby włączyć multipass, należy Przejść do Menu Ustawienia>Ustawienia konta>Integracje i w polu Sposób logowania wybrać multipass. Należy następnie podać url do logowania poprzez własną aplikację internetową oraz wygenerować token. Zasada działania Multipass umożliwia automatycznie tworzenie i logowanie użytkowników poprzez przekazanie odpowiednio zaszyfrowanych danych w parametach zapytania. Użytkownik chcący się zalogować na Sugesterze jest przekierowany na adres podany w ustawieniach jako "Multipass url". Twoja aplikacja powinna przekierować użytkownika z powrotem na stronę logowania Sugestera (której adres jest przekazywany przez parametr "login_url") ze specjalnie wygenerowanym parametrem "multipass", np.:  
https://prefix.sugester.pl/login?multipass=fqB_bZWoX1qU30I7habsB-5IFG00-SBsaSFkJLPjUPib94ub0YZrb_i0nUnhwdG6uTPaQ3ylnUxT45Pyl8JTuXtOkHWsbb1hWCN2YyEfqPJrDkqsEXBLanQgnmUQYz6PKXvW9KX-LxUnAlxIBHxtun14NExcAN_5W51QLjiSJiyZmAfq8mu_pV-3lvNTkdfoH9on7B5X8FWZbza2dI23PH1dCqQcFg%3D%3D&strong=true
Sugester sprawdza poprawność zapytania i odszyfrowuje dane:
  • login użytkownika - zawsze
  • jego adres email - tylko podczas pierwszego logowania (w celu założenia konta)
  • termin utworzenia zapytania
  • opcjonalnie url, na który użytkownik będzie przekierowany po udanym logowaniu
  • opcjonalny nick, który zostanie nadany użytkownikowi po udanym logowaniu
  Algorytm szyfrowania Kod Ruby generujący parametr "multipass"
require "openssl"
require "base64"
require "time"
require "json"
module MultipassExampleCode
  CURRENT_CIPHER_METHOD = {
    cipher: 'aes-256-gcm',
    encryption_key_length: 32,
    iv_length: 12,
    use_final: false,
  }
  def self.encode(multipass_secret, data, iv = nil)
    cipher_m = CURRENT_CIPHER_METHOD
    key_material = OpenSSL::Digest.new("sha256").digest(multipass_secret)
    encryption_key = key_material[0, cipher_m[:encryption_key_length]]
    signature_key  = key_material[cipher_m[:encryption_key_length], cipher_m[:encryption_key_length]]
    data["created_at"] ||= Time.now.iso8601
    cipher = OpenSSL::Cipher.new(cipher_m[:cipher])
    cipher.encrypt
    cipher.key = encryption_key
    iv ||= cipher.random_iv
    cipher.iv = iv
    ciphertext = iv + cipher.update(data.to_json)
    ciphertext += cipher.final if cipher_m[:use_final]
    sign = OpenSSL::HMAC.digest("sha256", signature_key, ciphertext)
    Base64.urlsafe_encode64(ciphertext + sign)
  end
end
multipass = MultipassExampleCode.encode(
  "your multipass token",
  {
    'login' => 'example_login',
    'email' => 'example_email.example.com', # Required only for create account
    'url' => '/app/acitivities', # Optional parameter - redirect url
    'nick' => 'example_nick' # Optional parameter - nick for user.  
  }
)
puts "https://prefix.sugester.pl/login?multipass=#{multipass}&strong=true" 

UWAGI

Nasz multipass działa zgodnie z mechanizmem zaproponowanym przez serwis Shopify.

Czy ten wpis był pomocny?

Udostępnij