0

我正在将前端写入从 Solace Message Broker 接收实时数据的应用程序。目前,前端和消息代理都在受保护的开发环境中运行。

在某些时候,我们显然想让应用程序公开可用。我们在应用程序中进行了有效的身份验证,但我们希望消息代理在建立连接之前以及稍后在订阅之前验证从前端发送的令牌。

身份验证使用angular-auth-oidc-client. 但是,关于配置 OAuth 授权的安慰文档指出

Solace PubSub+ 事件代理仅支持 MQTT 客户端的 OAuth 授权。

该应用程序使用solcientjsnpm 包与代理进行通信。我不得不承认我对那里的所有消息协议都不是很坚定,但我认为该包不使用 MQTT 连接。

这使得 Kerberos 不在可用的客户端身份验证类型列表中。然而,查看kerberos 授权文档,它还说

Kerberos 身份验证不适用于 Solace Web 消息传递 API

所以现在我想知道如何验证来自客户端的令牌。以下是我的“理想”流程:

  1. 用户进行身份验证,应用收到不记名令牌
  2. 应用程序调用session.connect()与代理建立连接,发送不记名令牌
  3. preConnect钩子中(如果它存在的话)我可以向发出令牌的 STS 发送请求并等待响应
  4. 如果 STS 确认令牌有效,则消息代理确认连接并允许订阅。否则它拒绝连接。

有没有办法做到这一点?我可能会严重误解某事吗?我在 Solace 方面没有太多经验,只在前端工作,而不是管理代理的部分。

感谢任何提示。

4

1 回答 1

1

目前,只有 MQTT 客户端可以使用 OAuth 进行身份验证。使用 solclientjs,身份验证选项是使用内部数据库、LDAP、RADIUS 或客户端证书身份验证。

在所有 SMF 客户端都可以使用 OAuth 之前,您可以使用第三方 MQTT 客户端库来连接到 Solace 并使用 OAuth 令牌进行身份验证。

于 2021-08-02T19:03:25.873 回答