前言

前面我们提到过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-qq

4.添加跳转的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登录相关推荐

  1. Django对接第三方认证登录平台(QQ登录)

    QQ登录开发文档 QQ互联开发者申请步骤 若想实现QQ登录,需要成为QQ互联的开发者,审核通过才可实现. 相关链接: http://wiki.connect.qq.com/%E6%88%90%E4%B ...

  2. .NET Core IdentityServer4实战 第二章-OpenID Connect添加用户认证

    内容:本文带大家使用IdentityServer4进行使用OpenID Connect添加用户认证 作者:zara(张子浩) 欢迎分享,但需在文章鲜明处留下原文地址. 在这一篇文章中我们希望使用Ope ...

  3. 如何在Windows 10 IoT Core中添加其他语言的支持,如中文

    目前很多开发者已经开始使用Windows 10 IoT来做物联网领域的开发了,目前Windows 10 IoT Core的版本支持树莓派2(以及新出的树莓派3).Minnowboard Max以及Dr ...

  4. android http协议添加Authorization认证方式

      今天,简单讲讲android里如何使用http请求时在头部添加Authorization认证方式. 其实也很简单,之前需要做一个功能,在android去使用http访问设备,但是每次的访问 ...

  5. Kafka 认证三:添加 Kerberos 认证详细流程

    背景 上一章节介绍了 Kerberos 服务端和客户端的部署过程,本章节继续介绍 Kafka 添加 Kerberos 认证的部署流程,及 Java API 操作的注意事项. sasl.kerberos ...

  6. Spring Cloud【Finchley】-03将微服务注册到Eureka Server上 + 为Eureka Server添加用户认证

    文章目录 概述 将用户微服务micorservice-provider-user注册到Eureka Server上 pom中增加 spring-cloud-starter-netflix-eureka ...

  7. impala添加kerberos认证

    impala添加kerberos认证 impala添加kerberos认证 背景 环境 配置 kerberos操作 集群配置 问题 impalad启动报错 catalog启动报错 注意 参考 impa ...

  8. Portal服务器开源无线,OpenPortalServer开源Portal服务 Web认证服务器 支持华为 H3C 锐捷设备...

    ​ OpenPortalServer开源Portal服务 Web认证服务器  支持华为 H3C  锐捷设备 OpenPortal官方交流群 119688084 该软件是基于华为AC/BAS PORTA ...

  9. linux 桌面缩放比例,Linux Mint 20 Cinnamon 4.6桌面环境添加分数比例缩放支持

    如果您在高分辨率显示器上使用Cinnamon桌面环境?那么有一个好消息是:Cinnamon 4.6桌面环境将添加分数比例缩放支持,它会引入到Linux Mint 20(基于Ubuntu 20.04 L ...

最新文章

  1. 京东智能内容创作算法的演进与实践:基于关键词自动生成摘要
  2. TOMACAT源码解析
  3. 3、基于多播、安全认证的corosync集群(VIP、Httpd、Filesystem)
  4. file is too short to be an sstable [[Node: save/RestoreV2 = RestoreV2[dtypes=[DT_FLOAT, DT_FLOAT, DT
  5. 人工智能专业国内排名前30的高校,与你想的一样吗?
  6. Servlet 编程基础
  7. mysql归档日志满了_MySQL核心知识学习之路(1)
  8. java基础之lambda表达式
  9. 1002 写出这个数 (20分)-Java
  10. 一个学单片机的不错网站
  11. 云图说 | 分布式缓存服务DCS—站在开源Redis前辈的肩膀上,扬帆起航
  12. Sublime Text 3 如何配置Python环境及安装插件?
  13. qt初步---Qt实现软件从Windows到Linux跨平台
  14. c语言编写面向对象的类
  15. 微信小程序点餐系统源码(微信点餐软件外卖系统)搭建
  16. P2P业务整体流程图
  17. 免费主机,免费二级域名分发,免费建临时网站,免费扒网
  18. Linux环境,使用convert命令批量转换JPG图片——缩小图片尺寸
  19. 应届毕业生怎么找java工作,应届毕业生怎么能找到高薪工作?
  20. 麦克劳林公式求sin(x)

热门文章

  1. 《计算机组成原理》----2.3 二进制运算
  2. CentOS利用crontab执行计划任务
  3. Informatica bulk与normal模式的深入详解(转)
  4. SQLite.NET (32位) 在64位环境中无法正常调试
  5. 了解android应用开发的更多方面有更好的认识
  6. 如何在 ASP.NET CORE 中获取客户端 IP ?
  7. 使用Pitcher简化卫语句
  8. Docker小白到实战之容器数据卷,整理的明明白白
  9. 记一次 .NET 某三甲医院HIS系统 内存暴涨分析
  10. 全网最通透的“闭包”认知 · 跨越语言