跳到主要内容

客户端认证

当应用程序或设备连接到特定的消息VPN时,产生的客户端连接必须经过认证,然后才能处理任何客户端请求。连接的客户端通过以下客户端认证方案之一在每个消息VPN的基础上进行认证:

  • 基本认证
  • 客户端证书认证
  • Kerberos认证
  • OAuth认证

可以为消息VPN配置并启用多种认证方案,但客户端只能配置为使用一种认证方案。

基本认证

基本认证方案允许连接的客户端通过提供有效的客户端用户名和密码作为凭证来向事件代理进行认证。

基本认证是消息VPN的默认客户端认证方案。它适用于使用任何Solace消息API的客户端应用程序。它也适用于使用OpenMAMA API、REST、AMQP或MQTT的客户端应用程序。

客户端可以使用基本认证进行明文或传输层安全(TLS)/安全套接字层(SSL)加密的客户端连接到事件代理。

此认证方案使用以下认证类型之一:

  • 内部

客户端提供的用户名和密码会与内部事件代理数据库进行验证。

  • RADIUS

客户端的用户名和密码会被发送到外部RADIUS服务器进行认证。

  • LDAP

客户端的用户名和密码会被发送到外部LDAP服务器进行认证。

不对客户端进行认证。Solace强烈建议不要使用无客户端认证。

配置与配置信息

要使用基本认证来认证连接的客户端,需要对以下领域进行配置:

  • 客户端配置
    • 对于使用Solace消息API的客户端,其客户端用户名和密码作为可配置的会话属性提供。
    • 关于使用基本认证与Solace API的信息,请参见:
      • Solace企业API的基本认证。
      • Solace JMS API的基本认证。
    • 对于OpenMAMA客户端,基本认证参数会配置用于建立与事件代理连接的Solace中间件桥。更多信息,请参见每个传输属性的认证方案部分。
    • 对于REST客户端,客户端用户名和密码作为字符串在HTTP标准头中提供。请参见客户端认证。
    • 对于MQTT客户端,连接数据包包含用户名和密码字段。CONNECT数据包包含用户名和密码字段。这些字段映射到Solace客户端用户名和密码。更多信息,请参见Solace MQTT 3.1.1消息协议一致性部分的3.1.3.4用户名。
  • 事件代理配置
    • 必须配置并启用客户端用户名和密码组合以进行内部认证。

关于事件代理上实施基本认证方案所需的系统和消息VPN级别配置的信息,请参见基本认证。

对于REST和MQTT客户端

对于REST和MQTT客户端,还需要一些额外的消息VPN配置,例如启用适当的监听端口。更多信息,请参见REST消息管理与使用MQTT。

客户端证书认证

客户端证书认证(也称为相互TLS或mTLS)方案允许客户端通过提供来自认可证书颁发机构(CA)的有效X509v3客户端证书来向事件代理证明其身份。

对于此认证方案,提供给事件代理的证书的通用名称(CN)会映射到客户端分配的客户端用户名,该用户名可用于后续的客户端授权。或者,您可以配置客户端用户名的不同来源。详细信息,请参见配置客户端用户名来源。

如果您的部署不能保证从证书中提取的用户名在所有配置在代理上的CA颁发的证书中是唯一的,您可能需要配置客户端证书到消息VPN匹配,以限制可以作为消息VPN中凭证使用的证书类型。详细信息,请参见配置客户端证书到消息VPN匹配。

客户端证书认证适用于使用Solace企业消息API的客户端。它也适用于使用OpenMAMA API、REST、AMQP或MQTT的客户端应用程序。

配置与配置信息

要使用客户端证书来认证连接的客户端,需要对以下领域进行配置:

  • 客户端配置
    • 对于使用Solace消息API的客户端,必须使用安全会话来建立TLS/SSL加密的客户端连接到事件代理。要创建安全会话,必须指定客户端证书认证方案、客户端证书和私钥(根据使用的API,这些可能是单独的文件或包含在一个单一的密钥库文件中)。
    • 关于使用客户端证书认证与Solace API的信息,请参见:
      • Solace企业API的客户端证书认证。
      • Solace JMS API的客户端证书认证。
    • 对于OpenMAMA客户端,客户端证书认证参数会配置用于建立与事件代理连接的Solace中间件桥。更多信息,请参见每个传输属性的认证方案部分。
    • REST客户端支持TLS/SSL认证。更多信息,请参见客户端认证。
    • MQTT客户端支持TLS/SSL认证。更多信息,请参见MQTT协议一致性,第5节安全。
  • 事件代理配置
    1. 必须使用PubSub+ 6.1或更高版本。
    2. 必须将CA证书加载到事件代理上。必须为客户端将要连接的任何消息VPN配置并启用客户端证书认证。
    3. 为了启用所需的加密客户端连接,必须配置并启用TLS/SSL服务。

