HMAC 仅用于私有 API

HMAC for only private API

我们有两种类型的 API 端点; public 和私人。是否可以仅在专用端点上使用 HMAC?

e.g.

GET https://api.example.com/items ... This is public API. No need HMAC.

POST https://api.example.com/users/john/friends ... This is private API. It needs HMAC. We want to confirm that John send this request by checking HMAC signature.

以下是hmac-auth插件的安装。好像没有public和私有的区别

curl -i -X POST \
    --url http://localhost:8001/apis/api.example.com/plugins/ \
    --data "name=hmac-auth"

我找到了答案并将其发布到 kong github issue。 https://github.com/Mashape/kong/issues/2120#issuecomment-281890169

(1) 创建 2 个 API 具有不同的 request_path(没有 request_host)

curl -i -X POST \
  --url http://localhost:8001/apis/ \
  --data 'name=example-items-api' \
  --data 'upstream_url=http://api.example.com/' \
  --data 'request_path=/items'

curl -i -X POST \
  --url http://localhost:8001/apis/ \
  --data 'name=example-users-api' \
  --data 'upstream_url=http://api.example.com/' \
  --data 'request_path=/users'

(2) 为 'example-users-api' API

应用 HMAC 插件
curl -i -X POST \
    --url http://localhost:8001/apis/example-users-api/plugins/ \
    --data "name=hmac-auth"