2012-04-16 28 views
2

我正在實現一個OpenID提供程序,並使其在標準OpenID請求(最終用戶知道他們的OpenID網址)中平穩運行。然而,我希望消費者能夠在不知道最終用戶OpenID網址的情況下使用提供商,這將在用戶登錄時確定。使用OpenID而不要求用戶知道他們的OpenID網址?

我發現這在理論上可能是通過閱讀this stackoverflow question,但它並沒有提供很多細節讓我能夠收集所需的信息來開發這個自己,事實上它的DotNet並沒有幫助。

任何人都可以指引我到哪裏可以找到關於如何設置的更多信息?

我正在使用Zend Framework,但在其文檔中找不到任何有用的信息。

回答

1

消費者可以指定提供者「應該選擇屬於最終用戶的標識符」。在這種情況下,提供者將選擇屬於該用戶的標識符(即最有可能登錄到提供者上的用戶),並且消費者不必提供openid url。請參閱部分9.1。請求參數,項目openid.identityOpenId specification page。基本上,參數openid.identity設置爲http://specs.openid.net/auth/2.0/identifier_select

關於你的問題如何進行此設置: 欲瞭解更多信息,請閱讀specification of OpenId 2.0 另外,它可能是在Google's OpenId developer page讀有用的。

1

OpenID 的URL,所以我不知道如何在不知道用戶名的情況下登錄而不知道用戶名。如果你的目標只是爲了幫助用戶,或許你可以提供某種下拉列表,列出常用提供者,請求相關部分,並允許用戶填寫它們?

由於OpenID是分散式的,並且任何網站都可以成爲OpenID,所以無法預測可以使用的所有網址,但是您當然可以覆蓋那些受歡迎的網址。 In fact, this SO post covers them.

「其他」選項可以允許直接輸入URL來處理所有其他情況。

我想說,再加上Zend_OpenId_Consumer/Zend_Auth integration doc會是一個很好的開始。

+0

如果你檢查我的帖子中的鏈接,你可以看到它實際上是可能的。我也沒有看到用戶需要知道他/她的openid url的原因,與消費者的應用程序可以簡單地鏈接到OpenID端點,然後以交互方式驗證用戶並將其OpenID返回給用戶。 – Naatan 2012-04-16 17:07:59

+0

好的,看起來你的術語有點亂碼。 OpenID是一個過程,一個標準,而不是一個價值。實際上,OpenID身份驗證過程的返回值是您調用OpenID的。該URL是您發送用戶進行身份驗證的位置。您必須要求他們提供該URL或使用某種提供者列表(因此限制他們可以使用哪些服務進行身份驗證) – Kato 2012-04-17 15:45:31

+0

因此,用戶不必提供URL,但必須提供一個提供者,並且有人必須知道要聯繫該提供者的URL('define(「TEST_SERVER」,Zend_OpenId :: absoluteURL(「example-8.php」));'可以預測通用提供者,如果你打算只提供有限的選擇。例如,如果我使用我的WordPress博客,但作爲提供者,您將不得不以某種方式詢問或生成提供者URL。 – Kato 2012-04-17 15:52:17