IdentityServer4(10)- 添加对外部认证的支持之QQ登录
前言
前面我們提到過IdentityServer4是可以添加外部認證的,如果外部認證支持OAuth2,那么添加到IdentityServer4是非常簡單的,在ASP.NET Core下提供了非常多的外部認證實現,比如Google,Facebook,Twitter,Microsoft帳戶和OpenID Connect等,但是對于我們國內來說最常用的莫過于QQ登錄。
申請QQ登錄
1.訪問QQ互聯官方網站:https://connect.qq.com/
2.點擊“應用管理”-> “創建應用”,填寫你的網站信息,這里的信息請不要胡亂填寫,這個會影響審核的,以后要是修改了這些信息需要重新審核。
填寫完善資料的時候,唯一一個需要注意的就是回調地址,這里我們后面詳細介紹。
3.等待審核結果,這里審核還是非常快的,一般一天左右就行了
注意:如果網站沒有備案號我不知道是否能通過申請,我自己是擁有備案號的,然后網站LOGO必須上傳,不然會申請不過的。
添加QQ登錄
QQ登錄是支持OAuth2,所以可以集成到IdentityServer4。本來是打算自己寫一個的,但是在查找信息的過程中,發現已經有人實現了,組件名為:Microsoft.AspNetCore.Authentication.QQ,Nuget可以直接安裝。
1.先將 Microsoft.AspNetCore.Authentication.QQ 組件添加到項目中
2.配置QQ登錄信息
在Startup類的ConfigureServices方法里添加如下代碼:
services.AddAuthentication().AddQQ(qqOptions =>{qqOptions.AppId = "";qqOptions.AppKey = "";})3.在QQ互聯后臺配置回調地址
回調地址是隨時可以在QQ互聯后臺配置的,因為這個回調地址已經在QQ登錄組件里定義了的,所以此處配置為:
http://你的域名/signin-qq比如:
http://localhost:2692/signin-qqhttp://www.baidu.com/signin-qq4.添加跳轉的action
[HttpGet]public async Task<IActionResult> ExternalLogin(string provider, string returnUrl){
? ?var props = new AuthenticationProperties(){RedirectUri = Url.Action("ExternalLoginCallback"),Items ={{ "returnUrl", returnUrl }}}; ? ? // start challenge and roundtrip the return URLprops.Items.Add("scheme", provider); ?
? ? ?return Challenge(props, provider); }
5.添加回調處理成功跳轉的Action
我畫了一張圖來表示這個流程:
具體的code請大家查看demo,這里就不帖太多了。
運行測試
1.打開登錄頁面,點擊“QQ”
2.從QQ登錄
我們通過第一步,跳轉到了QQ的登錄頁面:
登錄之后,QQ也有相應的提醒:
登錄之后跳轉回我們自己的程序:
這里顯示的名稱是根據QQ獲取用戶信息接口返回的QQ昵稱
同時,我們也可以在QQ互聯里面的授權管理查看我們剛剛授權登錄的信息:
其他說明
1.大家下載demo查看之后會發現,我沒有從nuget使用Microsoft.AspNetCore.Authentication.QQ這個組件,是因為這個組件在根據QQ返回的用戶信息封裝Claim時,少了兩個字段,過不了IdentityServer4的檢測,我修改補上了。
2.如果遇到其他異常可以用抓包軟件比如fiddler,抓一下與QQ通信的請求信息,看看是否有異常。
3.Demo運行,只運行QuickstartIdentityServer這一個項目就可以看到效果。
Demo地址:https://github.com/stulzq/IdentityServer4.Samples/tree/master/Quickstarts/4_ImplicitFlowAuthenticationWithExternal
相關文章:
-
學習Identity Server 4的預備知識
-
?使用Identity Server 4建立Authorization Server (1)
-
使用Identity Server 4建立Authorization Server (2)
-
使用Identity Server 4建立Authorization Server (3)
-
使用Identity Server 4建立Authorization Server (4)
-
使用Identity Server 4建立Authorization Server (5)
-
Identity Service - 解析微軟微服務架構eShopOnContainers(二)
原文:http://www.cnblogs.com/stulzq/p/7879101.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的IdentityServer4(10)- 添加对外部认证的支持之QQ登录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 想使用Docker容器?先看看这些注意事
- 下一篇: 中间件中渲染Razor视图