上一篇已经构建好了例子,接下来将IdentityServer4添加到Ocelot中去实现

配置一个客户端配置,可以构建一个简单的客户端信息,这里我用的混合模式,配置比较多,对于客户端模式而言实际很多都不需要设置

只需要构如下即可

  ClientId="liyouming",
ClientName="ChinaNetCore",
ClientSecrets={new Secret("liyouming".Sha256()) },
AllowedGrantTypes= GrantTypes.ClientCredentials,
AccessTokenType= AccessTokenType.Jwt,
AllowedScopes={
"openid",
"profile",
"UserServicesApi"
}

对于Ocelot而言你只需要在之前的配置中添加AuthenticationOptions节点参数配置

{
"ReRoutes": [
{
"DownstreamPathTemplate": "/api/values/getuser",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port":
},
{
"Host": "localhost",
"Port":
}
],
"UpstreamPathTemplate": "/test",
"UpstreamHttpMethod": [ "Get" ],
"LoadBalancer": "LeastConnection",
"ServiceName": "userservices",
"UseServiceDiscovery": true, "AuthenticationOptions": {
"AuthenticationProviderKey": "usergateway",
"AllowScopes": [ "UserServicesApi" ]
}
}
], "GlobalConfiguration": {
"BaseUrl": "http://localhost:20000",
"ServiceDiscoveryProvider": {
"Host": "localhost",
"Port": } }
}

Ocelot

 "AuthenticationOptions": {
"AuthenticationProviderKey": "usergateway",
"AllowScopes": [ "UserServicesApi" ]
}
AuthenticationProviderKey 其实就是授权的authenticationscheme
allscopes 就是 apiresource中配置的授权访问范围,这里配置的即 ApiName

同时还需要在网关添加授权验证服务,配置好授权地址 ApiName(scope),以及对renefrence or jwt or both 和 secret 如果没有使用https 需要设置RequireHttpsMetadata =false

 services.AddAuthentication()
.AddIdentityServerAuthentication("usergateway", options => {
options.Authority = "http://localhost:30000";
options.ApiName = "UserServicesApi";
options.SupportedTokens = IdentityServer4.AccessTokenValidation.SupportedTokens.Both;
options.ApiSecret = "liyouming";
options.RequireHttpsMetadata = false; });
使用PostMan 来测试下功能
不清楚获取Token地址可以访问配置文件查看
http://localhost:30000/.well-known/openid-configuration
{
"issuer": "http://localhost:30000",
"jwks_uri": "http://localhost:30000/.well-known/openid-configuration/jwks",
"authorization_endpoint": "http://localhost:30000/connect/authorize",
"token_endpoint": "http://localhost:30000/connect/token",
"userinfo_endpoint": "http://localhost:30000/connect/userinfo",
"end_session_endpoint": "http://localhost:30000/connect/endsession",
"check_session_iframe": "http://localhost:30000/connect/checksession",
"revocation_endpoint": "http://localhost:30000/connect/revocation",
"introspection_endpoint": "http://localhost:30000/connect/introspect",
"frontchannel_logout_supported": true,
"frontchannel_logout_session_supported": true,
"backchannel_logout_supported": true,
"backchannel_logout_session_supported": true,
"scopes_supported": ["openid", "profile", "UserServicesApi", "offline_access"],
"claims_supported": [],
"grant_types_supported": ["authorization_code", "client_credentials", "refresh_token", "implicit"],
"response_types_supported": ["code", "token", "id_token", "id_token token", "code id_token", "code token", "code id_token token"],
"response_modes_supported": ["form_post", "query", "fragment"],
"token_endpoint_auth_methods_supported": ["client_secret_basic", "client_secret_post"],
"subject_types_supported": ["public"],
"id_token_signing_alg_values_supported": ["RS256"],
"code_challenge_methods_supported": ["plain", "S256"]
}
1、通过 http://localhost:30000/connect/token获取token

客户端模式需要四个参数 
client_id
client_secret
grant_type
scope

直接访问test提示401没授权

这里拿到了 access_token,接下来通过access_token访问GateWay中的test




