今天来给我们的项目增加API网关,使用Ocelot 它是系统暴露在外部的一个访问入口,这个有点像代理访问的家伙,就像一个公司的门卫承担着寻址、限制进入、安全检查、位置引导、等等功能。同时我们还要在网关中集成了Identity Server(Identity Server在项目中的使用见上一篇文章),当网关需要请求认证信息的时候会与Identity Server服务器进行交互来完成。多说也无益,直接上项目吧。

  1. 新建一个空的.netcore项目,命名为Zhengwei.Gateway新建好后引入Ocelot包,我们之前项目中已有Zhengwei.Identity和Zhengwei.Use.Api,项目结构图如下:

    aaarticlea/png;base64,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" alt="">

  2. 在上图中我们看到一个Ocelot.json文件,里面设置了所有对当前这个网关的配置。它会接收所有的客户端请求,并路由到对应的下游服务器进行处理,再将请求结果返回。而这个上下游请求的对应关系也被称之为路由。配置如下:

{
"GlobalConfiguration": {
"BaseUrl": "http://localhost"
},
"ReRoutes": [
{
"DownstreamPathTemplate": "/api/users",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": ""
}
],
"UpstreamPathTemplate": "/users",
"UpstreamHttpMethod": [ "Get" ],
"AuthenticationOptions": {
"AuthenticationProviderKey": "zhengwei",
"AllowedScopes": []
}
},
{
"DownstreamPathTemplate": "/connect/token",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": ""
}
],
"UpstreamPathTemplate": "/connect/token",
"UpstreamHttpMethod": [ "Post" ] } ] }

其中,DownstreamPathTemplate是下游服务。DownstreamScheme是下游服务http schema。DownstreamHostAndPorts是下游服务的地址,如果使用LoadBalancer的话这里可以填多项。UpstreamPathTemplate: 上游也就是用户输入的请求Url模板。UpstreamHttpMethod: 上游请求http方法,可使用数组

从配置文件中我们可以看出本来通过http://localhost:33545/api/users访问的use api现在可以通过http://localhost: 4157/api/users来访问,本来通过http://localhost: 1110/connect/token来访问的现在可以通过http://localhost: 4157/connect/token来访问,http://localhost: 4157是网关项目的地址。

3、在项目启动时来引入我们的配置文件Ocelot.json吧,写在Program.cs文件中,代码如下:

public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
} public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((webhost,builder)=>{
builder.SetBasePath(webhost.HostingEnvironment.ContentRootPath)
.AddJsonFile("Ocelot.json");
})
.UseStartup<Startup>()
.UseUrls("http://+:80")
.Build();
}

4、 在Startup.cs文件中加入我们的认证服务吧,注意这里的authenticationProviderKey=“zhengwei”,要与我们Ocelot.json文件中的"AuthenticationProviderKey": "zhengwei"一致,代码如下:

public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
} public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
var authenticationProviderKey = "zhengwei"; services.AddAuthentication()
.AddIdentityServerAuthentication(authenticationProviderKey, options=> {
options.Authority = "http://localhost:1110/";
options.ApiName = "gateway_api";
options.SupportedTokens = SupportedTokens.Both;
options.ApiSecret = "secret";
options.RequireHttpsMetadata = false;
});
services.AddOcelot();
} // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.UseOcelot();
}
}

5、一切就序,那我们就开始测试吧,右键解决方案---》属性-->多个项目启动----》操作中将三个项目都设置为启动,关闭后点击启动,启动好后,打开postman,输入网址http://localhost:4157/users

可惜,给我们返回的验证吗是401未认证,然来是我们没有提交对应的token.那就先获取token值吧。输入网址:http://localhost:4157/connect/token,得到如下的返回值,其中access_token就是我们要的token值,复制下来吧。

6、复制下我们的token后,再次请求http://localhost:4157/users前要加入参数,在Headers中输入key:   Authorization   输入对应的值:bearer  + 复制过来的access_token,再次请求,会获取到useapi接口正常返回的值了。如下图

至此,我们的ocelot和Identity Server在我们的项目中集成完毕。

