Google tarafından döndürülen OpenID'yi URL'ler kullanılır openid.realm
değerine bağlı olduğu görülmektedir. Ayrıca, OpenID işlemini http://MYREALM
ve openid.return_to
http://localhost/openid.php
olarak ayarlanmış bir alanla denedim, ancak bir HTTP 400 Hatalı İstek aldı. Görünüşe göre, Google, alanın "dönüş" URL'si ile aynı alana (ve muhtemelen bağlantı noktasına) sahip olduğunu kontrol ediyor.
Bir iş için bir fikir, OpenID ile ilişkili Gmail adresini saklamaktır. Bir Google OpenID isteğinde bulunduğunuzda, her zaman kullanıcının e-posta adresini, http://axschema.org/contact/email
türünde Attribute Exchange üzerinden isteyin. Etki alanlarını değiştirirseniz, yeni OpenID URL'sini e-posta adresine dayanarak hesaplarıyla ilişkilendirebilirsiniz.
Not: Bu, HMAC-SHA1 imzasını doğruladığınız zorunlu'dur. Aksi takdirde, herkes, web uygulamanızın OpenID checkauth eylemini, yapılandırılmış bir e-posta adresiyle "hedefe" dönüştürebilir ve bu da kullanıcının hedefinin Gmail adresini bilmesi durumunda birisinin hesabını ele geçirmesine olanak tanır. Bir kullanıcı anahtarından sonra ilk kez kendi Google Hesabı ile giriş edildiğinde
, göç prosedürü
olduğunu :
+---------------------+----------------------------------+
| openid.ns | http://specs.openid.net/auth/2.0 |
| openid.mode | associate |
| openid.assoc_type | HMAC-SHA1 |
| openid.session_type | no-encryption |
+---------------------+----------------------------------+
:
aşağıdaki parametrelerle https://www.google.com/accounts/o8/ud
POST isteği gönder
(uygun openid.realm=http://NEWREALM
değiştirin) tepki olacaktır gibi bir şey:
Servis URI, https://www.google.com/accounts/o8/ud
için yönlendirme ile
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
, mod 'checkid_setup', Özellik Exchange üzerinden kullanıcının e-posta adresi gerektirir, daha önce de elde edildi assoc_handle göndermek için emin olun.Başka bir deyişle, aşağıdaki, ek parametreleri göndermek emin olun:
+----------------------+----------------------------------------------------------+
| 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 |
+----------------------+----------------------------------------------------------+
istek "dönüş" önemli parametreler openid_signed
, openid_sig
ve openid_ext1_value_email
içerecektir.
- the OpenID Authentication 2.0 Specification's procedure for generating the signature. HMAC-SHA1 imzasının base64 kodlaması
openid_sig
değeriyle aynı değilse, imza geçersizdir. Bu örnekteki MAC anahtarının F5XUXvoYutLvFv4IzJS0diytLmbe
olduğunu unutmayın. Google'ın sunucusunu dernek isteğiyle geri gönderilen her şeyi kullanın. http://axschema.org/contact/email
"[d] Kullanıcının gmail adresi equests" bu
Google's Federated Login documentation page states. Muhtemelen, bir Google Hesabı oluşturulduktan sonra "Gmail" e-posta adresi düzeltildi. Ancak, bu varsayım geçerli değilse, bu prosedürü kullanmak güvenli değildir çünkü kötü niyetli bir kullanıcı, e-posta adresinin çalmak istediği hesaba ne olursa olsun, Federasyon Giriş Hizmeti tarafından iade edilen e-posta adresini değiştirebilir.
Sadece güvenli tarafta olmak için, yeni OpenID'yi etkinleştirmeden önce, e-posta adresine bir e-posta doğrulama isteği gönderin. Doğrulama bağlantısı, yeni OpenID ile ilişkili olmayan bir içermeyi içerecektir. Bağlantı tıklandığında, yeni OpenID, kullanıcının e-posta adresi ile yeni OpenID URL'si arasındaki ilişkiyi doğrulayamadığı için kullanıcının hesabıyla tamamen ilişkilendirilir.
Ayrıca bakınız: openid.sig -- How is it generated?
http://blog.stackoverflow.com/2009/04/googles-openids-are-unique-per-domain/ –
bu sorun çözüldü. – Jus12