0

我正在嘗試在Ruby on Rails中使用Google Apps執行OmniAuth OpenID。我知道如果我指定「:identifier =>'https://www.google.com/accounts/o8/site-xrds?hd=example.com'」,那麼它應該可以直接使用,其中example.com是我的目標用戶來自的域名。如何禁用發現併爲omniauth-openid指定OpenID服務器

沒有問題,訪問/認證/谷歌時,用戶可以重定向到谷歌,這openid.identity可以從谷歌返回:

... &openid.identity=http://example.com/openid?id=xxxxxxxxxxxxxxxxxxxxxxx ... 

不過,我一起工作的example.com呢沒有正確的「rel ='openid2.provider'」< link/>標籤設置在http://example.com/,因此當omniauth-openid試圖再次與Google進行檢查時,發現失敗。

是否有一種快速而乾淨的方法來解決默認的發現行爲,以便我可以直接將https://www.google.com/a/example.com/o8/ud?be=o8定義爲服務器而不執行自動發現?

謝謝!

回答

0

我認爲omniauth-openid使用ruby-openid。如果是這樣,你應該能夠得到它的工作輕鬆:發出請求

require 'gapps_openid' 

谷歌企業應用套件有一個稍微不同的發現協議,這是創業板提供了之前在某處

gem install ruby-openid-apps-discovery 

再扔。

+0

謝謝!這正是我想要的。 – jiehanzheng 2012-08-20 07:05:39

0

在使用Steve推薦的Gem之前,我提出了一個解決方法,使整個發現過程僅在本地發生,我發現這對某些人可能有用。如果你只接受單一的谷歌Apps域的用戶,你可能想:

  1. 添加一行在你的/ etc/hosts中127.0.0.1 example.com

  2. 建立像nginx的一個輕量級的HTTP服務器,創建一個名爲openid(不追加的.html)文件,並添加<的link rel = 「openid2.provider」 ... >標籤那裏。

這比使用ruby-openid-apps-discovery要快一些,因爲它可以節省您的應用程序向外部https服務器發送一些請求。

相關問題