ids4 全称:IdentityServer4  是专门为 。net core 而生产了一个中间件,目前是为了数据安全 做的鉴权中心

第一步:创建一个空的core  api 项目:当然你要健 core mvc 也可以了,但是没有必要,

第二步:引用 IdentityServer4  当前我引用的是2.2版本的,这个后面如果有更新最新的,就引用最新的应该没有问题。

第三步:添加中间件

需要注意一点:ConfigureServices里面添加的是:

services
                .AddIdentityServer()
                .AddDeveloperSigningCredential()
                .AddInMemoryApiResources(Config.GetApiResources())
                .AddInMemoryClients(Config.GetClients());

Configure方法里面添加的是,

app.UseIdentityServer();

其他的代码跟ids4无关

需要注意的是services 里面的Config  是需要自己定义的类,然后在里面实例化 ids4的参数

public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();

services
                .AddIdentityServer()
                .AddDeveloperSigningCredential()
                .AddInMemoryApiResources(Config.GetApiResources())
                .AddInMemoryClients(Config.GetClients());
        }

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.UseIdentityServer();

if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
             app.UseMvc();

}

第四步 Config类的创建 这里整个类都复制出来,直接生产一个文件就可以使用了。

using IdentityServer4.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace IdentityServer
{
    public class Config
    {
        public static IEnumerable<ApiResource> GetApiResources()
        {
            return new List<ApiResource>()
            {
                new ApiResource("api1", "My Api")
            };
        }

public static IEnumerable<Client> GetClients()
        {
            return new List<Client>()
            {
                new Client()
                {
                    ClientId = "client",
                    AllowedGrantTypes = GrantTypes.ClientCredentials,
                    ClientSecrets =
                    {
                        new Secret("secret".Sha256())
                    },
                    AllowedScopes =
                    {
                        "api1"
                    }
                }
            };
        }
    }
}

第五步:启动鉴权中心服务

该项目端口号自定义设置为 6000。所以访问是:http://localhost:6000/connect/token

注意: connect/token 这个是固定不变的,是 ids4最近的方法,不是开发自定义的,所以只需要直接去用就可以了

主要需要注意 他的调用方式 跟参数

1:post方式调用

2:参数   client_id   client_secret  grant_type

3:参数值:上面的参数 对应的值分别是 :  记得上面配置了config,这3个值就是上面的config里面配置的,

client_id 就是 ClientId ,但是在postman里面必须用  client_id  对应的值就是 client 了,这个自己设置

client_secret  这个就是ClientSecrets  对应的值就是自定义的:    secret

grant_type  就是一个枚举了,AllowedGrantTypes  对应的值是 client_credentials  。

虽然枚举是:GrantTypes.ClientCredentials,但是 传的实际值是 client_credentials

调用接口如图:

以上就是整个鉴权中心服务,我们知道怎么获取 token了,但是不知道怎么用?

第二块 。因为ids4是专门为 core而生的,所以他也同时继承到了ocelot网关里面了。

第六步:新建一个api 做 ----关网    在nuget里面先引用 ocelot ,同时也引用下 IdentityServer4.AccessTokenValidation

如图:

第七步:在startup类中添加

这里中间件中加入 ocelot ,ocelot的配置 跟使用这里就不说了,默认你会,不是本章说的内容,如果不会单独去看 ocelot的文档。  这里需要添加 :

在ConfigureServices方法中添加

services
                .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                .AddIdentityServerAuthentication("TestKey", options =>
                {
                    options.Authority = "http://localhost:6000";
                    options.RequireHttpsMetadata = false;
                    options.ApiName = "api1";
                });

Configure类中添加

app.UseAuthentication();

public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();

services.AddOcelot(new ConfigurationBuilder()
                .AddJsonFile("configuration.json")
                .Build());

services
                .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                .AddIdentityServerAuthentication("TestKey", options =>
                {
                    options.Authority = "http://localhost:6000";
                    options.RequireHttpsMetadata = false;
                    options.ApiName = "api1";
                });
        }

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public async void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

await app.UseOcelot();

app.UseAuthentication();

app.UseMvc();
        }

然后在网关的配置文件里面去添加 继承 ids4的配置:

例如:  这里大部分都是ocelot的配置,上游地址配置,下游地址配置

其中

"AuthenticationOptions": {
        "AuthenticationProviderKey": "TestKey",
        "AllowScopes": []
      }

这个就是配置鉴权中心ids4的。所以只需要配置这个就可以了

{
      "DownstreamPathTemplate": "/api/values",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port": 5001
        }
      ],
      "UpstreamPathTemplate": "/webapia/values",
      "UpstreamHttpMethod": [ "Get" ],
      "AuthenticationOptions": {
        "AuthenticationProviderKey": "TestKey",
        "AllowScopes": []
      }
    },

第八步:启动网关服务

第九步:启动一个服务A,这个服务A就是网关里面的配置上写的 下有地址。这个要对上,

第十步:调式:

不走网关直接访问服务:

