当前位置: 首页>资讯 >

【环球快播报】使用开源 MaxKey 与 APISIX 网关保护你的 API

来源: 腾讯云 | 时间: 2023-02-19 13:03:28 |

1. Apache APISIX介绍

Apache APISIX 是 Apache 软件基金会下的云原生 API 网关,它兼具动态、实时、高性能等特点,提供了负载均衡、动态上游、灰度发布(金丝雀发布)、服务熔断、身份认证、可观测性等丰富的流量管理功能。我们可以使用 Apache APISIX 来处理传统的南北向流量,也可以处理服务间的东西向流量。同时,它也支持作为 K8s Ingress Controller 来使用。


【资料图】

1.1. 特色优势

n 多平台支持:APISIX 提供了多平台解决方案,它不但支持裸机运行,也支持在 Kubernetes 中使用,还支持与 AWS Lambda、Azure Function、Lua 函数和 Apache OpenWhisk 等云服务集成。

n 全动态能力:APISIX 支持热加载,这意味着你不需要重启服务就可以更新 APISIX 的配置。请访问为什么 Apache APISIX 选择 Nginx + Lua 这个技术栈?以了解实现原理。

n 精细化路由:APISIX 支持使用 NGINX 内置变量做为路由的匹配条件,你可以自定义匹配函数来过滤请求,匹配路由。

n 运维友好:APISIX 支持与以下工具和平台集成:HashiCorp Vault、Zipkin、Apache SkyWalking、Consul、Nacos、Eureka。通过 APISIX Dashboard,运维人员可以通过友好且直观的 UI 配置 APISIX。

n 多语言插件支持:APISIX 支持多种开发语言进行插件开发,开发人员可以选择擅长语言的 SDK 开发自定义插件。

官方网站地址:https://apisix.apache.org/

2. MaxKey介绍

Dromara MaxKey社区以“安全连接、传递信任”为宗旨,专注于身份安全管理(IM)、单点登录(SSO)和云身份认证(IDaas)领域,将为客户提供企业级的身份管理和认证,提供全面的4A安全管理(指Account,Authentication,Authorization和Audit)。

为企业提供社区版IAM产品,减少企业建设IAM的成本;同时提供企业版的IAM咨询和技术支持,从而提高客户体验和降低企业内部的自开发成本。

MaxKey单点登录认证系统,谐音为马克思的钥匙寓意是最大钥匙,是业界领先的IAM-IDaas身份管理和认证产品;支持OAuth 2.x/OpenID Connect、SAML 2.0、JWT、CAS、SCIM等标准协议;提供标准、安全和开放的用户身份管理(IDM)、身份认证(AM)、单点登录(SSO)、资源管理和权限管理等;开源、安全、自主可控。

官方网站地址:https://www.maxkey.top/

3. MaxKey安装配置

安装的版本为v3.5.X,请参照官方安装文档

https://www.maxkey.top/zh/conf/tutorial.html

3.1. 登录管理控制台

登录到MaxKey后台管理

3.2. 应用配置

进入后台“应用管理”,编辑应用

配置主要明细入下

配置对应关系

序号

MaxKey

参数

备注

1

登录地址

http://192.168.0.105:9080/protectweb

2

访问协议

OAuth2.0

3

回调地址

http://192.168.0.105:9080/protectweb/callback

4

授权方式

authorization_code password client_credentials

5

适配

启用

适配

6

适配器

OAuth2.0默认适配器

适配器

3.3. 应用访问赋权

如果不在该列表内,可以“新增成员”

4. APISIX安装配置

安装的版本为v3.1,请参照官方安装文档

https://apisix.apache.org/zh/docs/apisix/installation-guide/

5. 场景示例

开源的 API 网关 Apache APISIX 支持使用 openid-connect 插件对接以上身份认证服务,APISIX 会将所有未认证的请求重定向至身份认证服务的登录页,当登录成功后 APISIX 会将获取到的用户信息发送至上游服务。

下图为 OpenID Connect 协议交互流程:

在重定向阶段(Redirect),IdP 将用户重定向到一个预先配置好的重定向 URL(redirect_url),例如 http://192.168.0.105:9080/protectweb/callback。请注意:这是一个在 APISIX 中不存在的 API,它只用于捕获相关的请求,并在 OIDC 逻辑中完成 Token 交换的功能。请不要使用这个地址作为触发 OIDC 插件重定向的条件,否则,它将返回如下错误:the error request to the redirect_uri path, but there"s no session state found。