关于事件代理配置的更多信息,请参见客户端证书认证。

对于REST和MQTT客户端

对于REST和MQTT客户端,还需要一些额外的消息VPN配置,例如启用适当的监听端口。更多信息,请参见REST消息管理与使用MQTT。

对于消息VPN桥、消息VPN复制桥和复制配置同步桥

客户端证书认证可以用于消息VPN桥、消息VPN复制桥和复制配置同步桥。更多信息,请参见TLS/SSL服务连接。

对于DMR集群

客户端证书认证也可以用于DMR集群。更多信息,请参见使用客户端证书配置认证。

消息VPN桥、消息VPN复制桥、REST交付点(RDP)和DMR集群的客户端证书不会通过配置同步进行同步。如果事件代理以高可用性(HA)配置或在复制站点中部署,您必须在每个配对事件代理或复制消息VPN上手动配置证书。

如果事件代理的部署方式是只能通过负载均衡器访问HA组的管理访问,并且您无法在活动和非活动代理上完全配置客户端证书,您可以使用PubSub+ Broker Manager中的同步证书向导来在HA组的两个代理上配置证书。

Kerberos认证

Kerberos认证方案允许已获得有效Kerberos票据的客户端连接到事件代理。

Kerberos认证仅适用于使用Solace企业消息API或OpenMAMA API的客户端。

当使用Kerberos认证方案进行客户端认证时,客户端必须首先与Kerberos认证服务器(AS)进行认证,该服务器会授予客户端一个针对指定Kerberos用户主体的票据授予票据(TGT)。TGT通常是作为单点登录程序的一部分获得的,例如登录Windows域。有了有效的TGT,客户端可以尝试使用客户端本地票据缓存中的服务票据或从票据授予服务(TGS)获得的服务票据来登录事件代理。AS和TGS(密钥分发中心(KDC)的组件)托管在外部服务器上,而不是事件代理上。

然后,客户端向事件代理提供这个带时间戳的“Kerberos”票据。如果票据成功验证,客户端与消息VPN的连接将被授予。

对于此认证方案,用于后续客户端授权的客户端分配的客户端用户名是提供给事件代理的票据中的用户主体名称。

配置与配置信息

要使用Kerberos认证连接到事件代理的客户端,需要以下配置:

  • 客户端配置
    • 对于使用Solace消息API的客户端,必须使用适当的Java发行版或为使用的Solace消息API安装适当的Kerberos库,并且客户端会话必须使用Kerberos认证方案。
    • 关于使用Solace API设置Kerberos认证方案的信息,请参见:
      • Solace消息API的Kerberos认证。
      • Solace JMS API的Kerberos认证。
    • 对于OpenMAMA客户端,Kerberos认证参数会配置用于建立与事件代理连接的Solace中间件桥。更多信息,请参见每个传输属性的认证方案部分。
  • 事件代理配置
    1. 必须使用PubSub+ 7.0或更高版本。
    2. 必须在事件代理上加载Kerberos密钥表。
    3. 必须为Kerberos认证客户端将要连接的任何消息VPN配置并启用Kerberos认证。
    4. 可选:可以将Kerberos服务主体名称(SPN)分配给将用于Kerberos认证客户端的消息骨干VRF的IP地址。更多信息,请参见Kerberos认证。

支持的加密类型

下表显示了支持的加密类型。

加密类型
aes256-cts-hmac-sha1-96
aes128-cts-hmac-sha1-96
des3-cbc-sha1
arcfour-hmac-md5

OAuth认证

OAuth是一个开放标准,用于访问委托,通常用作用户授予网站或应用程序访问其在其他网站上的信息的方式,而无需提供密码。它指定了一个过程,允许资源所有者授权第三方访问其服务器资源,而无需共享其凭据。更具体地说,OAuth认证方案允许由授权服务器颁发给第三方客户端的访问令牌用于访问PubSub+事件代理上的消息VPN。

