IdentityServer4(10)- 添加对外部认证的支持之QQ登录
来源:互联网 发布:ios11怎么更新软件 编辑:程序博客网 时间:2024/05/20 05:57
前言
前面我们提到过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 URL props.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登录
- elk系统通过nginx添加对kibana的登录认证
- ASP.NET Core的身份认证框架IdentityServer4(3)-术语的解释
- ASP.NET Core的身份认证框架IdentityServer4(7)- 使用客户端证书控制API访问
- ASP.NET Core的身份认证框架IdentityServer4(7)- 使用客户端证书控制API访问
- django QQ认证登录
- .net FrameWork WebAPI 如何添加保护接口,授权服务器是.net Core 的IdentityServer4 ,并且对signalr进行保护
- 支持多QQ登录的软件
- 支持多QQ登录的软件
- C#编写支持多个QQ登录的QQ客户端
- Drupal 7 对QQ的支持
- cas之登录认证的配置
- Shiro 之认证登录的dem
- 为Android添加对WML的支持 (一)
- Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之显示登录视图
- 给docker的官方mongo镜像添加认证登录
- Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之添加实体
- SharedPreferences的使用案例之QQ登录
- cat函数系统函数实现
- CI框架获取控制器名和方法名
- !--C语言解决实际应用题目--!
- Spring自定义标签和spring.handlers的加载过程
- vim的部分使用及makefile编写
- IdentityServer4(10)- 添加对外部认证的支持之QQ登录
- 安装 r matlab 2014a出现的问题
- C语言详解(1)数据类型
- Realm发布Realm .NET,扩展支持.NET技术栈
- 单峰函数
- C#事件
- html+css之margin使用方式
- Http协议和Tomcat服务器
- Handler 消息处理机制 简单语法介绍(内部)