本文介绍 apisix 和 authing 对接进行 api 登陆验证的方式。

apisix 介绍

Apache APISIX 是一个动态、实时、高性能的 API 网关,提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。Apache APISIX 不仅支持插件动态变更和热插拔,而且拥有众多实用的插件。Apache APISIX 的 OpenID Connect 插件支持 OpenID Connect 协议,用户可以使用该插件让 Apache APISIX 对接 Authing 服务,作为集中式认证网关部署于企业中。

authing 介绍

Authing 是国内首款以开发者为中心的全场景身份云产品,集成了所有主流身份认证协议,为企业和开发者提供完善安全的用户认证和访问管理服务。其主要功能包括:单点登录、用户分析、扫码登录、多因素认证、行为审计、风险控制、跨平台设备管理、IoT 身份认证等;兼容国际各类标准协议:OAuth2.0、OIDC、SAML、AD/LDAP、WS-Fed、JWT 等;此外还有基于函数计算可以无限制拓展 Authing 能力的 Pipeline 。支持云交付和私有化部署方式,帮助企业和开发者提升生产效率。

apisix 和 authing 对接

1 登录 Authing 账号, 选择自建用户应用,输入应用名称和认证地址

2 设置登陆回调 URL 和登出回调 URL 为你的 apisix 访问地址 http://127.0.0.1:9080/

3 在用户管理界面创建一个新用户,账号密码都是 user1/user1

4 在应用的配置里记录下应用的 App ID 、App Secret 、服务发现地址 这些信息会在 apisix 配置插件时使用。

5 安装 apisix, 具体的安装步骤就不用我们讲了,可以参考官方文档 。

6 配置相应的 url, 设置上游为 httpbin.org,为了展示方便,这里采用 dashboard的方式配置路由。在插件配置里启用 openid-connect 插件, 插件的配置如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
    "client_id":"{YOUR_CLIENT_ID}",
    "client_secret":"{YOUR_CLIENT_SECRET}",
    "discovery":"https://{YOUR_DISCOVERY}",
    "scope":"openid profile",
    "bearer_only":false,
    "realm":"apisix",
    "introspection_endpoint_auth_method":"client_secret_post",
    "redirect_uri":"http://127.0.0.1:9080/"
}

7 配置好路由,访问 “http://127.0.0.1:9080/get”, 由于 启用了 OpenID Connect 插件,所以会被重定向到 authing 登陆界面(如图),输入正确的用户密码就能获得正确的数据。

/img/authing/img.png

8 在authing 的审计日志-用户行为日志 可以看到相应的登陆日志。

小结

本文简单的介绍了 apisix 对接 authing 进行 api 验证。