這篇文章演示如何在你的ASP.NET MVC5應用程序中支持用戶使用騰訊QQ和新浪微博的open authentication。
起步
安裝Visual studio 2013 higher或者Visual studio express 2013 for web就不再贅述了,點擊這里下載。
創建應用程序
打開vs,在Template中選擇C#->asp.net web application ,命名為OauthDemo,並點擊OK
在彈出窗口中選擇MVC template,並且選擇“Change authentication”選擇Indivdula user Accounts
使用NUGET更新OWIN中間件
在Project Explorer中右鍵點擊項目,選擇”Manage Nuget Packages”,左邊欄中選擇Updates,然后點擊右邊的Update all,如果你沒有發現Update all,說明你現在的包都是最新的(又或者是你人在中國,說知道呢…)
同樣,在package manager console中,你也可以通過鍵入Update-package命令來更新所有的包
此時,點擊F5應該可以執行你的應用程序,因為我們還沒有做任何開發工作。
啟動SSL支持
在幾乎所有的Oauth提供商都要求接入的應用程序支持SSL連接,所以你需要啟動IIS-express中SSL的支持。
在Solution Explorer中,點擊MvcAuth,在屬性窗口中(如果你沒有看見,需要從菜單欄的Views中打開它),選擇SSL Enabled為True
復制ssl的url,打開項目屬性頁面,選擇Web選項卡,將地址拷貝到Project URL中並保存。
然后再HomeController上添加RequireHttps標簽
[RequireHttps] public class HomeController : Controller { public ActionResult Index() { return View(); }
此時重新啟動應用程序,可能會得到一個警告,選擇Yes並安裝提示的證書就好了。
申請騰訊QQ的Oauth
1. 打開網址http://connect.qq.com/,或者http://connect.qq.com/intro/login
2. 登陸你的QQ賬號,並點擊QQ登陸->申請加入
3. 打開頁面中,創建頁面,並根據要求填寫信息
這里比較麻煩的是,騰訊需要驗證你輸入的網址是否是你自己所有的,所以你需要有一個自己的域名,這里不要嘗試修改host的方法,騰訊是后台驗證的,所以沒有什么卵用。
4.在創建好以后,在管理中心頁面,就可以看到你的App id和app key啦
申請新浪微博的Oauth
1. 打開網址http://open.weibo.com/,並登錄你的微博賬號。
2. 在“微鏈接”->”網站接入“中,點擊”立即接入”
3.同樣按照要求輸入內容,新浪也要求驗證你的域名所有權,所以折騰去吧。
4.創建完成后,在“我的應用”里就可以看到了,打開你創建的應用,在測試賬號中輸入自己的賬號,因為沒有認證的賬號是不允許進行開發和測試的登陸的
5.在“借口管理”->“授權機制”中,輸入回調地址“https://www.yourdomain.xx/sign-in”
6.最后在“網站信息”->“基本信息”中,可以查看到app id 和app secert:
快速接入
1. 在Package manager console中,鍵入以下兩個命令添加對騰訊QQ和新浪微博的oauth provider
Install-Package Microsoft.Owin.Security.Sina
Install-Package Microsoft.Owin.Security.Tencent
結果如圖所示:
2. 打開App_Start目錄下的Startup.Auth.cs文件,在文件頂部添加以下命名空間:
using Microsoft.Owin.Security.Tencent; using Microsoft.Owin.Security.Sina;
3. 在app.UseExternalSignInCookie(…的調用后,添加以下兩行代碼,從而添加應用程序對騰訊QQ和新浪微博oauth的支持:
app.UseTencentAuthentication("101224440", "***************************************"); app.UseSinaAuthentication("2522592830", "******************************************");
4. 現在不可以通過支持按下F5來測試結果,因為各個oauth提供商會驗證和調用你在上一節中設置的域名是否正確,有兩種方法可以做到這一點,第一就是直接將程序部署並且解析域名,這種方式明顯不適合開發;第二種方法也是接下來要使用的方法,將程序部署在本地IIS並且修改host文件。
打開IIS,創建應用程序,指向當前項目的根目錄
而后修改host文件,添加以下內容:
127.0.0.1 www.yourdomain.xx
最后,編譯你的應用程序,瀏覽器打開https://www.yourdomain.xx,點擊”Login“,就可以在右側看到添加的兩個oauth provider啦:
資源地址&源碼
https://www.nuget.org/packages/Microsoft.Owin.Security.Sina/
https://www.nuget.org/packages/Microsoft.Owin.Security.Tencent/