AspNetCore中使用Ocelot之 IdentityServer4

前言:

Ocelot网关是基于AspNetCore开发的可扩展的高性能的企业级Api网关,目前已经基于2.0 升级版本升级,在使用AspNetCore 开发的时候可以使用2.0版本了,

开源项目Ocelot 张大队长是主力的参与人员,以前提起张大队前面都会加个腾讯,张大队于2018年8月8日 正式离开了腾讯,回归了真我,这里祝张大队:事事顺心。

Ocelot是开源的,开源协议是MIT,所以我们可以大胆放心的使用。 

OcelotGitHub地址:https://github.com/ThreeMammals/Ocelot

Ocelot的中文文档:https://blog.csdn.net/sD7O95O/article/details/79623654

 

目前OceLot  已经成为了一个使用AspNetCore 几乎 必会的一项技术了,所以关注,并且要学习,或者已经在使用的.net 开发人员可以关注并学习了解一下Ocelot

Ocelot的功能:

  1、基于IdentityServer4的认证
  2、Consul的注册发现
  3、单机的限流控制
  4、基于Polly的使用
  5、支持Http以及其他的rpc通讯
  6、网关集群
        等功能,

可以看出非常的强大。接下来我们将Ocelot的功能基于AspNetCore 进行实现。首先学习一下IdentityServer4

1、基于IdentityServer4的认证

在使用之前我们先明白IdentityServer4 是什么以及使用原理。

文档地址:http://docs.identityserver.io/en/release/

中文文档:网上也有 推荐 :https://www.cnblogs.com/ideck/

IdentityServer 认证的作用是,不是谁想登录我的Web就能登录的,也不是谁想使用我的接口就能使用的,不经过我的同意就想使用我的服务那是不存在的,除非你是故意的。

我们说一个故事。

怎么说呢,认证其实就是一把钥匙,打开一扇门的钥匙,就好比几个人一起租房子一样,该房门的钥匙是指纹的,房东只给四个人授权了指纹开门的权限,现在有四个人可以进屋了,但是我们有五个人要进屋,但是房东只授权我们其中四个人了,还有一人没有钥匙,但是每多配一把钥匙,需要向房东申请授权,申请通过后才能指纹开锁,这个人才能进屋,我们变要求房东在授权一个人,但是这时候房东说了那位哥们看起来不像是好人不给授权,如果以后回来了敲门,确定是你后我来给开门,后来这哥们气不过通过私下操作也能开门了,有一天被发现了,该哥们便失去了租住的权利了。 

这里的钥匙就是秘钥,有秘钥了才能有进行访问程序的权限,但是秘钥只有授权后才能使用,事实上没有经过授权的秘钥是不能进行程序访问的,但是万事都不是绝对的,安全一直是我们所关注的问题,就好比一把简单的钥匙,经过违规操作,就能打开一扇门,危害我们的安危,这把违规的钥匙告诉我们的是,秘钥要严加看管,轻易不要暴露给别人,安全也要加强不要轻易放松。

IdentityServer4 的规则:

  1、我们常见的程序之间的交互方式有:
  2、浏览器和web 之间的通信:
  3、Web 于Api之间的通信:
  4、用户于Api 之间的通信:
  5、浏览器程序 于Api 之间的通信:
  6、服务器程序 于Api 通讯:
  7、Api 之间的相互通讯:

为了保证安全我们创建一个安全令牌的服务,用来管理通信之间的基础安全,并不是说有了安全令牌服务就绝对安全了,为了安全我们还需要做到更多,没有绝对的安全存在。

IdentityServer4 具体能用在什么地方:

因为IdentityServer4是一款包含了,授权(OAuth2)与认证(OpendID)协议的框架。