对于此认证方案,用于后续客户端授权的客户端分配的客户端用户名是从提供给事件代理的令牌中提取的。

配置与配置信息

要使用OAuth认证连接到事件代理的客户端,需要以下配置:

  • 客户端配置
    • 对于SMF客户端,每个API都有特定的方法或函数用于将访问或ID令牌传递给事件代理。请参见定义客户端认证信息。
    • 对于MQTT客户端,密码必须符合以下形式之一:
      • 如果OAuth配置文件配置为oauth-role设置为resource-serverOAUTH~<profile>~<access_token>
      • 如果OAuth配置文件配置为oauth-role设置为clientOPENID~<profile>~<id_token>~<access_token> 其中:
        • <profile>必须与事件代理上配置的OAuth配置文件匹配。如果没有提供配置文件,则使用ID令牌(对于OpenID)或访问令牌(对于OAuth)中的iss声明(如果存在)来识别要使用的OAuth配置文件。如果没有找到与发行者匹配的配置文件,则使用默认配置文件。
        • <access_token>是由授权服务器授予客户端的访问令牌。对于OpenID,访问令牌是可选的,如果不需要可以省略。
        • <id_token>是由授权服务器授予客户端的OpenID Connect ID令牌,表示为JWT。 此外,密码的最大长度为8192字节,每个令牌的最大长度为4096字节。
    • 对于REST生产者,请求必须在HTTP授权头中包含一个或多个OAuth令牌,作为承载令牌,形式如下:
      • 如果OAuth配置文件配置为oauth-role设置为resource-serverBearer <access_token>
      • 如果OAuth配置文件配置为oauth-role设置为clientBearer <id_token>/<access_token> 其中:
        • <access_token>是由授权服务器授予客户端的访问令牌。对于OpenID,访问令牌是可选的,如果不需要可以省略。
        • <id_token>是由授权服务器授予客户端的OpenID Connect ID令牌,表示为JWT。 支持的最大头长度为8KiB;ID令牌或访问令牌的最大大小为4KiB。 授权头中的承载令牌必须在每个请求中提供。 一般来说,ID令牌(对于OpenID Connect)或访问令牌(对于OAuth 2.0)中的iss声明(如果存在)用于由事件代理识别要使用的OAuth配置文件。 也可以通过在承载令牌的开头添加~base64(<issuer>)~来选择特定的OAuth配置文件。不应使用Base64填充。例如,要使用名为solace的OAuth配置文件,其发行者为https://www.solace.com,并带有访问令牌: Bearer ~aHR0cHM6Ly93d3cuc29sYWNlLmNvbQ~<access_token> 如果无法从令牌中的iss声明识别配置文件,并且授权头中没有提供发行者前缀,则使用默认配置文件。 如果部署中还使用了REST消费者,并且希望它们使用OAuth认证与REST主机进行认证,必须配置适当的认证方案。请参见配置REST消费者认证方案。
    • 对于AMQP客户端,PubSub+事件代理支持XOAUTH2 SASL认证机制。在这种情况下,AMQP URL必须是amqps://<host>:<port>?amqp.saslMechanisms=XOAUTH2。 XOAUTH2认证机制允许AMQP客户端在连接的密码字段中指定一个OAuth 2.0承载令牌,作为Base64编码的令牌,无需任何前缀,换句话说: user=<username> password=<access token> 其中:
      • <username>是一个占位符。客户端用户名是从访问令牌中派生的。
      • <access token>是在带有承载令牌的HTTP授权头中使用的相同值,无需Bearer前缀。 承载令牌必须在每个请求中提供。在许多情况下,令牌将是一个JSON Web令牌(JWT),其发行者声明与OAuth配置文件匹配。事件代理将验证令牌并自动选择正确的配置文件。如果令牌不是JWT或者发行者不匹配,则使用默认OAuth配置文件。如果存在多个配置文件,其发行者无法从令牌中自动确定,则也可以在令牌中显式指定OAuth配置文件。
  • 事件代理配置
    1. 必须使用PubSub+ 9.12.1或更高版本。
    2. 必须为OAuth认证客户端将要连接的任何消息VPN配置并启用OAuth认证。请参见启用OAuth客户端认证。
    3. 必须在消息代理上配置并启用OAuth配置文件。请参见管理消息VPN OAuth配置文件。