2013-06-03 52 views
3

我想實現OAuth功能,以允許我正在構建的應用程序的用戶通過Facebook,Twitter和Google plus進行登錄。我迄今發現的每篇文章似乎都建議從頭開始創建一個MVC 4'Internet應用程序'項目。創建支持Facebook,Twitter和Google+的.NET網站OAuth登錄

實現此功能所需的相關參考,代碼片段,插件等是什麼?

我目前正在使用Forms授權。

+0

http://dotnetopenauth.net/ – SLaks

+5

OAuth更多的是授權網站代表最終用戶行事;更不用說是一般的認證機制。你可能想看看OpenID呢? –

回答

1

一旦你設置了表單認證MVC 4內置了支持用戶使用OpenID和OAuth使用名爲DotNetOpenAuth的開源項目進行認證,它是一個非常類似的系統,它使用cookie和重定向來形成認證。

這些服務只需要配置,並且這在應用程序啓動時發生。在Application_Start()事件內部有一個調用AuthConfig.RegisterAuth(),其中只包含註釋掉的代碼給第三方服務。

在您可以使用這些服務之前,您需要在大多數服務中註冊您的應用程序。當您向第三方註冊時,您通常會分配一個appId和一個appSecret。您需要將這些值插入到您作爲客戶端註冊到的代碼中。

谷歌是一家提供商註釋了誰不需要任何註冊,所以你可以取消註釋該行。 OAuthWebSecurity.RegisterGoogleClient();在AuthConfig.cs文件中。

當您重新構建應用程序並轉到登錄頁面時,您會在右側看到一個Google按鈕,您可以按此按鈕通過Google服務登錄。此按鈕會將用戶重定向到Google,以便用戶使用他們的Google帳戶登錄。一旦他們登錄Google,就會詢問用戶是否滿意您的應用程序的電子郵件地址。用戶必須回答是,如果拒絕,他們不會登錄到您的應用程序。

Google會重新回到您的應用程序,發送一些加密密封並簽名的參數,以便OpenAuth可以驗證Google是否確實對用戶進行了身份驗證。一旦用戶成功通過身份驗證並登錄後,他們就可以通過點擊將顯示的註冊按鈕來創建一個賬戶。

AuthConfig.cs文件頂部的註釋中有一個鏈接,該鏈接指向一個頁面,告訴您如何註冊其他第三方服務。 http://go.microsoft.com/fwlink/?LinkID=252166

+1

請注意,[只提供鏈接的答案](http://meta.stackoverflow.com/tags/link-only-answers/info),所以答案應該是搜索解決方案的終點(vs.而另一個引用的中途停留時間往往會隨着時間推移而過時)。請考慮在此添加獨立的摘要,並將鏈接保留爲參考。 – kleopatra

0

關於你的要求做這個「而無需創建一個互聯網應用」 ......

「互聯網應用」就是告訴的Visual Studio你使用它進行什麼類型的項目。這不是任何.NET標準所要求的,但如果您使用的是Visual Studio,那麼這是您需要採取的步驟。否則VS不知道它是否應該幫助您構建WinForms應用程序,控制檯應用程序,WPF等...

您可以使用的其他項目類型是WebSite,但是如果您打算利用.NET比互聯網應用程序更好的選擇 - 它假設你建立一個將運行.NET代碼的網站。


其他人提到使用DotNetOpenAuth來讓你的網站運行;我完全支持,但也想提Social Bootstrap API項目。它達到了類似的結果,但是使用ServiceStack.NET。您不希望使用它的可能性很大,但評估替代選項總是很好 - 它們可以幫助向您展示彼此的優點/缺點。