NetCore项目实战篇05---添加Ocelot网关并集成identity server4认证的更多相关文章

  1. NetCore项目实战篇06---服务注册与发现之consul

    至此,我们的解决方案中新建了三个项目,网关(Zhengwei.Gateway).认证中心(Zhengwei.Identity)和用户资源API(Zhengwei.Use.Api).当要访问用户API的 ...

  2. NetCore项目实战篇08---Docker挂载mysql并连接.netCoreWeb

    我们的项目之前在直接连接的mysql,今天我们将通过docker挂载mysql 并与我们开发的webapi项目连接. 1. 安装docker 下载地址: https://download.docker ...

  3. NetCore项目实战篇04---集成IdentityService4

    大家都知道我们的项目中已有web api,现在可以正式访问,不论任何人只要通过输入对应的api网址就可以访问到我们的api 资源,这样是很不安全的,我们需求对当前用户进行身份验证,因此我们在项目中使用 ...

  4. NetCore项目实战篇02---全局异常处理

    在 .netcore中可以自定义自己的异常类型,步骤如下: 1.自定义自己的异常类型UserOperationException 并继承自Exception public class UserOper ...

  5. NetCore项目实战篇03---HTTP Patch 更新数据

    一.什么是HTPP Patch HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 ...

  6. NetCore项目实战篇07---服务保护之polly

    1.  为什么要用polly 前面的项目中,一个服务调用另一个(Zhengwei.Identity调用Zhengwei.Use.Api)服务时是直接调用的,在这个调用的过程中可能会发生各种瞬态故障,这 ...

  7. 洗礼灵魂,修炼python(82)--全栈项目实战篇(10)—— 信用卡+商城项目(模拟京东淘宝)

    本次项目相当于对python基础做总结,常用语法,数组类型,函数,文本操作等等 本项目在博客园里其他开发者也做过,我是稍作修改来的,大体没变的 项目需求: 信用卡+商城: A.信用卡(类似白条/花呗) ...

  8. C# Xamarin移动开发项目实战篇

    一.课程介绍 在前面阿笨的<C# Xamarin移动开发基础进修篇>课程中,大家已经熟悉和了解了Xamarin移动App开发的基础知识和原理.本次分享课<C# Xamarin移动开发 ...

  9. 洗礼灵魂,修炼python(73)--全栈项目实战篇(1)——【转载】前提准备之学习ubuntu

    本篇是为项目实战做准备,学习Linux是必备的,不然都不好意思叫全栈对吧?下面是一位资深大神写的文章,够详细,我也不用浪费时间再写了 原文链接:Ubuntu学习——第一篇 内容: 一. Ubuntu简 ...

随机推荐

  1. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十二)之Error Handling with Exceptions

    The ideal time to catch an error is at compile time, before you even try to run the program. However ...

  2. day7作业

    # day7作业 # 1. 使用while循环输出1 2 3 4 5 6 8 9 10 count = 1 while count < 11: if count == 7: count += 1 ...

  3. Daily Scrum 1/11/2016

    Zhaoyang & Minlong: Took and edited the video which introduced our APP. Yandong: Summarized bugs ...

  4. D. AB-string

    https://codeforces.com/contest/1238/problem/D 题目大意:统计good string的个数,good string的定义,给定的字符串中含有回文段落, 题解 ...

  5. Laravel异步队列全攻略

    最近项目需求,研究了laravel的异步队列.官方文档虽然很是详细,但也有些晦涩难懂,在此记录下步骤,供大家参考. 1.修改/config/queue.php文件 <?php return [ ...

  6. vue使用trackingjs

    前言:因为公司是做人工智能-AI的,所有一个web数据平台为了装X,需要做个人脸登陆.前台需要把人脸的base64发给后台去做人脸校验. 功能很简单,需要注意的是web需要实现“调用摄像头”和“自动拍 ...

  7. 【已解决】error setting certificate verify locations报错

    目录 1.问题描述 2.问题分析 3.解决方法 1.问题描述 在公司的电脑上从Github上clone项目的时候git黑窗口报错"error setting certificate veri ...

  8. PE文件学习(1)DOS和NT

    大致结构 DOS头和NT头之间通常还有个DOS Stub DOS头 DOS头的作用是兼容MS-DOS操作系统中的可执行文件 一般没啥用 记录着PE头的位置 DOS头定义部分 typedef struc ...

  9. react 工程起步 安装chrome 开发调试工具 react developer tools 及初建一个react 项目...

    1.安装react 开发工具 1.下载    chrome      react developer tools 下载地址:https://pan.baidu.com/s/1eSZsXDC  下载好是 ...

  10. Spring绑定请求参数过程以及使用@InitBinder来注册自己的属性处理器

    在工作中,经常会出现前台的请求参数由于无法被正常转型,导致请求无法进到后台的问题. 比如,我有一个User.其性别的属性被定义成了枚举,如下: public enum Gender { MALE(&q ...