Kong + JWT

配置服务

添加 Service

1
2
3
4
curl -i -X POST \
  --url http://localhost:8001/services/ \
  --data 'name=api-gateway-sv' \
  --data 'url=https://blog.bitqiu.cc'

为服务添加路由

1
2
3
curl -i -X POST \
  --url http://localhost:8001/services/api-gateway-sv/routes \
  --data 'hosts[]=api.bitqiu.cc'

通过Kong转发您的请求

1
2
3
curl -i -X GET \
  --url http://localhost:8000/ \
  --header 'Host: api.bitqiu.cc'

配置 JWT

service 开启 jwt 插件

1
2
3
4
5
6
7
# 查看插件列表
curl -i -X GET \
	--url http://localhost:8000/
# 开启 jwt 插件
curl -i -X POST \
	--url http://localhost:8001/services/api-gateway-sv/plugins \
	--data 'name=jwt'

创建 consumer

1
2
3
curl -i -X POST \
	--url http://localhost:8000/consumers \
	--data 'username=bitqiu'

创建 jwt 凭证

可以指定算法algorithmiss签发者key,密钥secret,也可以省略,会自动生成。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
curl -i -X POST \
	--url http://localhost:8000/consumers/bitqiu/jwt \
	--data 'algorithm=HS256' \
	--data 'key=bitqiu_key' \
	--data 'secret=uFLMFeKPPL525ppKrqmUiT2rlvkpLc9u'

# 查看 jwt 凭证
curl -i -X GET \
	--url http://localhost:8000/consumers/bitqiu/jwt
# response
{
    "rsa_public_key": null,
    "created_at": 1553681782,
    "consumer": {
        "id": "2e34d380-ec48-4a0d-926f-6dd8696a7eca"
    },
    "id": "61ee520c-3387-42f0-8e5f-02e0dc34d3d4",
    "algorithm": "HS256",
    "secret": "uFLMFeKPPL525ppKrqmUiT2rlvkpLc9u",
    "key": "7Xc3L8TdFpU6kgPEeR4iqMAstqLewJSS"
}

jwt 下发

业务服务器根据 kong 生成的 jwt 凭证中的 algorithm、key(iss)、secret进行 token 的演算和下发。请求鉴权接口需携带 Authorization: Bearer jwt 进行请求。测试的话可以用 https://jwt.io 生成:

1
2
3
4
curl -i -X GET \
  --url http://localhost:8000/ \
  --header 'Host: api.bitqiu.cc'
  --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJkb3dudG93bl9rZXkiLCJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.nDvZa6Nu9cLxO36jnXsHwYIxrNLrDomJgvKJ5gihn4k'

Built with Hugo
Theme Stack designed by Jimmy