Sembra che i OpenID URL restituiti da Google dipendono dal valore openid.realm
che viene utilizzato. Inoltre, ho appena provato il processo OpenID con un dominio impostato su http://MYREALM
e openid.return_to
impostato su http://localhost/openid.php
, ma ho ricevuto una richiesta non valida HTTP 400. Apparentemente, Google controlla che il regno abbia lo stesso dominio (e probabilmente la porta) come l'URL di "ritorno a".
Un'idea per un intervento consiste nel memorizzare l'indirizzo Gmail associato a OpenID. Ogni volta che richiedi un OpenID di Google, richiedi sempre l'indirizzo email dell'utente tramite il tipo http://axschema.org/contact/email
di Attribute Exchange. Se cambi mai domini, puoi associare il nuovo URL OpenID al loro account in base all'indirizzo email.
Nota: È imperativo che si verifica la firma HMAC-SHA1. Altrimenti, chiunque sarebbe in grado di "tornare" all'azione OpenID checkover della tua applicazione Web con un indirizzo email costruito, consentendo loro di rilevare l'account di qualcuno se conoscono l'indirizzo Gmail del target.
Quando un utente accede con il proprio account Google per la prima volta dopo il passaggio, la procedura di migrazione è:
inviare una richiesta POST per https://www.google.com/accounts/o8/ud
con i seguenti parametri:
+---------------------+----------------------------------+
| openid.ns | http://specs.openid.net/auth/2.0 |
| openid.mode | associate |
| openid.assoc_type | HMAC-SHA1 |
| openid.session_type | no-encryption |
+---------------------+----------------------------------+
(sostituire openid.realm=http://NEWREALM
a seconda dei casi)
La risposta sarà qualcosa di simile:
012.351.
ns:http://specs.openid.net/auth/2.0
session_type:no-encryption
assoc_type:HMAC-SHA1
assoc_handle:B5hJNa39Cl39BXSOKMqkPpk03rJmE0GI6EhHBkvfLOBFAMMQX67HjuFq
expires_in:46800
mac_key:F5XUXvoYutLvFv4IzJS0diytLmbe
Con il redirect alla URI servizio, https://www.google.com/accounts/o8/ud
, modalità 'checkid_setup', assicurati di inviare l'assoc_handle che è stato ottenuto in precedenza così come richiedono l'indirizzo di posta elettronica dell'utente tramite Attribute Exchange.In altre parole, essere sicuri di inviare i seguenti, ulteriori parametri:
+----------------------+----------------------------------------------------------+
| openid.assoc_handle | B5hJNa39Cl39BXSOKMqkPpk03rJmE0GI6EhHBkvfLOBFAMMQX67HjuFq |
| openid.ns.ax | http://openid.net/srv/ax/1.0 |
| openid.ax.mode | fetch_request |
| openid.ax.type.email | http://axschema.org/contact/email |
| openid.ax.required | email |
+----------------------+----------------------------------------------------------+
Il "ritorno alla" richiesta includerà i parametri importanti openid_signed
, openid_sig
, e openid_ext1_value_email
.
- Seguire the OpenID Authentication 2.0 Specification's procedure for generating the signature. Se la codifica base64 della firma HMAC-SHA1 non è uguale al valore
openid_sig
, la firma non è valida. Notare che il tasto MAC in questo esempio è F5XUXvoYutLvFv4IzJS0diytLmbe
. Utilizza qualsiasi server di Google inviato indietro con la richiesta di associazione.
Google's Federated Login documentation page states che http://axschema.org/contact/email
"[r] equests indirizzo Gmail dell'utente". Presumibilmente, una volta creato un account Google, l'indirizzo email "Gmail" è stato corretto. Ma, se questa ipotesi non è valida, allora non è sicuro da usare questa procedura perché un utente malintenzionato potrebbe cambiare il loro indirizzo di posta elettronica come restituito dalla Federated servizio di login a qualsiasi indirizzo di posta elettronica è il dell'account che desiderano rubare.
solo per essere al sicuro, prima di attivare la nuova OpenID, inviare una richiesta di verifica e-mail all'indirizzo di posta elettronica. Il link di verifica conterrebbe un nonce associato al nuovo OpenID. Una volta cliccato il link, il nuovo OpenID verrebbe completamente associato all'account dell'utente come ricevuta del nonce, verificherebbe l'associazione tra l'indirizzo email e il nuovo URL OpenID.
Consulta anche: openid.sig -- How is it generated?
fonte
2011-09-29 22:02:53
http://blog.stackoverflow.com/2009/04/googles-openids-are-unique-per-domain/ –
questo problema è stato risolto? – Jus12