ASP.NET Core的身份认证框架IdentityServer4--(4)添加第三方快捷登录
添加对外部认证的支持
接下来我们将添加对外部认证的支持。这非常简单,因为你真正需要的是一个兼容ASP.NET Core的认证处理程序。
ASP.NET Core本身也支持Google,Facebook,Twitter,Microsoft帐户和OpenID Connect。此外,你可以找到很多其他的认证供应商实现在这里。
cookies的作用
外部认证处理程序上的一个选项称为SignInScheme,例如:
services.AddAuthentication()
.AddGoogle("Google", options =>
{
options.SignInScheme = "scheme of cookie handler to use"; options.ClientId = "...";
options.ClientSecret = "...";
})
登录方案指定将暂时存储外部认证的结果的cookie处理程序的名称,例如 由外部提供商发送的身份单元。 这是必要的,因为在完成外部认证过程之前,通常会有几个重定向。
鉴于这是一种常见的做法,IdentityServer专门为此外部提供程序工作流程注册一个Cookie处理程序。 该方案通过IdentityServerConstants.ExternalCookieAuthenticationScheme常量表示。 如果您要使用我们的外部cookie处理程序,那么对于上面的SignInScheme,您将分配的值为IdentityServerConstants.ExternalCookieAuthenticationScheme常量:
services.AddAuthentication()
.AddGoogle("Google", options =>
{
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme; options.ClientId = "...";
options.ClientSecret = "...";
})
您也可以注册您自己的自定义Cookie处理程序,如下所示:
services.AddAuthentication()
.AddCookie("YourCustomScheme")
.AddGoogle("Google", options =>
{
options.SignInScheme = "YourCustomScheme"; options.ClientId = "...";
options.ClientSecret = "...";
})
对于特定的场景,您还可以将外部Cookie机制短路,并将外部用户直接转发到主要Cookie处理程序。 这通常涉及在外部处理程序上处理事件,以确保从外部身份源执行正确的声明转换。
添加Google支持
为了能够使用Google进行身份验证,您首先需要向他们进行注册。这是在他们的开发者控制台完成的。创建一个新项目,启用Google+ API,并通过将/signin-google路径添加到您的基地址(例如http//localhost:5000/signin-google)来配置本地IdentityServer的回拨地址。
如果您在端口5000上运行 - 您可以简单地使用下面的代码片段中的客户端ID /密码,因为这是由我们预先注册的。
首先添加Google身份验证处理程序到DI。这是通过添加这个片段来ConfigureServices完成的Startup:
public void ConfigureServices(IServiceCollection services)
{
// 使用内存存储,密钥,客户端和资源来配置身份服务器。
services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddInMemoryApiResources(Config.GetApiResources())//添加api资源
.AddInMemoryClients(Config.GetClients())//添加客户端
.AddTestUsers(Config.GetUsers()) //添加测试用户
.AddInMemoryIdentityResources(Config.GetIdentityResources());//添加对OpenID Connect的支持
//注册mvc服务
services.AddMvc();
//添加Google登录
services.AddAuthentication()
.AddGoogle("Google", options =>
{
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
options.ClientId = "434483408261-55tc8n0cs4ff1fe21ea8df2o443v2iuc.apps.googleusercontent.com";
options.ClientSecret = "3gcoTrEDPPJ0ukn_aYYT6PWo";
});
}
默认情况下,IdentityServer专门为外部身份验证的结果配置cookie处理程序(基于常量的方案IdentityServerConstants.ExternalCookieAuthenticationScheme)。Google处理程序的配置然后使用该cookie处理程序。为了更好地理解如何完成,请参阅快速入门文件夹AccountController下的类。
现在运行访问http://localhost:5000/account/login- 您将在登录页面上看到一个Google按钮:

登录认证之后,您可以看到,这些声明现在来自Google数据。这里需要翻、墙,不然获取不到Google账号信息。

ASP.NET Core的身份认证框架IdentityServer4--(4)添加第三方快捷登录的更多相关文章
- ASP.NET Core的身份认证框架IdentityServer4(7)- 使用客户端证书控制API访问
前言 今天(2017-9-8,写于9.8,今天才发布)一口气连续把最后几篇IdentityServer4相关理论全部翻译完了,终于可以进入写代码的过程了,比较累.目前官方的文档和Demo以及一些相关组 ...
- ASP.NET Core的身份认证框架IdentityServer4(1)-特性一览
IdentityServer4是ASP.NET Core的一个包含OpenID和OAuth 2.0协议的框架.OpenID和OAuth 的区别请看 https://www.zhihu.com/ques ...
- ASP.NET Core的身份认证框架IdentityServer4(6)- 开始
安装和概述 启动一个新的IdentityServer项目有两种基本方法: 从头开始 从Visual Studio中的ASP.NET身份模板开始 如果从头开始,我们提供了一些文档.项目帮助和内存存储支持 ...
- ASP.NET Core的身份认证框架IdentityServer4(5)- 包和构建
包和构建 IdentityServer有许多nuget包 IdentityServer4 nuget | github 包含IdentityServer核心对象模型,服务和中间件. 仅支持内存配置和用 ...
- ASP.NET Core的身份认证框架IdentityServer4(9)-使用OpenID Connect添加用户认证
OpenID Connect OpenID Connect 1.0是OAuth 2.0协议之上的一个简单的身份层. 它允许客户端基于授权服务器执行的身份验证来验证最终用户的身份,以及以可互操作和类似R ...
- ASP.NET Core的身份认证框架IdentityServer4(3)-术语的解释
IdentityServer4 术语 IdentityServer4的规范.文档和对象模型使用了一些你应该了解的术语. 身份认证服务器(IdentityServer) IdentityServer是一 ...
- ASP.NET Core的身份认证框架IdentityServer4(8)- 使用密码认证方式控制API访问
前言 本文及IdentityServer这个系列使用的都是基于.net core 2.0的.上一篇博文在API项目中我使用了icrosoft.AspNetCore.Authentication.Jwt ...
- ASP.NET Core的身份认证框架IdentityServer4(4)- 支持的规范
IdentityServer实现以下规范: OpenID Connect OpenID Connect Core 1.0 (spec) OpenID Connect Discovery 1.0 (sp ...
- ASP.NET Core的身份认证框架IdentityServer4--入门
ASP.NET Core的身份认证框架IdentityServer4--入门 2018年08月11日 10:09:00 qq_42606051 阅读数 4002 https://blog.csdn ...
- ASP.NET Core的身份认证框架IdentityServer4--入门【转】
原文地址 Identity Server 4是IdentityServer的最新版本,它是流行的OpenID Connect和OAuth Framework for .NET,为ASP.NET Cor ...
随机推荐
- jsoup爬取图片到本地
因为项目需求,需要车辆品牌信息和车系信息,昨天用一天时间研究了jsoup爬取网站信息.项目是用maven+spring+springmvc+mybatis写的. jsoup开发指南地址:http:// ...
- ASP.NET导出word实例
ASP.NET导出word实例 最近遇到一个题目就是如何在asp.net中将数据导出到word中,由于数据是动态的,所以需要在后台拼出想要的的格式,翻遍了网页找出了一个比较满意的代码,感谢那位高手.代 ...
- linux的nvme驱动需要关心的统计项
blk-mq-sysfs.c生成了一些其他的nvme的统计项, 有多少个online的cpu,在驱动加载的时候会默认生成多少个队列,除非内存不足或者在保留内核中,则会减少. [root@localho ...
- css 好看的div文本框 渐变+ 背景 + 阴影 实际应用
效果图 css <style> .box{ padding: 3px 5px 3px 18px; margin: 3px 0 3px 5px; position: relative; li ...
- 2017-07-09(tar who last)
tar gzip ,bzip2对于文件目录压缩支持有限,所以出现了tar命令 tar [选项] 打包文件名 源文件 -c 打包 -v 显示过程 -f 指定打包文件名 -x 解包 -z 压缩成.ta ...
- 从零认识Java Package
Java Package为何被设计?如果你没想过,我这里或许可以提供一种视角. 想象一下,作为一个语言的设计者,你一定会考虑一个问题:变量名的冲突.为了解决这个问题,C++引入了命名空间(namesp ...
- Mysql之左连接右连接内连接——示例 (转)
下面是两张表 表stu 表tech 1.右连接 当使用右连接语句查询时,返回结果如下: 1 SELECT stu.id,stu.name,stu.classe_name,tech.id,tech.na ...
- jenkins之角色授权[六]
标签(linux): jenkins 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 有时候我们公司里面可能有好几个开发团队,当你做完jenkins后,对于测试环 ...
- FastDFS分布式存储实战
<FastDFS分布式存储实战> 技术选型 FastDFS相关组件及原理 FastDFS介绍 FastDFS架构 FastDFS工作流程 上传 同步机制 下载 文件合并原理 实验环境说明 ...
- docker基础及安装
Docker介绍: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制 ...