走网关 访问该服务:记住了走网关的时候,需要做权健校验的,

所以需要在authorization里面添加   通过http://localhost:6000/connect/token 获取的 access_token值

在Type里面选择 Oauth2.0  就有一个需要让你输入的地址,输入这串密文。就可以,就可以调用,

如果密文为空或者 不对,你可以试试,肯定是调不通接口,拿不到你需要的值。

Ids4 的使用说明相关推荐

  1. abaqus高性能服务器怎么用,高性能计算平台ABAQUS任务调度使用说明作者陈林E-Mailchenlin.PDF...

    高性能计算平台ABAQUS任务调度使用说明作者陈林E-Mailchenlin.PDF 高性能计算平台ABAQUS 任务调度使用说明 作者:陈林 E-Mail:chenlin@ 日期:2017-1-10 ...

  2. linux 文件拷贝并替换,Linux_cmd replace 文件替换使用说明,帮助信息: 复制代码 代码如 - phpStudy...

    cmd replace 文件替换使用说明 帮助信息: 复制代码 代码如下: 替换文件. REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [ ...

  3. Simple Dynamic Strings(SDS)源码解析和使用说明二

    在<Simple Dynamic Strings(SDS)源码解析和使用说明一>文中,我们分析了SDS库中数据的基本结构和创建.释放等方法.本文将介绍其一些其他方法及实现.(转载请指明出于 ...

  4. Delphi开发的IOCP测试Demo以及使用说明。

    Delphi开发的IOCP,此为压力测试Demo和使用说明.

  5. oracle database link mysql_oracle database link使用说明

    oracle database link使用说明 作用: 将多个oracle数据库逻辑上看成一个数据库,也就是说在一个数据库中可以操作另一个数据库中的对象. 简易语法: CREATE [PUBLIC] ...

  6. 序列拼接工具Bowtie使用说明

    序列拼接工具Bowtie使用说明 2011-06-08 ~ ADMIN Bowtie是一个超级快速的,较为节省内存的短序列拼接至模板基因组的工具.它在拼接35碱基长度的序列时,可以达到每小时2.5亿次 ...

  7. benchmarksql测试mysql_数据库压力测试工具 -- BenchmarkSQL 使用说明

    关于数据库的压力测试,之前写过3篇Blog: 数据库基准测试(Database Benchmarking) 说明 数据库压力测试工具 -- Hammerdb 使用说明 数据库压力测试工具 -- Swi ...

  8. 计算机网页基础课专业,关于《计算机应用基础》课程网页下的学习资源使用说明....

    关于<计算机应用基础>课程网页下的学习资源使用说明. 关于<计算机应用基础>课程网页下的学习资源使用说明 各位同学:大家好! 07春学期已接近一半的时间了,新生对课程还需要更多 ...

  9. gh ost mysql_MySQL在线DDL gh-ost 使用说明

    3)使用说明:条件是操作的MySQL上需要的binlog模式是ROW.如果在一个从上测试也必须是ROW模式,还要开启log_slave_updates.根据上面的参数说明按照需求进行调整. 环境:主库 ...

最新文章

  1. 【camera】1. 相机硬件组成
  2. 交换机模拟配置软件_网络设备模拟器Packet Tracer实验
  3. Oracle 截取字符串,取系统时间
  4. FLASH STUDY LOG
  5. 天池读书会来啦,带你体验沉浸式读书新方式
  6. mysql Error Code: 1005(errorno:121)解决
  7. Delphi读写二进制文件
  8. python struct pack一个数组_Python中struct.pack的一个疑问
  9. Docker 容器安装vim
  10. code第一部分数组:第十七题 爬楼梯问题
  11. Spark常用API(五)
  12. 处理顶点——使用顶点缓冲和索引缓冲将顶点和索引保存在显存中
  13. 燕姿几首歌的歌词-偶得
  14. 电机控制-H 桥电路 控制方式简单解析
  15. IP地址归属地查询算法
  16. c++ 求N个数的最大公约数和最小公倍数
  17. ChemDraw怎么画3D图?
  18. 蛙蛙推荐:蛙蛙教你解析网络包
  19. Django models中的null和blank的区别
  20. 手机上也可以做地图?“掌上”制图教程来啦!

热门文章

  1. 【解析几何】第一章 向量代数
  2. 透过社群网站加强公益的力量 让爱心无国界传遍各地!
  3. 《低代码PaaS驱动集团企业数字化创新白皮书》-未来展望
  4. 对蚁群算法中轮盘赌选择城市的理解
  5. 鼠标移入移出时定时器加速的原因_购买游戏鼠标的几点关键 你必须知道
  6. 华为HCIE云计算之FA桌面云业务发放
  7. amtemu v0.9.2怎么用_用移动硬盘装载启动big sur从来不是一件正经事 | 吴派胡言 1.2.2...
  8. JS遍历数组的几种常用方法
  9. java 行为参数化_Java中的行为参数化
  10. 湖南多校对抗赛(csu 1560)