使用开源 MaxKey 与 APISIX 网关保护你的 API

这篇具有很好参考价值的文章主要介绍了使用开源 MaxKey 与 APISIX 网关保护你的 API。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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后台管理

使用开源 MaxKey 与 APISIX 网关保护你的 API

3.2. 应用配置

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

使用开源 MaxKey 与 APISIX 网关保护你的 API

配置主要明细入下

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

配置对应关系

序号

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. 应用访问赋权

使用开源 MaxKey 与 APISIX 网关保护你的 API

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

4. APISIX安装配置

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

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

5. 场景示例​

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

使用开源 MaxKey 与 APISIX 网关保护你的 API

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

使用开源 MaxKey 与 APISIX 网关保护你的 API

在重定向阶段(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的默认服务 作为上游服务,它将返回请求中的所有内容。

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

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

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

5.3.1. 创建一条路由

APISIX登录

使用开源 MaxKey 与 APISIX 网关保护你的 API

路由创建,配置如下

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

{
 "_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"
}

复制

使用开源 MaxKey 与 APISIX 网关保护你的 API

5.3.2. 访问未授权地址

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

使用开源 MaxKey 与 APISIX 网关保护你的 API

5.3.3. 授权应用访问

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

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

使用开源 MaxKey 与 APISIX 网关保护你的 API

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

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

5.4.1. 创建一条路由

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

{
 "_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"
}

复制

使用开源 MaxKey 与 APISIX 网关保护你的 API

5.4.2. 访问未授权地址

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

使用开源 MaxKey 与 APISIX 网关保护你的 API

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

5.4.3. 调用 MaxKey API 获取 AccessToken:

使用开源 MaxKey 与 APISIX 网关保护你的 API

对应命令入下

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}),可以认证成功:

使用开源 MaxKey 与 APISIX 网关保护你的 API

使用开源 MaxKey 与 APISIX 网关保护你的 API

对应命令入下

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";文章来源地址https://www.toymoban.com/news/detail-462517.html

到了这里,关于使用开源 MaxKey 与 APISIX 网关保护你的 API的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ApiSix网关环境搭建及简单使用(Windows)

    1. 安装 docker-desktop 推荐文章:非常详细的描述了安装过程以及出现问题后的处理办法https://docker.easydoc.net/doc/81170005/cCewZWoN/lTKfePfP 2. 启动 docker 国内镜像加速 3.安装apisix 官方文档:https://apisix.apache.org/zh/docs/apisix/getting-started/ windows 下安装只需要执行这两步即可( 注意第二条命

    2024年02月02日
    浏览(71)
  • VX-API-Gateway开源网关技术的使用记录

    官网地址 https://mirren.gitee.io/vx-api-gateway-doc/ 访问 https://gitee.com/mirren/VX-API-Gateway/releases 下载最新的程序zip包 找个目录解压程序包 启动程序bin目录里的start.bat或start.sh 浏览器访问5256端口 点击进入首页后,会进入 http://localhost:5256/static/Application.html 提示要登录,默认账号是VXAd

    2024年02月14日
    浏览(40)
  • [运维|中间件] Apache APISIX使用笔记

    Apache APISIX 是一个动态、实时、高性能的云原生 API 网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。 官方文档地址 快速安装

    2024年02月14日
    浏览(51)
  • 快试试用 API Key 来保护你的 SpringBoot 接口安全吧!

    来源:baeldung.com/spring-boot-api-key-secret 安全性在REST API开发中扮演着重要的角色。一个不安全的REST API可以直接访问到后台系统中的敏感数据。因此,企业组织需要关注API安全性。 Spring Security 提供了各种机制来保护我们的 REST API。其中之一是 API 密钥。API 密钥是客户端在调用

    2024年02月13日
    浏览(34)
  • API 网关 vs 负载均衡:选择适合你的网络流量管理组件

    由于互联网技术的发展,网络数据的请求数节节攀升,这使得服务器承受的压力越来越大。在早期的系统架构中,通常使用负载均衡来将网络流量平摊到多个服务器中,以此减轻单台服务器的压力。但是现如今,后端服务的种类在不断地变多,每个种类的后端都以 API 的形式

    2024年02月11日
    浏览(47)
  • .NET 5 Web API 中JWT详细教程:保护你的Web应用

    第一部分: 理解JWT JSON Web Token(JWT)是一种在不同系统之间传递信息的安全方式。它由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。头部包含加密算法和令牌类型等信息,载荷包含用户的信息,签名用于验证令牌的真实性。 安装必要的包 在开始之前,我们

    2024年02月15日
    浏览(43)
  • API网关:开源Apinto网关-上游服务篇(二)

    服务发现是一种分布式系统中的关键技术,它能够帮助应用程序动态地发现和访问依赖的服务实例,解决了服务实例分布在不同节点上的问题。通过服务发现,应用程序可以快速找到需要调用的服务实例的位置和元数据信息,并实现负载均衡和故障恢复等功能,从而提高分布

    2023年04月25日
    浏览(39)
  • 什么是API网关,解释API网关的作用和特点?解释什么是数据流处理,如Apache Flink和Spark Streaming的应用?

    API网关是一种在分布式系统中的组件,用于管理不同系统之间的通信和交互。API网关的作用是在不同系统之间提供统一的接口和协议,从而简化系统之间的集成和互操作性。 API网关的特点包括: 路由和分发请求:API网关可以根据请求的URL、方法、参数等信息,将请求分发到

    2024年02月11日
    浏览(46)
  • 开源 API 网关的访问策略(一)

    许多企业和组织面临着网关访问控制的挑战,因为传统的访问控制方法往往过于笨重和繁琐。这些方法可能涉及复杂的规则集、繁琐的手动配置过程、缺乏灵活性和可扩展性等问题。此外,随着云计算和移动设备的广泛应用,访问控制的复杂性和挑战程度也不断增加。因此,

    2024年02月09日
    浏览(62)
  • 分享 6 款 近期在研究的开源 API 网关

    随着API越来越广泛和规范化,对标准化、安全协议和可扩展性的需求呈指数级增长。随着对微服务的兴趣激增,这一点尤其如此,微服务依赖于API进行通信。API网关通过一个相对容易实现的解决方案来满足这些需求。 也许最重要的是,API网关充当用户和数据之间的中介。AP

    2024年02月09日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包