IdentityServer4 配置负载均衡

如果使用 IdentityServer4 做授权服务的负载均衡,默认情况下是不可以的,比如有两个授权服务站点,一个资源服务绑定其中一个授权服务(Authority配置),如果通过另外一个授权服务获取access_token,然后拿这个access_token去访问资源服务,会报 401 未授权错误,为什么?原因在这:

By default an access token will contain claims about the scope, lifetime (nbf and exp), the client ID (client_id) and the issuer name (iss).

归纳一下,生成access_token受影响的因素:

  • scope(授权范围):服务包含在 scope 内,生成的access_token,才能访问本服务。

  • lifetime(生命周期):过期的access_token,无效访问。

  • client ID (client_id):不同的客户端 ID,生成不同对应的access_token

  • issuer name (iss):翻译过来“发行者名称”,类似于主机名。

  • RSA 加密证书(补充):不同的加密证书,生成不同对应的access_token

要让负载均衡下的两个授权服务,可以正常使用的话,需要确保两台授权服务以上五种因素完全一致,除了 issuer name (iss),其他因素都是一样的。

IdentityServer4 怎么设置 issuer name (iss)呢?答案是通过IssuerUri

  • IssuerUri:Set the issuer name that will appear in the discovery document and the issued JWT tokens. It is recommended to not set this property, which infers the issuer name from the host name that is used by the clients, If not set, the issuer name is inferred from the request.

