apisix网关及插件实践

我们在sidecar构架之dapr授权中间件使用的dapr自身的中间件进行授权校验,但一般情况,我们会使用网关,在网关层进行授权认证,本次我们来使用apisix网关实践一下。
这里我们搭建了oauth2 server,并完成了oidc的搭建OIDC搭建之Ory Hydar 2.0实践

部署

1
2
3
4
5
6
#将 Apache APISIX 的 Docker 镜像下载到本地
git clone https://github.com/apache/apisix-docker.git
# 将当前的目录切换到 apisix-docker/example 路径下
cd apisix-docker/example
# 运行 docker-compose 命令,安装 Apache APISIX
docker-compose -p docker-apisix up -d

Q771x0

使用

apisix-dashboard

apisix-dashboard访问地址:
http://localhost:9000
账号密码:admin / admin

新建Upstream

H1jF7K

新建Route

首先进入Route列表页,点击创建Create如下图:
slFQSW

PMDsIt

路由测试

可以直接通过浏览器访问:http://localhost:9080/web
会发现已经成功路由到Web1和Web2服务,并在二者间切换。

1
2
hello web1
hello web2

插件

jwt-auth

增加消费者

此步骤主要确定 key 和 secret
2f0xCT

1
2
3
4
5
6
7
8
9
10
11
{
"username": "jwt",
"plugins": {
"jwt-auth": {
"disable": false,
"exp": 86400,
"key": "user",
"secret": "user"
}
}
}

开启路由jwt-auth

对应上 key secret
bCVinE

测试

开启一个 public-api 用于 apisix 提供的token生成及校验

1
2
3
4
 {
"disable": false,
"uri": "/apisix/plugin/jwt/sign"
}

生成一个token

1
2
3
curl https://api.XXX.com/apisix/plugin/jwt/sign?key=user

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJrZXkiOiJ1c2VyIiwiZXhwIjoxNjcyMjI3OTMxfQ.IK0rx-ScZM5c70FSql1VnRmTM1dfs1KoOpCgfqwS_YQ
  • 有token
    1
    2
    curl --location --request GET 'https://api.XXX.com/test/v1' \
    --header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJrZXkiOiJ1c2VyIiwiZXhwIjoxNjcyMjI3OTMxfQ.IK0rx-ScZM5c70FSql1VnRmTM1dfs1KoOpCgfqwS_YQ'
    1
    2

    * 没token
    curl –location –request GET ‘https://api.XXX.com/test/v1
    1
    2
    3
    4
    ```
    {
    "message": "Missing JWT token in request"
    }