日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IdentityServer4(10)- 添加对外部认证的支持之QQ登录

發(fā)布時(shí)間:2023/12/4 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IdentityServer4(10)- 添加对外部认证的支持之QQ登录 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

前面我們提到過IdentityServer4是可以添加外部認(rèn)證的,如果外部認(rèn)證支持OAuth2,那么添加到IdentityServer4是非常簡單的,在ASP.NET Core下提供了非常多的外部認(rèn)證實(shí)現(xiàn),比如Google,Facebook,Twitter,Microsoft帳戶和OpenID Connect等,但是對(duì)于我們國內(nèi)來說最常用的莫過于QQ登錄。

申請(qǐng)QQ登錄

1.訪問QQ互聯(lián)官方網(wǎng)站:https://connect.qq.com/

2.點(diǎn)擊“應(yīng)用管理”-> “創(chuàng)建應(yīng)用”,填寫你的網(wǎng)站信息,這里的信息請(qǐng)不要胡亂填寫,這個(gè)會(huì)影響審核的,以后要是修改了這些信息需要重新審核。

填寫完善資料的時(shí)候,唯一一個(gè)需要注意的就是回調(diào)地址,這里我們后面詳細(xì)介紹。

3.等待審核結(jié)果,這里審核還是非常快的,一般一天左右就行了

注意:如果網(wǎng)站沒有備案號(hào)我不知道是否能通過申請(qǐng),我自己是擁有備案號(hào)的,然后網(wǎng)站LOGO必須上傳,不然會(huì)申請(qǐng)不過的。

添加QQ登錄

QQ登錄是支持OAuth2,所以可以集成到IdentityServer4。本來是打算自己寫一個(gè)的,但是在查找信息的過程中,發(fā)現(xiàn)已經(jīng)有人實(shí)現(xiàn)了,組件名為:Microsoft.AspNetCore.Authentication.QQ,Nuget可以直接安裝。

1.先將 Microsoft.AspNetCore.Authentication.QQ 組件添加到項(xiàng)目中

2.配置QQ登錄信息

在Startup類的ConfigureServices方法里添加如下代碼:

services.AddAuthentication().AddQQ(qqOptions =>{qqOptions.AppId = "";qqOptions.AppKey = "";})

3.在QQ互聯(lián)后臺(tái)配置回調(diào)地址

回調(diào)地址是隨時(shí)可以在QQ互聯(lián)后臺(tái)配置的,因?yàn)檫@個(gè)回調(diào)地址已經(jīng)在QQ登錄組件里定義了的,所以此處配置為:

http://你的域名/signin-qq

比如:

http://localhost:2692/signin-qqhttp://www.baidu.com/signin-qq

4.添加跳轉(zhuǎn)的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.添加回調(diào)處理成功跳轉(zhuǎn)的Action


我畫了一張圖來表示這個(gè)流程:

具體的code請(qǐng)大家查看demo,這里就不帖太多了。

運(yùn)行測(cè)試

1.打開登錄頁面,點(diǎn)擊“QQ”

2.從QQ登錄

我們通過第一步,跳轉(zhuǎn)到了QQ的登錄頁面:

登錄之后,QQ也有相應(yīng)的提醒:

登錄之后跳轉(zhuǎn)回我們自己的程序:

這里顯示的名稱是根據(jù)QQ獲取用戶信息接口返回的QQ昵稱

同時(shí),我們也可以在QQ互聯(lián)里面的授權(quán)管理查看我們剛剛授權(quán)登錄的信息:

其他說明

1.大家下載demo查看之后會(huì)發(fā)現(xiàn),我沒有從nuget使用Microsoft.AspNetCore.Authentication.QQ這個(gè)組件,是因?yàn)檫@個(gè)組件在根據(jù)QQ返回的用戶信息封裝Claim時(shí),少了兩個(gè)字段,過不了IdentityServer4的檢測(cè),我修改補(bǔ)上了。

2.如果遇到其他異常可以用抓包軟件比如fiddler,抓一下與QQ通信的請(qǐng)求信息,看看是否有異常。

3.Demo運(yùn)行,只運(yùn)行QuickstartIdentityServer這一個(gè)項(xiàng)目就可以看到效果。

Demo地址:https://github.com/stulzq/IdentityServer4.Samples/tree/master/Quickstarts/4_ImplicitFlowAuthenticationWithExternal


相關(guān)文章:

  • 學(xué)習(xí)Identity Server 4的預(yù)備知識(shí)

  • ?使用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 - 解析微軟微服務(wù)架構(gòu)eShopOnContainers(二)


原文:http://www.cnblogs.com/stulzq/p/7879101.html


.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com

總結(jié)

以上是生活随笔為你收集整理的IdentityServer4(10)- 添加对外部认证的支持之QQ登录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。