2012-01-17 54 views
4

我設置了一個使用DotNetOpenAuth的OpenID提供程序,並且卡住了。如何在不詢問用戶OpenID URL的情況下使用OpenID?

看來,OpenID的需要用戶首先提供其OpenID URL,然後消費者將他重定向到供應商,給URL作爲參數(checkid_setup模式)。

但與谷歌和一些其他供應商,它的工作原理不同。您只需重定向到您要登錄的通用頁面,或者選擇您已登錄的其中一個帳戶。或者如果您使用單個帳戶登錄,則只需重新導向。

這是莫名其妙相關checkid_immediate模式?如果是這樣,請給我一個鏈接到一篇文章解釋如何運作。

回答

4

在你看到的行爲不同的是垂直於checkid_setup對比,你注意到checkid_immediate模式。

如果用戶鍵入他自己的OpenID,那麼稱爲聲稱的標識符。如果用戶只是點擊(或鍵入)他的提供者(例如Google),那麼稱爲OP標識符。例如,如果您在OpenID框中輸入https://www.google.com/accounts/o8/id,您將看到您描述的行爲,因爲Google將幫助用戶登錄您的網站,無論該用戶是誰。

所以在這一點上,你有幾種選擇:

  1. 如果您的網站是基於ASP.NET Web表單,您可以使用OpenIdButton控制,在https://www.google.com/accounts/o8/id標識符輸入到相應的屬性,然後用戶可以點擊該按鈕來使用他們的Google帳戶登錄。

  2. 如果您使用的是MVC(或使用網絡表單,但希望以編程方式執行此操作),則可以撥打OpenIdRelyingParty.CreateRequest("https://www.google.com/accounts/o8/id")並將結果重定向至Google。

無論哪種方式,如果用戶已經登錄到Google,他們將不需要登錄到Google。如果用戶已經告知Google他們批准登錄您的網站,那麼在此登錄過程中他們將不會看到Google。

+0

我設置了一個OpenID提供程序,而不是使用者。但是,無論如何,我想現在我明白它的工作原理了。 – 2012-01-17 15:03:16

+0

哦,哎呀。對不起,沒有注意到這一點。因此,如果您希望自己的提供商允許RP執行我上面描述的操作,則需要提供一個OP標識符URL,我相信DNOA樣本可以證明這一點。然後在您的OP端點中,您需要通過確定登錄用戶聲明的標識符並在auth響應中自行設置來支持'IAuthenticationRequest.IsDirectedIdentity'。 – 2012-01-18 16:32:42

相關問題