好用的网站开发框架,桂林做网站的公司,旅游网站的制作,破天网站定制前言 前面我们提到过IdentityServer4是可以添加外部认证的#xff0c;如果外部认证支持OAuth2#xff0c;那么添加到IdentityServer4是非常简单的#xff0c;在ASP.NET Core下提供了非常多的外部认证实现#xff0c;比如Google#xff0c;Facebook#xff0c;Twitter如果外部认证支持OAuth2那么添加到IdentityServer4是非常简单的在ASP.NET Core下提供了非常多的外部认证实现比如GoogleFacebookTwitterMicrosoft帐户和OpenID Connect等但是对于我们国内来说最常用的莫过于QQ登录。 申请QQ登录 1.访问QQ互联官方网站https://connect.qq.com/ 2.点击“应用管理”- “创建应用”填写你的网站信息这里的信息请不要胡乱填写这个会影响审核的以后要是修改了这些信息需要重新审核。 填写完善资料的时候唯一一个需要注意的就是回调地址这里我们后面详细介绍。 3.等待审核结果这里审核还是非常快的一般一天左右就行了 注意如果网站没有备案号我不知道是否能通过申请我自己是拥有备案号的然后网站LOGO必须上传不然会申请不过的。 添加QQ登录 QQ登录是支持OAuth2所以可以集成到IdentityServer4。本来是打算自己写一个的但是在查找信息的过程中发现已经有人实现了组件名为Microsoft.AspNetCore.Authentication.QQNuget可以直接安装。 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 TaskIActionResult 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