关于后端:新版本插件解读|如何借助-Forward-Auth-增强认证能力

3次阅读

共计 2055 个字符,预计需要花费 6 分钟才能阅读完成。

Forward Auth 能奇妙地将认证与受权逻辑转移至专门的内部服务中,网关会将用户的申请转发至认证服务中,并在认证服务响应非 20x 状态时,阻止原有申请并替换后果。通过这样的形式,就能够实现认证未通过时,返回自定义报错或用户重定向至认证页面。

本文将介绍 Apache APISIX 2.12.0 版本中新增插件 forward-auth 的应用办法,为大家简略阐明下如何应用这款设计简洁的认证模型。

原理

对于 forward-auth 插件在 Apache APISIX 中的运行原理与流程如上图所示,具体总结为以下几步:

  • 第一步:由客户端向 APISIX 发动申请
  • 第二步:由 APISIX 向用户配置的认证服务发动申请
  • 第三步:认证服务响应(2xx 或异样状态)
  • 第四步:APISIX 会依据认证服务响应,决定 向上游转发申请 间接 向客户端发送回绝响应

如何应用

步骤一:设置认证服务

假如有这样一项认证服务,用户向其发送带有 Authorization 申请头的申请。如果这个数据通过验证则返回 200 状态码和一个名为 X-User-ID 的响应头;如果没有通过验证则认为认证状态过期,返回 302 状态码和 Location 响应头将客户端重定向至登录页面。

步骤二:创立路由并开启 forward-auth 插件


接下来,咱们将配置一个路由并开启 forward-auth 插件,将上述的认证服务和上游利用对接起来。

curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{"plugins": {"forward-auth": {"address":"http://127.0.0.1:9080/auth","request_headers": ["Authorization"],"upstream_headers": ["X-User-ID"],"client_headers": ["Location"]
        }
    },
    "uri": "/user"
}'

上述配置细节释义:

  • 当有申请匹配到以后路由时,发送一个申请至 address 中的地址,其中将附带request_headers 中定义的申请头 Authorization(即配置须要由客户端转发至认证服务的申请头,如果不设置则不转发任何申请头),认证服务能够据此进行用户身份确认。
  • 如果认证通过,状态码为 200 并返回一个 upstream_headers 中定义的 X-User-ID(即认证通过时由认证服务转发至上游的申请头,如果不设置则不转发任何申请头)。
  • 如果认证失败,状态码为 302 并返回一个在 client_headers 中定义的 Location(即认证失败时由认证服务向客户端发送的响应头,如果不设置则不转发任何响应头)。

步骤三:测试申请

# 应用 POST 申请并发送数据
curl http://127.0.0.1:9080/user \
    --header 'Authorization: true'

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 28
Server: APISIX/2.11.0

{"user_id":"i-am-real-user"}

# 应用 GET 申请
curl -i http://127.0.0.1:9080/user \
    --header 'Authorization: false'

HTTP/1.1 302 FOUND
Server: APISIX/2.11.0
Location: https://example.com/auth

补充:敞开插件

如已应用结束,只需移除路由配置中 forward-auth 插件相干配置并保留,即可敞开路由上的 Forward Auth 插件。得益于 Apache APISIX 的动态化个性,开启敞开插件的过程都不须要重启 Apache APISIX。

总结

想要获取更多对于 forward-auth 插件阐明和残缺配置列表,可参考:https://apisix.apache.org/doc…。

对于 Apache APISIX

Apache APISIX 是一个动静、实时、高性能的开源 API 网关,提供负载平衡、动静上游、灰度公布、服务熔断、身份认证、可观测性等丰盛的流量治理性能。

Apache APISIX 能够帮忙企业疾速、平安地解决 API 和微服务流量,包含网关、Kubernetes Ingress 和服务网格等。目前已被普华永道数据安全团队、腾讯蓝军、安全河汉实验室、爱奇艺 SRC 和源堡科技平安团队等业余网络安全机构测试,并给予了高度认可。

Apache APISIX 落地用户(仅局部)

  • Apache APISIX GitHub:https://github.com/apache/apisix
  • Apache APISIX 官网:https://apisix.apache.org/
  • Apache APISIX 文档:https://apisix.apache.org/zh/…
正文完
 0