You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过WSO2 APIM为API请求添加Token授权

WSO2 APIM 添加Token授权的具体步骤

一、发布者门户(Publisher)配置

1. 修正API基础配置(纠正之前的错误)

  • 登录发布者门户,创建/编辑目标API:
    • 新API:点击「Create API」→「Design a New API」,填写API名称、版本,上下文设为/country,生产/沙箱端点填http://199.3x.xx.3x:4041/。
    • 已有API:找到对应API进入编辑模式,修改上下文和端点至上述配置。

2. 配置API资源映射

  • 进入「Resources」标签页,点击「Add Resource」:
    • 请求方法选择POST,资源路径填/usa,确保API的完整路径/country/usa与后端路径完全匹配。
    • 在「Endpoint」下拉框选择已配置的生产/沙箱端点,完成路径映射。

3. 启用OAuth2 Bearer授权

  • 进入「Security」标签页,找到「Security Schemes」:
    • 点击「Add Security Scheme」,选择OAuth2类型,填写方案名称(如BearerAuth),勾选「Enable」,Token类型选择OAuth2。
    • 保存安全方案后,回到「API Security」区域,将BearerAuth添加到API的安全方案列表并启用。

4. 配置授权头传递(确保后端接收令牌)

  • 进入「Message Mediation」标签页,点击「Add Mediator」选择「Header Mediator」:
    • 方向设置为「Outgoing Request」(网关转发至后端的请求)。
    • 头名称填Authorization,值设为$ctx:Authorization,实现客户端授权头直接透传到后端。
  • 保存配置后,点击「Publish API」发布到网关。

二、开发者门户(Devportal)配置

1. 创建应用并生成密钥

  • 登录开发者门户,点击「Applications」→「Add Application」,填写应用名称、描述,访问级别选「Production and Sandbox」。
  • 进入「Keys」标签页,点击「Generate Keys」,选择OAuth2.0类型,根据业务场景选授权类型:
    • 服务端调用选Client Credentials;用户级调用选Password。

2. 订阅目标API

  • 在开发者门户「APIs」列表找到已发布的API,点击「Subscribe」,选择刚创建的应用,确认订阅。

3. 获取Bearer令牌

根据授权类型调用令牌端点(默认地址为https://<APIM_HOST>:9443/oauth2/token):

  • Client Credentials模式示例:
curl --location --request POST 'https://<APIM_HOST>:9443/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=<你的客户端ID>' \
--data-urlencode 'client_secret=<你的客户端密钥>'
  • Password模式示例:
curl --location --request POST 'https://<APIM_HOST>:9443/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'client_id=<你的客户端ID>' \
--data-urlencode 'client_secret=<你的客户端密钥>' \
--data-urlencode 'username=<用户账号>' \
--data-urlencode 'password=<用户密码>'

从返回结果中提取access_token,格式为Bearer <access_token>。

4. 调用带授权的API

通过APIM网关地址(默认https://<APIM_HOST>:8243)发起请求,携带授权头:

curl --location 'https://<APIM_HOST>:8243/country/usa' \
--header 'Content-Type: application/json' \
--header 'language: english' \
--header 'culture: /' \
--header 'Authorization: Bearer <你的access_token>' \
--data '{
  "info": [
    {
      "city": "newyork"
    }
  ]
}'

三、之前配置失效的原因说明

  1. 错误将usa设为「设备(devices)」,正确做法是将/usa作为API资源路径,配合/country上下文形成完整请求路径。
  2. 未启用OAuth2安全方案,导致网关不校验令牌,也无法正确传递授权头到后端。

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:13:14