2012-01-24 72 views
6

我想在客戶的應用程序中實現單點登錄。該客戶已通過Google Apps託管電子郵件。由於Google提供OpenID,這可能相對容易實施。但是,用戶可能未登錄正確的Google帳戶(甚至是多個帳戶)。如何將Google聯合登錄限制到特定的應用程序域?

因此,當使用Google OpenID端點https://www.google.com/accounts/o8/id時,用戶將看到他/她希望登錄哪個Google帳戶的選項。由於該應用程序只允許Google Apps域中的登錄,因此可跳過此步驟,以增加用戶體驗。但是,我可以找到辦法做到這一點。 SO上有this question,但鏈接全部死亡或指過時的規格。此外,我無法在Federated Login for Google Account Users規格中找到提示。

有些地方說,應該使用https://www.google.com/a/[domain]/o8/ud?be=o8,但似乎不工作(再):

$ wget --header='Accept: application/xrds+xml' https://www.google.com/a/[domain]/o8/ud?be=o8 
2012-01-24 09:29:53 ERROR 400: Bad Request. 

回答

6

雖然我找不到官方記錄,終點爲特定的谷歌Apps域名是這個:

https://google.com/accounts/o8/site-xrds?hd=<domain> 

使用此方法時,要知道,你會碰到一個特定的谷歌修飾:

谷歌改變了IdP Discovery和用戶XRDS的檢查方式,讓Google Apps用戶在http://example.com/openid?id=108441225163454056756的openid格式下不需要用戶建立自己的openid服務器。對於小公司來說,如果他們使用Google Apps,那麼人們可以在他們的域名中獲得他們的openid,只有一個域名。 source

+0

這對我來說不適用於GAE下使用python和users.create_login_url()與上述url作爲federated_identity參數。有其他人試過嗎? –

+0

單獨提出這個問題[這裏](http://stackoverflow.com/questions/14637137/how-to-restrict-openid-login-to-one-google-apps-domain-on-gae-again) –

相關問題