2013-05-21 64 views
3

我試圖實現谷歌的OpenID+OAuth協議,當openid.realm包含通配符它不工作:谷歌聯合登錄(混合的OpenID OAuth的+)帶通配符境界

openid.realm: http://*.example.com 
openid.ns.oauth = http://specs.openid.net/extensions/oauth/1.0 
openid.oauth.consumer = www.example.com 
openid.oauth.scope = https://www.googleapis.com/auth/userinfo.profile 

的OpenID的工藝作品如預期的那樣,但是OAuth擴展卻被忽略了(響應中沒有request_token;也沒有錯誤)。

由於每documentation這似乎支持:

使用自動接口來註冊您的域名,考慮 保持已註冊域名必須與境界參數 被一致通過OpenID使用。例如,域名「www.somedomain.com」 與「http://*.somedomain.com」的域名一致。

它與(回調收到request_token參數)的http://www.example.com一種境界,但我不能改變的境界,因爲這將阻止現有用戶再次登錄。

我在做什麼錯?

+0

的問題是過於空泛。什麼是「它」不起作用?什麼工作?你想要做的是什麼新事物?哪些域[已通過Google註冊](https://developers.google.com/accounts/docs/RegistrationForWebAppsAuto)?你如何簽署你的請求? –

+0

更新:當境界設置爲'HTTP:// www.example.com'和'openid.oauth.consumer'到'www.example.com',回調接收'request_token'按預期方式。當設置的境界,通過'http:// * example.com'和消費者要麼'www.example.com'或'example.com',回調不接收'request_token'(但OpenID的過程成功)。 – arnaud576875

回答

0

consumer必須是實際的域名,而不是通配符。另外,*.example.com指定了example.com的子域; example.comhttp://*.example.com

護目鏡文檔不清一致的,但你可能需要register your website with Google爲了使用OpenID的OAuth的+帶通配符域。正如你所看到的,JohnS能夠得到OpenID+OAuth with a wildcard domain與你的設置沒有任何記錄的差異(除了使用ex2而不是ouath作爲命名空間別名,但這應該不重要)。

+0

這不是文檔所說的:'註冊的域必須與OpenID使用的域參數一致。例如,域名「www.somedomain.com」與「http://*.somedomain.com」域名一致。這正是我正在做的。 – arnaud576875

+0

你說'consumer'是'* .example.com'。 '消費者'不是'領域'。 –

+0

哎呀!我的意思是「將領域設置爲http:// *。example.com',將消費者設置爲** www.example.com **或example.com'時,回調沒有收到' request_token'(但openid進程成功)「。 – arnaud576875

-1

您的問題特別是關於使用通配符選項openid.realm:

認證的區域。

標識最終用戶被要求信任的域。 (例如:「http://*.myexamplesite.com」)該值必須與在openid.return_to中定義的域一致。如果此參數未定義,Google將使用openid.return_to中引用的URL。

在Google聯合登錄頁面上使用領域的值來向用戶標識請求網站。它也用於確定Google返回的持久用戶標識的值。

注:如果你單獨使用兩種的OpenID和OAuth了,你可以只要OpenID領域參數值OAuth用戶端的參數值匹配使用相同的域名註冊。如果值不匹配,請重新註冊與OpenID域值一致的域,或者更改域的值。但是,如果您擁有OpenID的現有用戶,則更改領域可能不是一個可行的選擇。

另一個重要的事情有關OAuth的擴展

這通常是一個DNS域名。必須與realm的值一致(例如,realm = example.com和ext2.consumer =「www.example.com」,或者realm =「http:// *somedomain.com」和ext2 .consumer =「www.somedomain.com」)。

+0

感謝您的回答。你知道我做錯了什麼嗎? – arnaud576875

+0

似乎是的我知道,因爲我也使用混合登錄方式,但不是通配符選項,但如果您提供確切的腳本,那麼可以幫助您更好地解決問題 – Vineet1982

相關問題