具体什么是OAuth2OpendID 我们以上文的故事来分析一下,授权(OAuth2)就是房东给租户授权的钥匙一样,我们拿到授权的钥匙后,可以随意的进出房子,但是那个倒霉的哥们没有没有授权,每次回家都需要先让房东证明他是他(认证(OpendID 代表着是本人)后才能进出房子,每次进屋都需要证明自己,这样进出屋就不是很方便了,权限明显没有被授权(OAuth2)的人高。

如果通过我的描述还不是很清楚的,可以搜索一下具体的区别,我想收获会更大。

推荐一个地址:https://www.jianshu.com/p/5d535eee0a9

有了这两样东西后我们可以做以下事情(不包括所有):

  1、可以做单点登录的功能
  2、可以做身份验证
  3、可以做Api访问权限的控制
  4、也可以做第三方登录

IdentityServer4是灵活的,我们可以根据我们的需求去使用他,IdentityServer 有效的保护资源不受破坏。

  大致使用流程如下图所示:官方的图:

640?wx_fmt=png

搭建第一个IdentityServer 入门程序

1、创建AspNetCore空白Web 程序

2、在程序控制台中添加IdentityServer4 的包 安装命令获取地址 :https://www.nuget.org/packages/IdentityServer4

  安装如图所示:

  使用命令 Install-Package IdentityServer4 -Version 2.2.0

  640?wx_fmt=jpeg

3、在StartUP中这样使用:下面就不过多的描述了,大多数都写在代码中:

  在ConfigureServices 中写入如下:

640?wx_fmt=png

 在 Configure 注入:

640?wx_fmt=png

 新建配置类Config:

640?wx_fmt=png

4、运行项目后根据启动的端口后面加上:.well-known/openid-configuration 可以得到配置信息的内容:

  我的是默认的5000端口 如访问:http://localhost:5000/.well-known/openid-configuration

640?wx_fmt=png

这样身份认证服务就Ok了。

 

下一篇:我们创建一个受保护的Api,以及客户端如何使用。

 

本来最近 想写一系列 基于Ocelot+ InentityServer4 功能文章,以及后续使用的功能文章, 今天才接到通知 我们马上要上线服务,以及新的项目的所有AspNetCore的微服务接口 都要使用 Apollo 配置中心,最近要转移一下学习重心了,先把项目搞定了在 继续下一篇了。

原文地址: https://www.cnblogs.com/szlblog/p/9452045.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

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

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

相关文章

P3177-[HAOI2015]树上染色【树形dp】

正题 题目链接:https://www.luogu.com.cn/problem/P3177 题目大意 nnn个点的一棵树,将kkk个点染成黑色,其他是白色,使得黑点之间和白点之间两两距离和最大。 解题思路 也是统计每条边的贡献,设fx,if_{x,i}fx,i​表示节点xxx的子…

Nginx主配置文件详解【笔记】

1 Nginx配置文件目录结构 最近使用Nginx做负载均衡,顺便整理Nginx配置文件笔记如下所述,本文主要梳理主配置文件各属性的作用。使用yum安装好Nginx后,可以在默认路径(/etc/nginx)看到如下配置文件。 /etc/nginx/ ├─…

【矩阵乘法】Quad Tiling(poj 3420)

Quad Tiling poj 3420 题目大意 在一个4n的棋盘上&#xff0c;用12的多米诺骨牌把他填满&#xff0c;问有多少种方法 输入样例 1 10000 3 10000 5 10000 0 0 输出样例 1 11 95数据范围 1⩽N⩽1091 \leqslant N \leqslant 10^91⩽N⩽109 0<M⩽1050 < M \leqslant 10…

牛客网 【每日一题】5月12日题目精讲 模拟战役

链接&#xff1a; 文章目录题目描述题解&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld题目描述 齐齐和司机在玩单机游戏《红色警戒IV》&#xff0c;现在他们的游戏地图被划…

微服务介绍及Asp.net Core实战项目系列之微服务介绍

0、目录整体架构目录&#xff1a;ASP.NET Core分布式项目实战-目录一、微服务选型在做微服务架构的技术选型的时候&#xff0c;以“无侵入”和“社区活跃”为主要的考量点&#xff0c;将来升级为原子服务架构、量子服务架构的时候、甚至恢复成单体架构的时候&#xff0c;代价最…

P3349-[ZJOI2016]小星星【树形dp,容斥】

正题 题目链接:https://www.luogu.com.cn/problem/P3349 题目大意 nnn个点的一棵树&#xff0c;再给出一张图&#xff0c;树上每个点对应图上每个点后要求树上的边图上都有&#xff0c;求有多少种对应方式。 解题思路 由于题目要求每个点只出现一次就加大了难度&#xff0c;可…

【矩阵乘法】生成树计数(luogu 2109/NOI 2007)

生成树计数 luogu 2109 题目大意 有n个排成一列的点&#xff0c;把距离不超过k的点之间连边&#xff0c;问这个图的生成树个数 输入样例 3 5输出样例 75样例说明 样例对应的图如下&#xff1a; 数据范围 解题思路 因为n十分大&#xff0c;不能直接2^m暴力枚举&#x…

[XSY] PQ树(区间DP)

PQ树 对于非叶子节点&#xff0c;它只能调换它的儿子的顺序&#xff0c;却不能调换整颗子树的顺序合法的PQ树都能表示出1,2,3,…,n 这个排列由以上两点可以得出&#xff1a;PQ树的每棵子树对应的一定都是一段连续的数字区间考虑区间DP&#xff0c;设f(l,r)f(l,r)f(l,r)表示数字…

牛客网 【每日一题】5月14日题目 maze

链接&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld题目描述 小明来到一个由n x m个格子组成的迷宫&#xff0c;有些格子是陷阱&#xff0c;用’#‘表示&#xff0c;小明…

你需要知道的这几种 asp.net core 修改默认端口的方式

一般情况下&#xff0c;aspnetcore发布后的默认端口是5000&#xff0c;这个大家都知道&#xff0c;而且默认骨架代码中没有看到任何让你输入的ip地址和端口号&#xff0c;但作为程序员的我们&#xff0c;不希望被框架所管制&#xff0c;那如何实现默认端口的修改呢&#xff1f;…

CF1139D-Steps to One【期望dp,莫比乌斯反演】

正题 题目链接:https://www.luogu.com.cn/problem/CF1139D 题目大意 不停的在表格中填下1∼m1\sim m1∼m中随机一个数&#xff0c;直到所有数的gcd1gcd1gcd1为止&#xff0c;求期望数的个数。 解题思路 设fnf_nfn​表示现在gcdgcdgcd为nnn时的期望个数。那么有转移方程fn∑i…

【DP】错排问题(ybtoj DP-1-1)

错排问题 ybtoj DP-1-1 题目大意 求n个数的错排种数 输入样例 2输出样例 1数据范围 1⩽n⩽201\leqslant n \leqslant 201⩽n⩽20 解题思路 设fif_ifi​为i个数的错排种数 考虑第i个数能放在前面i-1个位置的其中一个&#xff08;i-1种选法&#xff0c;要乘i-1&#xff0…

牛客网【每日一题】5月15日题目 储物点的距离

链接&#xff1a; 文章目录题目描述题解&#xff1a;代码&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld题目描述 一个数轴&#xff0c;每一个储物点会有一些东西&#x…

[XSY] 最长公共子串对(后缀自动机)

最长公共子串对 先放一段考场暴力代码&#xff1a; #include<iostream> #include<cstdio> #include<cstring> using namespace std; char a[2005],b[2005]; int na,nb,f[2005][2005],c[2005][2005],ans; //f[i][j]表示 s[1...i]与 t[1...j]以s[i]、t[j]结尾…

P3911-最小公倍数之和【莫比乌斯反演】

正题 题目链接:https://www.luogu.com.cn/problem/P3911 题目大意 给出数列AAA求∑i1n∑j1nlcm(Ai,Aj)\sum_{i1}^n\sum_{j1}^nlcm(A_i,A_j)i1∑n​j1∑n​lcm(Ai​,Aj​) 解题思路 设cic_ici​表示AjiA_jiAj​i的个数&#xff0c;然后答案就是&#xff08;下面n5e4n5e4n5e4&…

【DP】奇怪汉诺塔(ybtoj DP-1-2)

奇怪汉诺塔 ybtoj DP-1-2 题目大意 求四根柱子的汉诺塔问题 输出 共12行 每行输出第一根柱子有i个圆盘的最小步数 解题思路 设aia_iai​表示三根柱子&#xff0c;第一根柱子有i个圆盘的步数 很显然是先移i-1个到第二根&#xff0c;再移最大的到第三根&#xff0c;再把i-…

牛客网【每日一题】5月18日 「土」秘法地震

链接&#xff1a; 文章目录题目描述题解&#xff1a;代码&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 帕秋莉掌握了一种土属性魔法 这种魔法可以在一片kk大小…

AspNetCore 中使用 InentityServer4(2)

基于上一篇文章 实现对IdnetityServer4 服务的使用1&#xff1a;添加接口解决方案&#xff0c;并且使接口受认证服务的保护&#xff1a;首先在解决方案中添加Api项目如下图所示&#xff1a;在API项目中添加Nuget 引用 如下图所示&#xff1a;Install-Package IdentityServer4.A…

[XSY] 宝藏(LCS,DP)

宝藏 首先&#xff0c;这个问题等价于给定两个字符串S,T &#xff0c;每次询问LCS(S[1,n],T[x,y])LCS(S[1,n],T[x,y])LCS(S[1,n],T[x,y])。 对每个询问重新求一遍LCSLCSLCS显然不现实&#xff0c;又因为yyy都是连续变化的&#xff0c;我们考虑探讨 LCS(S[1,n],T[x,y])与LCS(S[…

【DP】数的划分(ybtoj DP-1-3)

数的划分 ybtoj DP-1-1 题目大意 给你一个n&#xff0c;让你分成k份&#xff0c;问有多少种分法&#xff08;1,2和2,1为同一种&#xff09; 输入样例 7 3输出样例 4 样例解释 四种分法为&#xff1a;1,1,5;1,2,4;1,3,3;2,2,3.1,1,5; \ \ 1,2,4; \ \ 1,3,3; \ \ 2,2,3.1…