Logowanie Multipass

Utworzono: 2015-01-23
Ostatnia aktualizacja: 2017-09-25
Liczba odwiedzin posta: 2438

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.:
 
http://prefix.sugester.pl/login?multipass=MynfPXzuGR4iRP%2FjF5ZwP1Qe2f97uF6gCFkR8eYOEuXCdlnBqjV6Gdu%2BC2MB%0Ap%2FHSY8ArcHa3oqUemJ09yMuKUpdGxXkKuCOKYO8db5wAHkWQUvmY24xOSW%2Ff%0AiG5BiDxf%0A


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
  def self.encode(multipass_secret, data, iv = nil)
    key_material = OpenSSL::Digest.new("sha256").digest(multipass_secret)
    encryption_key = key_material[0,16]
    signature_key  = key_material[16,16]

    data["created_at"] ||= Time.now.iso8601

    cipher = OpenSSL::Cipher::Cipher.new("aes-128-cbc")
    cipher.encrypt
    cipher.key = encryption_key
    iv ||= cipher.random_iv
    cipher.iv = iv

    ciphertext = iv + cipher.update(data.to_json) + cipher.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 "http://prefix.sugester.pl/login?multipass=#{multipass}" 

UWAGI

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



Powrót


Komentarze

Dodaj komentarz