本文介绍了Apache APISIX 如何与 Hydra 集成实现集中式身份认证。
背景介绍
Apache APISIX
Apache APISIX 是一个开源的云原生 API 网关,作为 API 网关,它兼具动态、实时、高性能等特点,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。你可以使用 APISIX 来处理传统的南北向流量,以及服务间的东西向流量,也可以当做 K8s Ingress controller 来使用。
APISIX 的 OpenID Connect 插件支持 OpenID Connect 协议,用户可以使用该插件让 APISIX 对接众多鉴权服务提供商,作为集中式认证网关部署于企业中。
Hydra
Ory Hydra 是支持 OAuth 2.0 和 OpenID Connect 协议的身份提供商之一,基于 OAuth 2.0 授权框架以及 Open ID Connect Core 1.0 框架实现,兼具开源与云原生特性。它可以与任何登录系统集成,通过 OAuth 2.0 Acces、Refresh 和 ID Tokens,使得第三方能够轻松访问你的 API,实现用户随时随地与任何应用程序的交互。
Ory Hydra 采用 Go 语言编写,为几乎所有语言都提供了 SDK,包括 Dart、.NET、Go、Java、PHP、Python、Ruby、Rust 和 Typescript。它适用于任何登录系统,并且可以轻松自定义登录体验。
简介
OpenID 是一种集中认证模式,它是一个去中心化的身份认证系统。使用 OpenID 的好处是,用户只需要在一个 OpenID 身份提供方的网站上注册和登录,使用一份账户密码信息即可访问不同应用。
通过 APISIX 支持的 openid-connect
插件,可以与支持 OpenID Connect 协议的认证程序集成。比如 Ory Hydra。
Ory Hydra 的最大优势之一是:它实现了 OAuth 和 OpenID Connect 标准,而不是强制你使用“Hydra 用户管理”(登录、注销、配置文件管理、注册)、特定模板引擎或者预定义的前端。
它允许使用你的程序所需的身份验证机制(基于令牌的 2FA、SMS 2FA 等),并且在你的技术堆栈中实现用户管理和登录。当然你也可以使用现有的解决方案,例如 authboss。它为你提供 OAuth 2.0 和 OpenID Connect 的所有优势功能,同时对业务逻辑和技术堆栈的侵入性最小。
OAuth 2.0 适用于多种环境和多用途场景。以下信息可能会帮助你确定 OAuth 2.0 和 Hydra 是否适合某个用例:https://www.ory.sh/docs/hydra
-
允许第三方的合作方访问你的 API。
-
成为像 Google、Facebook 或 Microsoft 这样的身份提供者。
-
使浏览器、移动设备或可穿戴应用程序能够访问你的 API:运行 OAuth2 提供程序可以很好地实现这一点。你不必在设备上存储密码,并且可以随时撤销访问令牌。
-
想限制后端服务可以相互读取的信息类型。例如,只允许评论服务获取用户配置文件更新,但不能读取用户密码。
如何操作
接下来,将使用真实示例为你展示 APISIX 如何与 Hydra 集成。在该示例中将使用 Docker 运行所需的环境,请在执行本操作前安装完成 Docker。