Ho un sistema Single Sign-On che funziona in questo modo:
L'utente fa clic sul link su clientsite.com
che lo reindirizza a
mastersite.com?returnTo=http://clientsite.com
Se auth è valido, l'utente viene reindirizzato a:
http://clientsite.com?token=xxxx
Poiché non voglio che http://clientsite.com
sia tra una lista di siti Web autorizzati ho deciso di fare quanto segue:
Tutti i clientite condividono una chiave casuale segreta comune come
client_token = "VDFdzbZ3qFvWyx5dUMdEDmwnS7T"
e fai quanto segue:
time = time();
hash = hash_sha256(client_token + time + http://clientsite.com)
redirecto to : mastersite.com?returnTo=http://clientsite.com&time=time&key=hash
il sito principale quindi controlla:
is time < time() - 10min ?
is hash_sha256(client_token + time + http://clientsite.com) == hash ?
Questo schema è abbastanza sicuro?
L'unico problema che vedo è se decido di cambiare il client_key Ho bisogno di aggiornare molti siti web, posso superare questo?