5.1. 相关术语

1. Bearer Only: MaxKey支持账户密码或 AccessToken 进行身份认证,若启用 bearer_only 选项,则仅允许通过 AccessToken 进行认证,该方式适用于服务之间的访问认证;

2. Inst: MaxKey中的 Inst相当于一个租户,不同 Inst 是相互隔离的,只能管理和验证它们所具有的用户;

3. Scope:这是一种限制在访问令牌(AccessToken)中声明的角色的方法。例如,当一个客户端要求验证一个用户时,客户端收到的访问令牌将只包含范围明确指定的角色映射。客户端范围允许你限制每个单独的访问令牌的权限,而不是让客户端访问用户的所有权限;

4. User:User 是可以登录到 MaxKey的用户,可以思考下你所用过的 SSO 登录服务;

5. Client:客户端是指想要使用 MaxKey来保护的服务。

5.2. 前置条件

本示例使用 APISIX的默认服务 作为上游服务,它将返回请求中的所有内容。

5.3. 场景一:使用账户密码保护上游服务

本示例将引导客户端到登陆页通过账户密码的方式进行身份认证:

5.3.1. 创建一条路由

APISIX登录

路由创建,配置如下

{ "_meta": { "disable": false  }, "bearer_only": false, "client_id": "ae20330a-ef0b-4dad-9f10-d5e3485ca2ad", "client_secret": "KQY4MDUwNjIwMjAxNTE3NTM1OTEYty", "discovery": "http://192.168.0.104/sign/authz/oauth/v20/1/.well-known/openid-configuration?client_id=ae20330a-ef0b-4dad-9f10-d5e3485ca2ad", "introspection_endpoint": "", "introspection_endpoint_auth_method": "", "logout_path": "/protectapi/logout", "realm": "1", "redirect_uri": "http://192.168.0.105:9080/protectweb/callback"}

5.3.2. 访问未授权地址

访问 http://192.168.0.105:9080/protectweb/ 时,由于未进行登录,因此将被引导到 MaxKey 的登录页面:

5.3.3. 授权应用访问

1、输入账号(admin)、密码(maxkey)完成登录后

2、成功跳转到 http://192.168.0.105:9080/protectweb/ 页面:

5.4. 场景二:使用 AccessToken 验证身份

通过启用 bearer_only 参数对应用之间的调用进行身份认证,此时应用访问 APISIX 时需携带 Authorization Header,否则该请求将被拒绝。

5.4.1. 创建一条路由

{ "_meta": { "disable": false  }, "bearer_only": true, "client_id": "ae20330a-ef0b-4dad-9f10-d5e3485ca2ad", "client_secret": "KQY4MDUwNjIwMjAxNTE3NTM1OTEYty", "discovery": "http://192.168.0.104/sign/authz/oauth/v20/1/.well-known/openid-configuration", "introspection_endpoint": "http://192.168.0.104/sign/authz/oauth/v20/introspect", "introspection_endpoint_auth_methods_supported": [ "client_secret_basic"  ], "logout_path": "/protectweb/logout", "realm": "1", "redirect_uri": "http://192.168.0.105:9080/protectweb/callback"}

5.4.2. 访问未授权地址

未携带 X-Access-Token 访问 Apache APISIX 时将返回 401 表明未经授权:

curl -X GET -i "http://192.168.0.105:9080/protectapi/"

5.4.3. 调用MaxKey API 获取 AccessToken:

对应命令入下

curl -X GET -i "http://192.168.0.104/sign/authz/oauth/v20/token?grant_type=password&username=admin&client_id=ae20330a-ef0b-4dad-9f10-d5e3485ca2ad&client_secret=KQY4MDUwNjIwMjAxNTE3NTM1OTEYty&password=maxkey"

5.4.4. 携带AccessToken访问

将 AccessToken 放于 Authorization 头中请求 APISIX(替换掉 ${AccessToken}),可以认证成功:

对应命令入下

