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- (快速入门)添加外部认证支持的更多相关文章

  1. IdentityServer4 中文文档 -15- (快速入门)添加 JavaScript 客户端

    IdentityServer4 中文文档 -15- (快速入门)添加 JavaScript 客户端 原文:http://docs.identityserver.io/en/release/quicks ...

  2. IdentityServer4 中文文档 -13- (快速入门)切换到混合流并添加 API 访问

    IdentityServer4 中文文档 -13- (快速入门)切换到混合流并添加 API 访问 原文:http://docs.identityserver.io/en/release/quickst ...

  3. IdentityServer4 中文文档 -11- (快速入门)添加基于 OpenID Connect 的用户认证

    IdentityServer4 中文文档 -11- (快速入门)添加基于 OpenID Connect 的用户认证 原文:http://docs.identityserver.io/en/releas ...

  4. IdentityServer4 中文文档 -16- (快速入门)使用 EntityFramework Core 存储配置数据

    IdentityServer4 中文文档 -16- (快速入门)使用 EntityFramework Core 存储配置数据 原文:http://docs.identityserver.io/en/r ...

  5. IdentityServer4 中文文档 -14- (快速入门)使用 ASP.NET Core Identity

    IdentityServer4 中文文档 -14- (快速入门)使用 ASP.NET Core Identity 原文:http://docs.identityserver.io/en/release ...

  6. IdentityServer4 中文文档 -8- (快速入门)设置和概览

    IdentityServer4 中文文档 -8- (快速入门)设置和概览 原文:http://docs.identityserver.io/en/release/quickstarts/0_overv ...

  7. IdentityServer4 中文文档 -9- (快速入门)使用客户端凭证保护API

    IdentityServer4 中文文档 -9- (快速入门)使用客户端凭证保护API 原文:http://docs.identityserver.io/en/release/quickstarts/ ...

  8. IdentityServer4 中文文档 -10- (快速入门)使用密码保护API

    IdentityServer4 中文文档 -10- (快速入门)使用密码保护API 原文:http://docs.identityserver.io/en/release/quickstarts/2_ ...

  9. IdentityServer4 中文文档 -7- (简介)贡献

    IdentityServer4 中文文档 -7- (简介)贡献 原文:http://docs.identityserver.io/en/release/intro/contributing.html ...

随机推荐

  1. HTML5的Rang对象

    基本概念 Range对象代表页面上的一段连续的区域.通过Range对象,可以获取或修改网页上的任何区域. Selection与Range对象的使用 <body> <script> ...

  2. 10-Mock模拟接口返回数据

    1.安装mock 方法一:pip安装 命令行直接输入:pip install mock 方法二:官网下载mock安装包安装 下载安装包后,解压,命令行进入解压目录,执行python setup.py ...

  3. Web browser的发展演变

    我们每天都在使用着浏览器,每个人使用的浏览器各不一样.在这个科技飞速发展的时代,一个游览器能否站住脚跟取决于使用者的数量,看用户是否喜欢这个产品,听取用户们的意见来改善. 我们这个年龄的人最初用到的浏 ...

  4. [python] 3 、基于串口通信的嵌入式设备上位机自动测试程序框架(简陋框架)

    星期一, 20. 八月 2018 01:53上午 - beautifulzzzz 1.前言 做类似zigbee.ble mesh...无线网络节点性能测试的时候,手动操作然后看表象往往很难找出真正的原 ...

  5. 吴恩达机器学习笔记50-主成分分析算法(PCA Algorithm)

    PCA 减少

  6. linux创建用户并设置密码

    1.在root权限下,useradd只是创建了一个用户名,如(useradd+用户名),它并没有在/home目录下创建同名文件夹,也没有创建密码,因此利用这个用户登录系统,是登录不了的,为了避免这样的 ...

  7. 【Spark调优】聚合操作数据倾斜解决方案

    [使用场景] 对RDD执行reduceByKey等聚合类shuffle算子或者在Spark SQL中使用group by语句进行分组聚合时,经过sample或日志.界面定位,发生了数据倾斜. [解决方 ...

  8. API接口开发(持续更新)

    1. 接口调用失败时的处理方式 接口调用失败时分为 请求失败和业务失败. 请求失败的相关信息可通过HTTP状态码体现出来, 业务失败的相关信息需要在返回数据中体现出来. 2. 分页查询 批量查询时需要 ...

  9. python 实现wav的波形显示(时域和频域)

    音频处理中,经常要看一下啊频域图是什么样子的,这里自己写了一个小程序,可以完美的同步显示时域和频域图,直接上代码: #wave data -xlxw #import import wave as we ...

  10. ubuntu 16.04下安装ADB

    1. 安装adb工具. 从谷歌的网站下载LINUX adb调试工具(FQ),当然可以随便百度一个一大堆. http://developer.android.com/tools/device.html ...