本文在 2019/4/3 更新到 .NET Core 2.2git
前面咱們提到過IdentityServer4是能夠添加外部認證的,若是外部認證支持OAuth2,那麼添加到IdentityServer4是很是簡單的,在ASP.NET Core下提供了很是多的外部認證明現,好比Google,Facebook,Twitter,Microsoft賬戶和OpenID Connect等,可是對於咱們國內來講最經常使用的莫過於QQ登陸。github
1.訪問QQ互聯官方網站:https://connect.qq.com/ide
2.點擊「應用管理」-> 「建立應用」,填寫你的網站信息,這裏的信息請不要胡亂填寫,這個會影響審覈的,之後要是修改了這些信息須要從新審覈。測試
填寫完善資料的時候,惟一一個須要注意的就是回調地址,這裏咱們後面詳細介紹。網站
3.等待審覈結果,這裏審覈仍是很是快的,通常一天左右就好了ui
注意:若是網站沒有備案號我不知道是否能經過申請,我本身是擁有備案號的,而後網站LOGO必須上傳,否則會申請不過的。3d
QQ登陸是支持OAuth2,因此能夠集成到IdentityServer4。code
1.先經過Nuget將 Unicorn.AspNetCore.Authentication.QQ
組件添加到項目中server
2.配置QQ登陸信息blog
在Startup
類的ConfigureServices
方法裏添加以下代碼:
services.AddAuthentication() .AddQQ("QQ", qqOptions => { qqOptions.AppId = "<insert here>"; qqOptions.AppKey = "<insert here>"; })
3.在QQ互聯後臺配置回調地址
回調地址是隨時能夠在QQ互聯後臺配置的,由於這個回調地址已經在QQ登陸組件裏定義了的,因此此處配置爲:
http://你的IdentityServer4地址/signin-qq
好比:
http://localhost:2692/signin-qq http://www.baidu.com/signin-qq
4.編寫擴展登陸邏輯
2019/4/3因爲更新的緣由,移除了原來帖的部分邏輯代碼,請直接查看Demo
我畫了一張圖來表示這個流程:
具體的code請你們查看demo,這裏就不帖太多了。
2019/4/3 因爲使用官方最新Demo來進行修改,圖中的一個Action名稱:ExternalLoginCallback已經變了,詳情請查看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
這一個項目就能夠看到效果。