Ocelot + IdentityServer4 构建 GateWay的更多相关文章

  1. NET Core + Ocelot + IdentityServer4 + Consul

    .NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现 先决条件 关于 Ocelot 针对使用 .NET 开发微服务架构或者面向服务架构提供一个统一访 ...

  2. 【转】.NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现

    作者:Zhang_Xiang 原文地址:.NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现 先决条件 关于 Ocelot 针对使用 .NET 开发 ...

  3. 分享一个集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionless+Apollo+SkyWalking的微服务开发框架

    集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionless+Apollo的微服务开发框架 Github源代码地址 htt ...

  4. 微服务项目整合Ocelot+IdentityServer4

    项目搭建肯定少不了认证和授权,传统的单体应用基于cookie和session来完成的. 因为http请求是无状态的,每个请求都是完全独立的,服务端无法确认当前请求之前是否登陆过.所以第一次请求(登录) ...

  5. 使用Ocelot构建GateWay

    添加Nuget包:Ocelot 添加配置文件Ocelot.json 具体配置可以看另一篇Ocelot配置 Json配置文件主要包含两个根节点: ReRoutes:路由重定向配置 都是数组结构 可以配置 ...

  6. .NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现

    先决条件 关于 Ocelot 针对使用 .NET 开发微服务架构或者面向服务架构提供一个统一访问系统的组件. 参考 本文将使用 Ocelot 构建统一入口的 Gateway. 关于 IdentityS ...

  7. .Net Core 商城微服务项目系列(一):使用IdentityServer4构建基础登录验证

    这里第一次搭建,所以IdentityServer端比较简单,后期再进行完善. 1.新建API项目MI.Service.Identity,NuGet引用IdentityServer4,添加类InMemo ...

  8. .Net Core 商城微服务项目系列(二):使用Ocelot + Consul构建具备服务注册和发现功能的网关

    1.服务注册 在上一篇的鉴权和登录服务中分别通过NuGet引用Consul这个包,同时新增AppBuilderExtensions类: public static class AppBuilderEx ...

  9. Ocelot + IdentityServer4 坑自己

    现像是 connect/userinfo 可以访问 但是api都提示401 后面发现是在appsettings.json "Options": {"Authority&q ...

随机推荐

  1. 【设计模式】—— 桥接模式Bridge

    前言:[模式总览]——————————by xingoo 模式意图 这个模式使用的并不多,但是思想确实很普遍.就是要分离抽象部分与实现部分. 实现弱关联,即在运行时才产生依赖关系. 降低代码之间的耦合 ...

  2. 修改MyEclipse取消默认工作空间

    使用MyEclipse,在最开始Workspace Launcher中选择工作空间时,勾选了默认选择,以后启动程序的时候,就不会弹出这个选择工作空间的对话框了.如下图: 但后来又新增一个工作空间,需要 ...

  3. 【刷题】LOJ 6122 「网络流 24 题」航空路线问题

    题目描述 给定一张航空图,图中顶点代表城市,边代表两个城市间的直通航线.现要求找出一条满足下述限制条件的且途经城市最多的旅行路线. 从最西端城市出发,单向从西向东途经若干城市到达最东端城市,然后再单向 ...

  4. 小数点保留若干位小数 %.*f

    T4530 青年π https://www.luogu.org/problemnew/show/T4530 #include <cstdio> #include <cstdlib&g ...

  5. D. Recovering BST Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)

    http://codeforces.com/contest/1025/problem/D 树 dp 优化 f[x][y][0]=f[x][z][1] & f[z+1][y][0] ( gcd( ...

  6. mysql数据库给局域网用户所有的权限

    ERROR 1698 (28000): Access denied for user 'root'@'localhost' 刚装好的服务端时必须用 sudo命令才能登录,不然就报1698的错误 然后就 ...

  7. k8s pod的4种网络模式最佳实战(externalIPs )

    [k8s]k8s pod的4种网络模式最佳实战(externalIPs )       hostPort相当于docker run -p 8081:8080,不用创建svc,因此端口只在容器运行的vm ...

  8. spring+spring mvc+JdbcTemplate 入门小例子

    大家使用这个入门时候 最好能够去 搜一下 spring mvc 的 原理,我放一张图到这里,自己琢磨下,后面去学习就容易了 给个链接 (网上一把,千万不能懒)    https://www.cnblo ...

  9. NEGOUT: SUBSTITUTE FOR MAXOUT UNITS

    NEGOUT: SUBSTITUTE FOR MAXOUT UNITS Maxout [1] units are well-known and frequently used tools for De ...

  10. html5 canvas路径绘制2

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...