IdentityServer4 中文文档 -12- (快速入门)添加外部认证支持
IdentityServer4 中文文档 -12- (快速入门)添加外部认证支持
原文:http://docs.identityserver.io/en/release/quickstarts/4_external_authentication.html
上一篇:IdentityServer4 中文文档 -11- (快速入门)添加基于 OpenID Connect 的用户认证
下一篇:IdentityServer4 中文文档 -13- (快速入门)切换到混合流并添加 API 访问
接下来我们将添加外部认证支持。这真的很简单,因为你所需要的实际上只是一个 ASP.NET Core 兼容的认证中间件。
ASP.NET Core 自身已经承载了对 Google,Facebook,Twitter,Microsoft 账户 以及 OpenID Connect 的支持。另外你可以在 这里 找到更多其他的认证提供程序。
添加 Google 支持
为了能够使用 Google 进行身份验证,你首先需要对其进行注册。这应该是在开发人员控制台完成的。创建一个新项目,启用 Google+ API 并且通过添加 /signin-google 路径到你的基地址来配置你本地 IdentityServer 的回调地址(比如:http://localhost:5000/signin-google)。
如果你在 5000 端口上运行 IdentityServer - 那么你可以简单地从以下代码片段中使用客户端id/密码,因为这是我们预先注册的。
首先添加 Google 认证中间 NuGet 程序包到你的项目中(Microsoft.AspNetCore.Authentcation.Google
)
然后我们要将中间件添加到管道中。顺序很重要,额外的认证中间件必须在 IdentityServer 之后、MVC 之前运行。
默认情况下我们会在幕后连接一个 cookie 中间件,这样的话外部认证就能够存储它的输出。你只需要将外部认证中间件添加到管道中,并让它使用 IdentityServerConstants.ExternalCookieAuthenticationScheme
登录方案:
app.UseGoogleAuthentication(new GoogleOptions
{
AuthenticationScheme = "Google",
DisplayName = "Google",
SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme,
ClientId = "434483408261-55tc8n0cs4ff1fe21ea8df2o443v2iuc.apps.googleusercontent.com",
ClientSecret = "3gcoTrEDPPJ0ukn_aYYT6PWo"
});
注意:在 ASP.NET Core Identity 中使用外部认证的时候,
SignInScheme
必须设置为Identity.External
,而不是IdentityServerConstants.ExternalCookieAuthenticationScheme
。
现在运行 MVC 客户端,然后尝试进行认证 - 你将在登录页面上看到一个 Google 按钮:
通过认证后,你可以看到现在的身份信息是由 Google 数据提供的了:
进一步实验
你可以添加额外的外部认证提供程序。我们有一个云托管的 IdentityServer4 示例版本,你可以通过 OpenID Connect 集成它。
首先添加 Microsoft.AspNetCore.Authentication.OpenIDConnect
Nuget 程序包到你的 IdentityServer 项目中:
然后添加对应的中间件:
// 外部 OpenId Connect 认证中间件。
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme,
SignOutScheme = IdentityServerConstants.SignoutScheme,
DisplayName = "开放链接",
Authority = "https://demo.identiyserver.io/",
ClientId = "implicit",
TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name",
RoleClaimType = "role"
}
});
注意:快速入门 UI 会自动提供外部用户。换句话说,如果一个外部用户第一次登陆进来,就会创建一个本地用户,所有外部身份信息都会被复制过来并与新的本地用户关联。处理这种情况的方法完全取决于你怎么想。也许你会想要首先显示某种用户注册页面。默认的快速入门源代码可以在 这里 找到。
上一篇:IdentityServer4 中文文档 -11- (快速入门)添加基于 OpenID Connect 的用户认证
下一篇:IdentityServer4 中文文档 -13- (快速入门)切换到混合流并添加 API 访问
IdentityServer4 中文文档 -12- (快速入门)添加外部认证支持的更多相关文章
- IdentityServer4 中文文档 -15- (快速入门)添加 JavaScript 客户端
IdentityServer4 中文文档 -15- (快速入门)添加 JavaScript 客户端 原文:http://docs.identityserver.io/en/release/quicks ...
- IdentityServer4 中文文档 -13- (快速入门)切换到混合流并添加 API 访问
IdentityServer4 中文文档 -13- (快速入门)切换到混合流并添加 API 访问 原文:http://docs.identityserver.io/en/release/quickst ...
- IdentityServer4 中文文档 -11- (快速入门)添加基于 OpenID Connect 的用户认证
IdentityServer4 中文文档 -11- (快速入门)添加基于 OpenID Connect 的用户认证 原文:http://docs.identityserver.io/en/releas ...
- IdentityServer4 中文文档 -16- (快速入门)使用 EntityFramework Core 存储配置数据
IdentityServer4 中文文档 -16- (快速入门)使用 EntityFramework Core 存储配置数据 原文:http://docs.identityserver.io/en/r ...
- IdentityServer4 中文文档 -14- (快速入门)使用 ASP.NET Core Identity
IdentityServer4 中文文档 -14- (快速入门)使用 ASP.NET Core Identity 原文:http://docs.identityserver.io/en/release ...
- IdentityServer4 中文文档 -8- (快速入门)设置和概览
IdentityServer4 中文文档 -8- (快速入门)设置和概览 原文:http://docs.identityserver.io/en/release/quickstarts/0_overv ...
- IdentityServer4 中文文档 -9- (快速入门)使用客户端凭证保护API
IdentityServer4 中文文档 -9- (快速入门)使用客户端凭证保护API 原文:http://docs.identityserver.io/en/release/quickstarts/ ...
- IdentityServer4 中文文档 -10- (快速入门)使用密码保护API
IdentityServer4 中文文档 -10- (快速入门)使用密码保护API 原文:http://docs.identityserver.io/en/release/quickstarts/2_ ...
- IdentityServer4 中文文档 -7- (简介)贡献
IdentityServer4 中文文档 -7- (简介)贡献 原文:http://docs.identityserver.io/en/release/intro/contributing.html ...
随机推荐
- Charles配置抓取HTTPS请求的Android配置
关于android手机在mac版charles上抓不到包这个问题困扰了很久,查阅了很多资料,发现是android7.0系统安全策略问题. Charles抓包正常流程1.在手机上配置证书 点击后:直接在 ...
- lightoj 1074
这题怎么说呢,负环上的点都不行 网上也有很多解法 我用dfs的spfa解的 我发现网上别人的代码都是用bfs的spfa写的,我就用的dfs的,快了好多 代码还看的别人的,只有中间的spfa是自己写的 ...
- eclipse里报:An internal error occurred during: "Building workspace". Java heap space(内存溢出)
当在eclipse中的web工程中增加了extjs4,出现An internal error occurred during: "Building workspace".Java ...
- vs链接错误解决方法
常见引起链接错误的主要原因是由于项目不能找到所需的动态库的路径: 这里介绍一下引用第三方动态库的配置方法: 方法一: vs加载动态库需要先把动态库拷贝到exe所在文件夹,再修改项目属性: 链接器-&g ...
- 面试官问我,使用Dubbo有没有遇到一些坑?我笑了。
前言 17年的时候,因为一时冲动没把持住(当然最近也有粉丝叫我再冲动一把再更新一波),结合面试题写了一个系列的Dubbo源码解析.目前公众号大部分粉丝都是之前的粉丝,这里不过多介绍. 根据我的面试经验 ...
- jQuery.extend(object)
为jQuery类添加类方法,可以理解为添加静态方法. jQuery.extend({ min: function(a, b) { return a < b ? a : b; }, max: f ...
- audacity 做音频分析之--初相识
软件介绍: Audacity是一个跨平台的声音编辑软件,用于录音和编辑音频,是自由.开放源代码的软件.可在Mac OS X.Microsoft Windows.GNU/Linux和其它操作系统上运作. ...
- 免费开源的diff软件“meld”-替代beyond compare的神器
命令行直接对比文件 meld dir1 dir2 & 1,安装 mld, 可以选择windows, linux, macos系统,都有提供安装. ubuntu 中安装: sudo apt-ge ...
- 一文了解Python中的循环(for while break continue 嵌套循环...)
循环 目标 程序的三大流程 while 循环基本使用 break 和 continue while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下,顺序执行 ...
- stc15f104w模拟串口使用
stc15f104w单片机体积小,全8个引脚完全够一般的控制使用,最小系统也就是个电路滤波----加上一个47uf电容和一个103电容即可,但因为其是一个5V单片机,供电需要使用5V左右电源. 该款单 ...