惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
博客园 - Franky
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿
博客园 - 司徒正美
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
B
Blog RSS Feed
阮一峰的网络日志
阮一峰的网络日志
宝玉的分享
宝玉的分享
V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
IT之家
IT之家
博客园_首页
S
SegmentFault 最新的问题
A
About on SuperTechFans
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
H
Help Net Security
MongoDB | Blog
MongoDB | Blog

API

NSFW 检测工具推荐 - V2EX 我搭建了一个新的中转, 0.12 满血 pro 有兄弟们要吗 - V2EX 所谓的 AI 使用 API 的时候推理模式计算使用量疑惑 八字喜用神起名大师 API 接口 PPT 转高精度图片 API 接口 网页 URL 转 Markdown API 接口 PPT 转高精度 PDF API 接口 2025 年有哪些可用的短信提醒的邮箱服务 全球 QS 世界大学排名数据 API 接口 盲派八字推理 API 数据接口 URL 生成网站截图 API 数据接口 URL 转静态 HTML 文件 API 数据接口 PDF 转 HTML API 数据接口 有没有可以利用 AI,精确识别截屏中特定内容坐标的 API? 有哪些开源程序可以快速构建 API 服务 一个 GET API URL 设计的有趣问题 有没有能获取淘宝详情的 api 平台 请问有什么 Midjourney API 站点? 兄弟们,能推荐个植物数据库吗 HTML 转 PDF API 接口 考题相似度 AI 分析 API 数据接口 历年高校招生计划数据 API 数据接口 搞了一个返回名言警句的 API 关于 API 设计问题,请大家指点指点 我们在做一个告警系统, 想把严重的告警通过电话告出来,请问有木有相关的 API 吗?费用便宜点的 求组,想找一个文档转图片的付费 api 请教,未登陆用户的 api 怎么防护比较合适? 有没有免费翻译的 api,输入文本直接翻译成中文 有什么好用的英语词典的 api 吗? 就是输入英文单词可以查出它的音标? 有没有醒图或者美图秀秀拼图功能类似的 API
Authing 结合 APISIX 实现统一可配置 API 权限网关(快速启动...
Authing · 2023-03-24 · via API

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

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 。 ( https://console.authing.cn/api/v2/get_console_context

04 如何实现

注意,本教程只用于与 APISIX 和 Authing 进行集成测试。后续我们将发布《 Authing 结合 APISIX 实现统一可配置 API 权限网关(插件开发版)》。

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 官网:www.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.orghttpbin.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 访问治理。