curl -X GET -H "Authorization: Bearer 87d24b21-b9a5-472e-a405-e2ead4d1bb9f" -i "http://192.168.0.105:9080/protectapi/"

5.5. 场景三:上游服务解析 UserInfo 信息

当启用 APISIX set_userinfo_header 配置后,认证成功后回调请求将携带 X-Userinfo 请求头,它包含了 User 的基本信息,可通过 base64_decode 获得用户内容。

6. 常见问题

6.1. 为什么 APISIX 中 Cookie 值非常长?

因为 APISIX 会将 id_token、access_token、refresh_token 等值写入 Cookie 中,因此整个 Cookie 内容比较长。具体实现可阅读 lua-resty-openidc 库中设置 session 的逻辑。

6.2. 如何修改 Session 存储的 Cookie 名称、存储位置?

目前 openid-connect 插件未提供自定义这部分配置的能力,因此可以使用 lua-resty-session 中提供的方法:通过 NGINX 变量的方式对其默认配置进行覆盖。 此处借助 APISIX 提供的 NGINX 配置注入能力以实现覆盖:通过在配置文件 {apisix}/conf/config.yaml 中添加这些代码,可修改 Session 存储 Cookie 的名称:

nginx_config: http_server_configuration_snippet: | set $session_name "session_override";

关键词: 访问管理 Apache HTTP https

 

热文推荐

【热闻】汽车早报|蔚来ET5不减配不降价 马斯克否认特斯拉与比亚迪暂停电池合作

市场监管总局:2022年接收新能源汽车投诉举报1 6万件同比增62 84%3月14日,市场监管总局发布数据显示,随着新能源汽车渗透率快速提高,消费者

2023-03-15

段永平_说一说段永平的简介 世界播报

夏弥来为大家解答以下的问题,段永平,说一说段永平的简介,现在让我们一起来看看吧!1、段永平,男,汉族,1961年3月10

2023-03-15

环球动态:石家庄公交车上,为灭火的两兄弟英雄点赞!

近日,河北石家庄一辆载客的公交车突然停下司机从车上跑了下来乘客不仅没有责怪还纷纷点赞这究竟是怎么一回事?这位司机名叫张海涛是石家庄市

2023-03-14

台军居然“山寨”过AUG,还被原厂打上门索赔?丨轻武专栏_当前视点

大家好,我是头发“秃秃秃秃秃”的排版少女梦小二。最近,有人给军武菌发了这样一张照片,问这是什么型号的枪,是AUG的原型枪

2023-03-14

格心方能致物,真情才得真韵|在广州,见苏州「蘇式人文空间展」,君可见苏州本真

3月3日-6日,以“苏州印象”为主题的「蘇式人文空间展」亮相广州设计周,花窗,飞檐,花木,几凳,昆曲,檀香,古籍,香茗,苏式雅韵汇聚一方

2023-03-14

【全球独家】两城管将气球商贩按倒在地广东佛山发布情况说明

禅城区人民政府门户网网站2月2日消息,祖庙街道综合行政执法办公室发布《关于劝导游商停止售卖气球的情况说明》:1月31日下

2023-03-14

职工简易合同范本(实用49篇)

职工简易合同范本第1篇甲方:乙方:根据《^v^劳动法》、《^v^法》以及有关法律法规和政策的规定,经双方平等协商,订立本合同如下:一、劳动合同

2023-03-14

天天最资讯丨全国汽车大降价,这些 SUV 依旧没优惠,是因为固执还是硬实力?

买车用车就找SUV大咖最近大家都看到不少被购车补贴、购车优惠的信息,似乎这时候要是不降价不优惠,车子都很难卖出去。但事实真的如此吗?所谓

2023-03-14

市场监管总局发布电动平衡车等5类产品消费提示 环球播资讯

市场监管总局3月13日发布电动平衡车等5类产品消费提示,聚焦百姓关心关注的消费品,加强产品质量安全监管,切实维护消费者合法权益。选购电动

2023-03-14

余额宝收益率 余额宝的收益率多少

余额宝收益率的具体查询操作如下:1、打开手机上的支付宝软件,点击“我的”界面-“余额宝”进入;2、“余额宝”页面中的“七日年化率”数据是

2023-03-14

全球微资讯!在职研究生可以申请双学位么_在职研究生能读双学位吗

