免费注册,打造高效身份管理
博客/开发者/Authing 结合 APISIX 实现统一可配置 API 权限网关(快速启动版)
Authing 结合 APISIX 实现统一可配置 API 权限网关(快速启动版)
Authing 官方2023.02.08阅读 2230

当开发者在构建网站、移动设备或物联网应用程序时,可能需要使用 API 网关来处理接口流量。而在实际业务场景中,除去少部分允许匿名者访问的 API 外,API 提供者通常会对 API 使用者进行权限管控,只允许符合访问要求的使用者访问该 API。其次,权限管控涉及到权限策略,对于不同条件且均符合访问要求的使用者做权限区分。本文将带你快速创建使用 Authing 结合 APISIX 实现统一可配置 API 权限网关

本文将使用连载形式,后续还会更新《Authing 结合 APISIX 实现统一可配置 API 权限网关(插件开发版)》《Authing 结合 APISIX 实现统一可配置 API 权限网关(高可用部署)》,如果您希望提前阅读上述文章,请添加文章底部 Authing 小助手微信

01 关于 Authing

Authing 是国内首款以开发者为中心的全场景身份云产品,集成了所有主流身份认证协议,为企业和开发者提供完善安全的用户认证和访问管理服务。以「API First」作为产品基石,把身份领域所有常用功能都进行了模块化的封装,通过全场景编程语言 SDK 将所有能力 API 化提供给开发者。同时,用户可以灵活的使用 Authing 开放的 RESTful APIs 进行功能拓展,满足不同企业不同业务场景下的身份和权限管理需求

02 关于 APISIX

Apache APISIX 是一个动态、实时、高性能的 API 网关,提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。Apache APISIX 不仅支持插件动态变更和热插拔,而且拥有众多实用的插件。Apache APISIX 的 OpenID Connect 插件支持 OpenID Connect 协议,用户可以使用该插件让 Apache APISIX 对接 Authing 服务,作为集中式认证网关部署于企业中。

03 业务目标

通过 Authing 权限管理 + APISIX 实现 API 的访问控制。

案例:我们希望用户在 Authing 进行认证后访问到被授权的 API。 (console.authing.cn/api/

04 如何实现

注意,本教程只用于与 APISIX 和 Authing 进行集成测试。后续我们将发布《Authing 结合 APISIX 实现统一可配置 API 权限网关(插件开发版)》,当然如果您希望马上阅读相关文档,请添加 Authing 小助手微信,并备注【插件开发版】,我们的工作人员将第一时间发送给您

4.1 业务架构

4.2 先决条件

需要自行提前安装,docker 和 docker-compose。

4.3 APISIX & Authing Plugin 基础环境搭建

  • 下载编排文件
wget https://raw.githubusercontent.com/fehu-asia/authing-apisix-docker-compose/main/apisix-authing.tgz --no-check-certificate
  • cd 到压缩包所在目录执行如下命令
tar -zxvf apisix-authing.tgz  -C /  && cd /apisix && docker-compose -p docker-apisix up -d

到这里可以使用 docker ps 查看 apisix docker 进程启动状态, 随后访问 {your server IP}:9000 可以进入 dashboard 界面进行路由和插件的配置。

4.4 在 Authing 对 API 进行管理

Authing 官网:authing.com

  • 创建应用

配置 Token 签名算法为 RS256 及校验 AccessToken 的方式为 none。

  • 创建用户

进入 Authing 控制台-用户管理-用户列表-点击创建用户后,可以根据不同方式(用户名、手机号、邮箱)创建测试用户,如下图所示:

  • 创建 API

进入 Authing 控制台-权限管理-创建资源,可以选择创建树数据类型的资源,如下图所示:

添加相关操作,这里我们的操作对应 HTTP 的请求方法:

  • 创建策略

进入权限管理-数据资源权限-数据策略标签,可以点击创建策略来新建数据访问策略,如下图所示。策略包含了对应的权限空间中定义的数据以及操作,创建后能够基于此策略对不同对象(用户、角色、用户组等)进行授权管理。

  • API 授权

4.5 添加路由

  • 路由配置

在 APISIX 宿主机上执行。

注意,需要替换请求参数中的用户池 ID 以及密钥。

curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
  "uri": "/*",
  "name": "authing_router",
  "plugins": {
    "ext-plugin-pre-req": {
      "allow_degradation": false,
      "conf": [
        {
          "name": "authing_agent",
          "value": "{\"url\": \"http://authing-adapter:18080/isAllow\",\"user_pool_id\": \"{用户池ID}\",\"user_pool_secret\": \"{用户池密钥}\"}"
        }
      ],
      "disable": false
    }
  },
  "upstream": {
    "nodes": [
      {
        "host": "console.authing.cn",
        "port": 443,
        "weight": 1
      }
    ],
    "timeout": {
      "connect": 6,
      "send": 6,
      "read": 6
    },
    "type": "roundrobin",
    "scheme": "https",
    "pass_host": "node",
    "keepalive_pool": {
      "idle_timeout": 60,
      "requests": 1000,
      "size": 320
    }
  },
  "status": 1
}'

upstream 我们在这里使用的是 httpbin.org ,httpbin.org 是一个简单的在线提供HTTP服务的网站,您可以将其用于测试,您也可以将其修改为自己的实际 API 服务地址。

X-API-KEY 所在位置:/apisix/apisix_conf/config.yaml

若您修改了此字段则需要在 curl 请求中进行修改:

4.6 访问测试

目标:当用户认证并携带有效的 AccessToken 且访问的 uri 是被授权的,方可正常调用 API。

  • 获取 accessToken

让我们先去 Authing 的应用进行认证,获取被授权用户的 accessToken 。

复制这个 access_token 接下来测试会用到。

  • 未认证
curl --location --request GET 'http://{服务器IP}:9080/xxxx'
  • 无权限
curl --location --request GET 'http://{服务器IP}:9080/xxxx' \
--header 'Authorization: Bearer {accessToken}'
  • 认证通过并成功访问
curl --location --request GET 'http://{服务器IP}:9080/api/v2/get_console_context' \
--header 'Authorization: Bearer {accessToken}'

05 未来可期

在此方案基础上我们也可以实现统一的安全审计、用户行为轨迹分析、用户访问风险评估等,用以实现全链路 API 访问治理。下期我们将发布《Authing 结合 APISIX 实现统一可配置 API 权限网关(插件开发版)》,当然如果您希望马上阅读相关文档,请添加 Authing 小助手微信,并备注【插件开发版】,我们的工作人员将第一时间发送给您。

Authing 小助手
Authing 小助手

 

相关阅读:

文章作者

avatar

Authing 官方

0

文章总数

authing blog rqcode
关注 Authing 公众号
随时随地发现更多内容
authing blog rqcode
添加 Authing 小助手
加入 Authing 开发者大家庭
身份顾问在线解答
当前在线
如何打造完整的身份体系?
立即沟通
authing
添加企业微信,领取行业资料
authing
authing
下载 Authing 令牌,体验快速登录认证!
免费使用
在线咨询
电话咨询