情况是,我想管理验证在不同环境中部署的几个 REST API 中。
我一直在阅读保险库,显然,它有这个功能。
使用 Vault,我的应用程序是否只需要向 Vault 发出请求,然后仅使用别名就可以对外部 API(正确配置)进行身份验证?无需在我的应用程序中存储外部 API 的用户/密码/令牌?
我想知道是否有人以这种方式使用过 Vault,以及其优缺点是什么
或者如果有人推荐其他方法来实现这一目标
更新:
我找到了一个我正在寻找的问题 https://stackoverflow.com/questions/57703943/how-to-allow-single-sign-on-for-al-clients-in-keycloak
答案1
Vault 可以验证其服务的客户端身份。它还可以将身份验证委托给其服务,例如 GitHub 或某些 OpenID 连接提供商。
但无论你选择什么方法/协议,模式总是客户端向 Vault 进行身份验证,而不是您的 REST API。
Keycloak 更符合您的要求,因为它是一个通用的身份提供者。
你正在寻找的模式是这样的:
- API 客户端向身份提供商进行身份验证
- 他们会得到“一些东西”作为回报,通常是签名的 JSON Web Token (JWT)
- 他们在 REST API 调用的授权 http 标头中发送 JWT
- 无论哪个 REST API 收到请求,都会使用身份提供者的公钥验证 JWT 签名