1、在职研究生能读双学位。2、但是需要经过单位批准,并且需要通过审核。3、第二学士学位主要招收大学本科毕业并获得学士学位

2023-03-14

小牛电动车官网和实体店的区别(小牛电动车官网报价)

1、报价:2999元小牛电动踏板车采用了与特斯拉同级的松下18650锂电池,重量仅为12kg,相比同行的铅酸电池一般50kg的重量要轻很多,得益于170节26

2023-03-13

广州越秀区在集中隔离密接人员中发现2名核酸检测阳性人员

“广州越秀发布”微信公众号消息,9月25日,越秀区在集中隔离密接人员中发现2名新冠肺炎病毒核酸检测阳性人员,区新冠肺炎疫

2023-03-13

999纯银多少钱一克(2023年3月13日)

999纯银多少钱一克(2023年3月13日)

2023-03-13

退休后公积金提取条件是什么 退休后住房公积金如何提取?_天天观天下

退休后住房公积金可以全部取出来吗退休后住房公积金如何提取?有一个前提条件我国的新一轮退休潮即将到来,意味着一大批人开始退休,退休之后

2023-03-13

股票换手率是什么表现_股票换手率是什么意思 每日看点

1、换手率也叫“换手率”,是指一定时期内股票在市场上的周转频率,是反映股票流动性的指标之一。根据样本人群的性质,有不同类

2023-03-13

巴菲特又卖对了?车圈降价潮突袭,基金经理最新解读,这个热门赛道贝塔或已见顶

买在无人问津处,卖在人声鼎沸时。近日声势浩大的车企降价潮,传导至股票市场引发汽车股巨震,3月10日当天,A、H股市场汽车股纷纷大跌,多股日

2023-03-13

玄关处挂山水好不好 玄关处可以挂山水么|世界独家

1、玄关处挂山水不好。2、玄关和山水画其实是两种风水气场,所以不太适合在玄关处挂上山水画。首先玄关就是大门,有很强烈且比较复杂的风水进

2023-03-13

全球实时:建立良好的公共秩序教学设计(建立良好的公共秩序教学设计)

1、一、谈话导入:同学们,公共场所是我们大家共同生活、学习、工作的地方,需要有良好的秩序来维护。2、街道上的行人和车辆顺畅通行,需要公

2023-03-12

海南控股携“世界之城”参加第三届中国国际消费品博览会|当前消息

海南控股携“世界之城”参加第三届中国国际消费品博览会

2023-03-12

资讯

【热闻】汽车早报|蔚来ET5不减配不降价 马斯克否认特斯拉与比亚迪暂停电池合作

市场监管总局:2022年接收新能源汽车投诉举报1 6万件同比增62 84%3月14日,市场监管总局发布数据显示,随着新能源汽车渗透率快速提高,消费者

2023-03-15     
段永平_说一说段永平的简介 世界播报

夏弥来为大家解答以下的问题,段永平,说一说段永平的简介,现在让我们一起来看看吧!1、段永平,男,汉族,1961年3月10

2023-03-15     
环球动态:石家庄公交车上,为灭火的两兄弟英雄点赞!

近日,河北石家庄一辆载客的公交车突然停下司机从车上跑了下来乘客不仅没有责怪还纷纷点赞这究竟是怎么一回事?这位司机名叫张海涛是石家庄市

2023-03-14     
台军居然“山寨”过AUG,还被原厂打上门索赔?丨轻武专栏_当前视点

大家好,我是头发“秃秃秃秃秃”的排版少女梦小二。最近,有人给军武菌发了这样一张照片,问这是什么型号的枪,是AUG的原型枪

2023-03-14     
格心方能致物,真情才得真韵|在广州,见苏州「蘇式人文空间展」,君可见苏州本真

3月3日-6日,以“苏州印象”为主题的「蘇式人文空间展」亮相广州设计周,花窗,飞檐,花木,几凳,昆曲,檀香,古籍,香茗,苏式雅韵汇聚一方

2023-03-14     
【全球独家】两城管将气球商贩按倒在地广东佛山发布情况说明

禅城区人民政府门户网网站2月2日消息,祖庙街道综合行政执法办公室发布《关于劝导游商停止售卖气球的情况说明》:1月31日下

2023-03-14