说明中不建议我们进行设置,默认情况下,IdentityServer4 会从客户端的主机名中获取,可以认为,默认情况下,issuer name(IssuerUri)就是授权服务的主机名(比如http://10.9.1.1:5000)。

手动设置IssuerUri代码:

var builder = services.AddIdentityServer(x => x.IssuerUri = "http://111.12.2.21:8000"); //slb 地址

资源服务授权配置修改:

app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{Authority = "http://111.12.2.21:8000", //slb 地址ApiName = "trade_refund",RequireHttpsMetadata = false});

获取access_token示例代码:

var client = new DiscoveryClient("http://111.12.2.21:8000"); 
//必须是 slb 地址,如果是单独的授权服务地址,会报错误(Value cannot be null. Parameter name: address)

client.Policy.RequireHttps = false;
var disco = await client.GetAsync();
var tokenClient = new TokenClient(disco.TokenEndpoint, clientId, clientSecret);
var tokenResponse = tokenClient.RequestClientCredentialsAsync(scope);
var accessToken = tokenResponse.AccessToken;

通过 HTTP Post 获取access_token(不通过 slb,直接请求单独的授权服务),可以授权访问资源服务,获取access_token示例:

参考资料:

  • Protecting an API using Client Credentials

  • IdentityServer Options


相关文章:

  • IdentityServer4(OAuth2.0服务)折腾笔记

  • IdentityServer4 实现 OpenID Connect 和 OAuth 2.0

  • IdentityServer4 使用OpenID Connect添加用户身份验证

  • IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API

  • IdentityServer4 指定角色授权(Authorize(Roles="admin"))

  • IdentityServer4 SigningCredential(RSA 证书加密)

  • IdentityServer4 实现自定义 GrantType 授权模式

原文地址:http://www.cnblogs.com/xishuai/p/identityserver4-slb.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaFX图表(七)之散点图

翻译自 JavaFX - 散点图 散点图是一种图形,它使用在笛卡尔平面中绘制的两个变量的值。它通常用于找出两个变量之间的关系。 以下是在面积和重量之间绘制的散点图。 在JavaFX中,Scatter图表由名为ScatterChart的类表示。该类属于包javafx.scene.chart。…

来自一位家长的电话

【文本不推荐看,只当做个人反思记录】大家好,我是雄雄,欢迎关注本公众号【雄雄的小课堂】。最近,本人的个人站上线,点击文末左下角的“阅读原文(http://muxiongxiong.cn)”即可浏览,…

Visual Studio 2017 15.3 预览版发布,接近最终版

从Visual Studio 2017 15.3预览版的发布时间表中可以看出,Microsoft似乎马上要发布这一版本的正式版。过去几周对VS2017 15.3的改动主要集中在问题修复上,开发人员可以注意到,最近的VS2017 15.3 Preview版本提供了对C# 7.1的支持,…

JavaFX图表(八)之堆积条形图

翻译自 JavaFX - 堆积条形图 StackedBarChart是BarChart的变体,它绘制了指示类别数据值的条形图。条形可以是垂直的或水平的,这取决于哪个轴是类别轴。每个系列的栏位于上一系列的顶部。 以下是堆积条形图,描绘了人口增长。 在JavaFX中&a…

P2698-花盆Flowerpot【单调队列】

正题 链接 https://www.luogu.org/record/show?rid7934370 大意 有n滴水,给出坐标,水每一个时间单位会往下掉一格,花盆可以随意摆放,要求在宽度最小的情况下接住的第一滴水和最后一滴水时间差超过D 解题思路 横坐标排序&am…

Redis(案例二:高并发商品首页热点数据开发实战)

热点数据 经常会被查询,但是不经常被修改或者删除的数据 ⾸⻚-详情⻚ 链路逻辑 检查缓存是否有 缓存不存在则查询数据库 查询结果放到缓存,设置过期时间 下次访问则命中缓存 代码实现 pojo —热点视频 Data NoArgsConstructor AllArgsConstructor pub…

VS2012找不到EF框架实体模型的解决方法

大家好,我是雄雄,欢迎关注本公众号【雄雄的小课堂】。最近,本人的个人站上线,点击文末左下角的“阅读原文”即可浏览,欢迎浏览、点赞与留言呦~网址:http://www.muxiongxiong.cn前天,在上课时&am…

C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码

前言 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 一点感想 很意外的,第一篇博文被博客园的编辑大哥置顶了.感谢. 评论也很多,褒贬不一,我还是那句话.技术是从无到有的过程,就像一个刚出生的人 不是说他有个强大的爸爸 所以就可以一出生就上天. …

构建SpringCloud项目基础框架

文章目录父项目microcloud本地模拟RPC调用common-api子模块创建dto类创建服务接口创建一个对象拷贝的工具类provider-dept-8001 子模块bootstrap.ymlapplication.ymllogback-spring.xmlSwagger配置创建MyBatisPlus配置类部门 数据库创建脚本创建Dept映射类创建IDeptDAO数据接口…

Nginx中如何配置中文域名?

大家好,我是雄雄,欢迎关注公众号【雄雄的小课堂】。最近我的个人站上线了,一直在优化中,目前优化最多的就是后台,将主页面的色彩重新搭配了下,稍微好看点儿了,以下是后台界面:前台界…

JavaFX图表(九)之堆积面积图

翻译自 JavaFX - 堆积面积图 StackedArea Chart是区域图的变体,显示每个值的贡献趋势(例如 - 加班)。堆叠区域使每个系列相邻,但不与前面的系列重叠。这与区域图表形成对比,其中每个系列覆盖前面的系列。 以下是描绘…

ASP.NET Core MVC – 自定义 Tag Helpers

介绍 在之前的内容中,我们谈到了Tag Helpers,我们还谈到了 caching Tag Helpers和form Tag Helpers。 通过创建自定义Tag Helpers,我们可以扩展现有元素或创建我们自己的元素。 Tag Helper是实现ITagHelper接口类的统称。MVC为我们提供了该…

sqlserver建库建表建约束,删库删表删约束的示例总结

1.创建一个数据库catedb,保存在本地D盘下面的DB中,主数据文件的初始大小为5MB,最大为200MB,增长率为10%,日志文件的初始大小为3MB,无限制增长,其增长率为2MB,请使用sql语句检测master数据库中是…

JFreeChart(二)之饼图

转载自 JFreeChart饼图 在饼图中,每个扇区的弧长成正比它代表的数量。本章演示了如何使用JFreeChart 从一个给定的业务数据创建饼图。 业务数据 下面的例子描述了移动销售饼图。以下是不同移动品牌和销售(每天单位)列表。 S.N.手机品牌销售(天)1Iphone 5S202Sam…

mysql中如何将默认用户名root改成其他?

大家好,我是雄雄,欢迎关注公众号【雄雄的小课堂】。最近,我的个人站上线啦,大家可以直接在浏览器的地址栏中输入:穆雄雄.com,轻轻敲击回车,即可直接进入……欢迎大家多多关注,多多留…

ASP.NET Core - Razor 页面介绍

简介 随着ASP.NET Core 2 即将来临,最热门的新事物是Razor页面。在之前的一篇文章中,我们简要介绍了ASP.NET Core Razor 页面。 Razor页面是ASP.NET Core的一个新功能,可以使基于页面的编程方式更容易,更高效。 大众的初步印象是…

P2153-晨跑【费用流,网络流,拆点】

前言 这是评测记录 正题 AC评测记录链接: https://www.luogu.org/record/show?rid7945350 大意 一个图,没错要求不能走重复的边和点。求走最多次的情况下路最短。 解题思路 每次行走就是一个流量在流,然后将边权设为1就可以保证边只能走…

从试卷中悟出的道理……

大家好,我是雄雄,欢迎关注公众号【雄雄的小课堂】。最近,我的个人站上线啦,大家可以直接在浏览器的地址栏中输入:穆雄雄.com,轻轻敲击回车,即可直接进入……不管是三班还是四班,一听…

JFreeChart(三)之条形图

转载自 JFreeChart条形图 本章演示了如何使用JFreeChart从一个给定的业务数据创建条形图。 条形图使用不同的方位(水平或垂直)条,以显示不同类别的比较。图表中的一个轴(域轴)示出了特定的域进行比较,并在另一个轴(范围轴)表示的离散值。 业务数据 …

ASP.NET Core 快速入门(实战篇)

上篇讲了《asp.net core在linux上的环境部署》。今天我们将做几个小玩意实战一下。用到的技术和工具有mysql、websocket、AngleSharp(爬虫html解析)、nginx多站点部署。 NO1 留言板(mysql的使用) 演示:http://haojim…