在你看到的行爲不同的是垂直於checkid_setup對比,你注意到checkid_immediate模式。
如果用戶鍵入他自己的OpenID,那麼稱爲聲稱的標識符。如果用戶只是點擊(或鍵入)他的提供者(例如Google),那麼稱爲OP標識符。例如,如果您在OpenID框中輸入https://www.google.com/accounts/o8/id
,您將看到您描述的行爲,因爲Google將幫助用戶登錄您的網站,無論該用戶是誰。
所以在這一點上,你有幾種選擇:
如果您的網站是基於ASP.NET Web表單,您可以使用OpenIdButton
控制,在https://www.google.com/accounts/o8/id
標識符輸入到相應的屬性,然後用戶可以點擊該按鈕來使用他們的Google帳戶登錄。
如果您使用的是MVC(或使用網絡表單,但希望以編程方式執行此操作),則可以撥打OpenIdRelyingParty.CreateRequest("https://www.google.com/accounts/o8/id")
並將結果重定向至Google。
無論哪種方式,如果用戶已經登錄到Google,他們將不需要登錄到Google。如果用戶已經告知Google他們批准登錄您的網站,那麼在此登錄過程中他們將不會看到Google。
我設置了一個OpenID提供程序,而不是使用者。但是,無論如何,我想現在我明白它的工作原理了。 – 2012-01-17 15:03:16
哦,哎呀。對不起,沒有注意到這一點。因此,如果您希望自己的提供商允許RP執行我上面描述的操作,則需要提供一個OP標識符URL,我相信DNOA樣本可以證明這一點。然後在您的OP端點中,您需要通過確定登錄用戶聲明的標識符並在auth響應中自行設置來支持'IAuthenticationRequest.IsDirectedIdentity'。 – 2012-01-18 16:32:42