使用Spring Security设置OpenID Connect(OIDC)客户端 - foojay


在本文中,您将学习如何使用双向TLS作为身份验证客户端的方法,使用Spring Security设置OpenID Connect(OIDC)客户端。Spring Security不立即提供相互TLS的支持,因此使用此功能需要完成一些步骤。
要完成本教程,您需要满足一些先决条件。你会需要:

  • 支持OpenID Connect的授权服务器。服务器还需要支持双向TLS连接,并且应公开OIDC元数据终结点。
  • 在授权服务器上注册的客户端,该客户端已启用相互TLS作为身份验证选项。您将需要向服务器提供客户的证书。如果您没有证书,请参阅以下部分以了解如何在本地生成证书。

通常需要安全地对OAuth和OpenID Connect(OIDC)客户端进行身份验证:在授权服务器(即OpenID Connect Provider,OP)中注册客户端时,通常会获得客户端ID和密码。然后,只要您的客户端将请求发送到授权服务器,它们就用作凭据。通常,这种类型的凭据将为部署提供足够的安全级别;但是,在其他时候,这仅仅是不够的。使用客户端ID和机密进行身份验证意味着,如果有人设法窃取或猜测您的应用程序的凭据,则他们将能够使用它们来模拟它。攻击者甚至不必自己拦截凭据。他们也许能够捕获发送到授权服务器的请求并重播它。授权服务器不知道谁在发送请求。它只能检查凭据是否有效。(这就是为什么在使用这种类型的凭据时使用TLS和不可猜测的客户端机密也很重要的原因。
通过在客户端和授权服务器之间的通信中实现双向TLS,可以实现更高的安全级别。在这种设置中,您的客户端将确保它正在与正确的服务器通信(通过与不使用双向TLS时相同的方式来验证其证书),并且授权服务器将确定它正在接收来自服务器的请求。合法客户(通过验证客户的证书)。相互TLS可以在OAuth和OIDC中用作对客户端进行身份验证的一种方式,而不是发送机密。而且,当使用双向TLS时,服务器可以发布绑定到调用方证书的令牌,从而创建拥有权证明(PoP)令牌(而不是承载令牌)。要使用此类令牌,客户必须向授权服务器及其证书(包含其公钥)出示其拥有与认证时使用的相同私钥的证明。这意味着,即使有人设法拦截了这样的访问令牌,如果没有访问客户端密钥,他们将无法使用它。

详细教程点击标题见原文