在上一讲中,我们已经完成了一个完整的案例,在这个案例中,我们可以通过Angular单页面应用(SPA)进行登录,然后通过后端的Ocelot API网关整合IdentityServer4完成身份认证.在本讲中,我们会讨论在当前这种架构的应用程序中,如何完成用户授权. 回顾 <Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(一)> <Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(二)&g…
上文已经介绍了Identity Service的实现过程.今天我们继续,实现一个简单的Weather API和一个基于Ocelot的API网关. 回顾 <Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(一)> Weather API Weather API实现非常简单,直接用Visual Studio 2019 Community Edition自带的ASP.NET Core Web Application模板创建就行了,我们的目的不是为了实…
在前面两篇文章中,我介绍了基于IdentityServer4的一个Identity Service的实现,并且实现了一个Weather API和基于Ocelot的API网关,然后实现了通过Ocelot API网关整合Identity Service做身份认证的API请求.今天,我们进入前端开发,设计一个简单的Angular SPA,并在Angular SPA上调用受Ocelot API网关和Identity Service保护的Weather API. 回顾 <Angular SPA基于Ocel…
好吧,这个题目我也想了很久,不知道如何用最简单的几个字来概括这篇文章,原本打算取名<Angular单页面应用基于Ocelot API网关与IdentityServer4+ASP.NET Identity实现身份认证与授权>,然而如你所见,这样的名字实在是太长了.所以,我不得不缩写"单页面应用"几个字,然后去掉ASP.NET Identity的描述,最后形成目前的标题. 不过,这也就意味着这篇文章会涵盖很多内容和技术,我会利用这些技术来走通一个完整的流程,这个流程也代表着在微…
本文介绍Ocelot中的认证和授权(通过IdentityServer4),本文只使用最简单的IdentityServer,不会对IdentityServer4进行过多讲解. 1.Identity Server 4 (1)新建一个新的WebApi项目命名为IdentityServer,添加 IdentityServer4 Nuget包.(2)添加Config类,添加如下代码: public static IEnumerable<ApiResource> GetApiResources() { r…
简介 api网关是提供给外部调用的统一入口,类似于dns,所有的请求统一先到api网关,由api网关进行指定内网链接. ocelot是基于netcore开发的开源API网关项目,功能强大,使用方便,它包含了负载均衡.路由.请求聚合.服务发现.权限认证等功能. 基础准备 开发环境:vs2017 netcore:2.1 新建项目    netcore安装ocelot install-package Ocelot  安装ocelot组件 配置ocelot 1.添加ocelotSettings.json…
本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 上一篇介绍了Ingress的基本概念和Nginx Ingress的基本配置和使用,考虑到很多团队都在使用Ocelot作为API网关(包括我司)做了很多限流和鉴权的工作,因此本篇介绍一下如何使用Ocelot接入替代Nginx Ingress作为统一入口. 一.准备工作 我们仍然以上一篇的两个ASP.NET Core WebAPI示例作为K8s集群中的后端服务示例,这里我们来快速地准备一个…
本文介绍Ocelot中的限流,限流允许Api网关控制一段时间内特定api的总访问次数.限流的使用非常简单,只需要添加配置即可. 1.添加限流 修改 configuration.json 配置文件,对 UpstreamPathTemplate 为 /webapib/values 的配置修改如下: { // ... "UpstreamPathTemplate": "/webapib/values", "UpstreamHttpMethod": [ &…
本文介绍Ocelot中的配置管理,配置管理允许在Api网关运行时动态通过Http Api查看/修改当前配置.由于该功能权限很高,所以需要授权才能进行相关操作.有两种方式来认证,外部Identity Server或内部Identity Server. 1.外部Identity Server 修改 Startup 中的 ConfigureServices 方法如下: public void ConfigureServices(IServiceCollection services) { servic…
.Netcore 2.0 Ocelot Api网关教程(1) 路由介绍 上一篇文章搭建了一个简单的Api网关,可以实现简单的Api路由,本文介绍一下路由,即配置文件中ReRoutes,ReRoutes是Ocelot配置文件中最重要的部分,实现了由上游到下游的路由转发. 上一篇文章中使用的configuration.json文件如下: { "ReRoutes": [ { "DownstreamPathTemplate": "/api/values"…
.NET Core微服务一:Consul服务中心 .NET Core微服务二:Ocelot API网关 .NET Core微服务三:polly熔断与降级 本文的项目代码,在文章结尾处可以下载. 本文使用的环境:Windows10 64位 + VS 2019 + .NET Core 2.1 + Ocelot 8.0.8 Ocelot 相关地址: https://github.com/ThreeMammals/Ocelot https://ocelot.readthedocs.io/en/lates…
转载 基于http协议的api接口对于客户端的身份认证方式以及安全措施 由于http是无状态的,所以正常情况下在浏览器浏览网页,服务器都是通过访问者的cookie(cookie中存储的jsessionid)来辨别客户端的身份的,当客户端进行登录服务器也会将登录信息存放在服务器并与客户端的cookie中的jsessionid关联起来,这样客户端再次访问我们就可以识别用户身份了. 但是对于api服务器,我们不能让访问者先登录再进行访问这样不安全,也不友好.所以一般情况我们都是需要客户端提供一个key…
上接:.NetCore WebApi——Swagger简单配置 任何项目都有权限这一关键部分.比如我们有许多接口.有的接口允许任何人访问,另有一些接口需要认证身份之后才可以访问:以保证重要数据不会泄露. 关于JWT 维基百科上是这样定义的: JWT(读作 [/dʒɒt/]),即JSON Web Tokens,是一种基于JSON的.用于在网络上声明某种主张的令牌(token).JWT通常由三部分组成: 头信息(header), 消息体(payload)和签名(signature).它是一种用于双方…
在微软Tech Summit 2017 大会上和大家分享了一门课程<.NET Core 在腾讯财付通的企业级应用开发实践>,其中重点是基于ASP.NET Core打造可扩展的高性能企业级API网关,以开源的API网关Ocelot为基础结合自己的业务特性,当天课程只有40分钟,有很多内容都没有展开,接下来就用一篇小文章来聊下Ocelot 的实现原理,大家在使用的过程中也可以一起来贡献. 总体来说这是一个ASP.NET Core 高级编程的内容,之前在公众号里已经发过不少各位朋友写的文章,今天都会…
一.概要 Ocelot是.Net Core下一个开源API网关:Ocelot主要目标是在.NET在微服务或面向服务架构中提供统一的入口服务, Ocelot拿到HttpRequest对象到管道后,先创建HttpRequestMessage对象,该对象用于向下游服务发出请求.再将HttpResponseMessage映射到HttpResponse对象上,并返回给客户端.. 主要功能:统一入口.认证.鉴权.限流熔断.内置了负载均衡等等 二.单网关QuickStart 2.1 API网关 新建.Net…
.net 这几年国内确实不好过. 很多都选择转行.不过.net Core跨平台 开源之后 .社区的生态在慢慢建立.往好的趋势发展. 对于坚守在.NET战线的开发者来说 是个挺不错的消息.  特别是微软收购75亿美金GitHub..net 生态 社区圈子.肯定会有所上升. 发展趋势越来越好.(当然 这只是我个人祈愿)  最近也比较懒.也有段时间没有写过文章了.  但对于追寻新技术渴望学习 是不会断的  最近微服务比较火热. 将以个大型项目根据业务可以拆分成一个个的较小的独立项目.便于管理 且互相协…
最近几个月一直在忙一个项目(感觉像是与世隔绝了),本来想好的是要写一些asp.net core 的一些简单使用上东西,也就放下了. 好在忙完了,也就重新开始写吧.写点什么呢?网上也有不少dotnet core 的文章了,理论知识?咱也是半吊子水平不敢献丑,直接推荐看老A的文章http://www.cnblogs.com/artech/p/inside-asp-net-core-1.html. 一些框架的使用?http://www.cnblogs.com/linezero/ 这家伙(LineZer…
Ocelot(Github)Ocelot官方文档(英文)本文不会介绍Api网关是什么以及Ocelot能干什么需要对Api网关及Ocelot有一定的理论了解 开始使用Ocelot搭建一个入门级Api网关 1.新建3个WebApi项目,分别命名为OcelotGetway.WebApiA.WebApiB   webapi项目.png OcelotGetway项目用于做Api网关 WebApiA.WebApiB作为两个api接口服务 2.在OcelotGetway项目的Nuget包管理器中搜索Ocelo…
本文介绍Ocelot中的服务发现(Service Discovery),Ocelot允许指定一个服务发现提供器,之后将从中寻找下游服务的host和port来进行请求路由.关于服务发现的详细介绍请点击.在Ocelot中使用了Consul作为服务发现的provider. 1.Consul下载安装 从官方下载页选择合适的平台下载,解压出一个二进制文件并保存到相应位置,并将路径存入path中,本文以windows版本为例(其他平台操作类似).打开 cmd/powershell 运行 consul age…
项目地址 http://git.oschina.net/lishilei0523/ShSoft.UAC 项目说明 本项目开发的目的有三: 1.作为一个使用SD.Framework框架开发的项目样板 2.探索基于ASP.NET MVC的前端架构 3.做一套统一身份认证系统 注意事项: 如果编译失败,请安装PostSharp-4.1.15.exe(项目根目录下或附件中有) 请先修改服务端AppService项目配置文件中连接字符串,数据库会自动生成 先运行服务端,再运行客户端 如果服务端运行失败,请…
在实际的项目应用中,很多时候都需要保证数据的安全和可靠,如何来保证数据的安全呢?做法有很多,最常见的就是进行身份验证.验证通过,根据验证过的身份给与对应访问权限.同在Web Api中如何实现身份认证呢?接下来的内容就详细的分享 Web API身份认证. 首先扩展自定义身份验证添加类 CustomAuthorizeAttribute.cs该类继承自System.Web.Http.AuthorizeAttribute(身份认证类)通过重写其身份认证核心方法来达到 web API 身份认证的效果.完整…
本文介绍Ocelot中的请求头传递(Headers Transformation),其可以改变上游request传递给下游/下游response传递给上游的header. 1.修改ValuesController 修改WebApiA和WebApiB中ValuesController.Get()方法如下: [HttpGet] public IEnumerable<string> Get() { var headers = Request.Headers.Select(x => $"…
本文介绍Ocelot中的QoS(Quality of Service),其使用了Polly对超时等请求下游失败等情况进行熔断. 1.添加Nuget包 添加 Ocelot.Provider.Polly 到OcelotGetway项目中   nuget.png 2.修改 Startup.ConfigureServices 如下来添加Polly: services .AddOcelot(new ConfigurationBuilder() .AddJsonFile("configuration.jso…
Ocelot中使用 CacheManager 来支持缓存,官方文档中强烈建议使用该包作为缓存工具.以下介绍通过使用CacheManager来实现Ocelot缓存. 1.通过Nuget添加 Ocelot.Cache.CacheManager 包 在OcelotGetway项目中添加引用:   Add cache package.png 2.修改 Startup 中的 ConfigureServices 方法 修改如下: services .AddOcelot(new ConfigurationBu…
在实际的应用当中,经常会遇到同一个操作要请求多个api来执行.这里先假设一个应用场景:通过姓名获取一个人的个人信息(性别.年龄),而获取每种个人信息都要调用不同的api,难道要依次调用吗?在Ocelot中为我们提供了很好的解决方法. 路由聚合 继续使用前边的文章建立的项目,在WebApiA项目中添加一个新的WebApi控制器命名为UserController,代码如下: [Produces("application/json")] [Route("api/[controlle…
由于http是无状态的,所以正常情况下在浏览器浏览网页,服务器都是通过访问者的cookie(cookie中存储的jsessionid)来辨别客户端的身份的,当客户端进行登录服务器也会将登录信息存放在服务器并与客户端的cookie中的jsessionid关联起来,这样客户端再次访问我们就可以识别用户身份了. 但是对于api服务器,我们不能让访问者先登录再进行访问这样不安全,也不友好.所以一般情况我们都是需要客户端提供一个key(每个key跟用户是一对一关联的)来识别请求者的身份. 由HTTP协议进…
由于http是无状态的,所以正常情况下在浏览器浏览网页,服务器都是通过访问者的cookie(cookie中存储的 jsessionid)来辨别客户端的身份的,当客户端进行登录服务器也会将登录信息存放在服务器并与客户端的 cookie中的jsessionid关联起来,这样客户端再次访问我们就可以识别用户身份了. 但是对于api服务器,我们不能让访问者先登录再进行访问这样不安全,也不友好.所以一般情况我们都是需要 客户端提供一个key(每个key跟用户是一对一关联的)来识别请求者的身份. 由HTTP…
大神张善友 分享过一篇 <.NET Core 在腾讯财付通的企业级应用开发实践>里面就是用.net core 和 Ocelot搭建的可扩展的高性能Api网关. Ocelot(http://ocelot.readthedocs.io)是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.负载均衡.请求聚合.认证.鉴权.限流熔断等,这些功能只都只需要简单的配置即可完成. Consul(https://www.consul.io)是一个分布式,高可用.支持多数据中心的服务注册…
重复造轮子系列——基于Ocelot实现类似支付宝接口模式的网关 引言 重复造轮子系列是自己平时的一些总结.有的轮子依赖社区提供的轮子为基础,这里把使用过程的一些觉得有意思的做个分享.有些思路或者方法在大神看来可能会比较low.但是能解决实际问题,相信有需要的人也在寻找类似的解决方案.这里可以算作是提供了一种思路,类似问题如果有读者能有更好的解决方案,愿闻其详. 若有阅读后引起内心冲突或者愤怒等不适以及自觉被误导者,不需要切换到抖音等欢乐频道进行综合调理,直接就可以在评论区吐槽. 网关简介 什么是…
Ocelot API网关的实现剖析   在微软Tech Summit 2017 大会上和大家分享了一门课程<.NET Core 在腾讯财付通的企业级应用开发实践>,其中重点是基于ASP.NET Core打造可扩展的高性能企业级API网关,以开源的API网关Ocelot为基础结合自己的业务特性,当天课程只有40分钟,有很多内容都没有展开,接下来就用一篇小文章来聊下Ocelot 的实现原理,大家在使用的过程中也可以一起来贡献. 总体来说这是一个ASP.NET Core 高级编程的内容,之前在公众号…