我可以使用 mTLS 代替 Open ID Connect 进行身份验证吗?

Can I use mTLS for authentication instead of Open ID Connect?

我想使用 mTLS 来保护微服务,而不是 Open ID Connect。
据我了解 mTLS 的工作原理,它通过 SSL 握手加密两个服务之间的通信。

但是,我可以使用 mTLS 作为身份验证机制,而不是通过 Open ID Connect 来保护服务吗?

您可以使用 mTLS 作为微服务之间的基础设施安全解决方案,但它会有局限性,并且无法管理用户级别的安全性。所以这取决于你的微服务的客户是谁,以及你需要如何授权 API 请求。

用户级安全

这是使用 OAuth 和 OIDC 的地方,通常有一个网络或移动应用程序作为客户端:

  • 客户端运行代码流并获取令牌
  • 客户端向微服务发送访问令牌
  • 微服务接收标识用户的 JWT 访问令牌
  • 微服务可以在需要时将其转发给其他微服务

由于访问令牌中的用户身份,API 可以执行用户级别的授权,例如。确保用户只能查看自己的购买历史。

结合 mTLS 和 OAUTH

将这两个构建块结合起来很常见,安全标准/法规有时也有此要求。有关示例场景,请参阅此 financial-grade security overview