【发布时间】:2018-04-29 19:48:00
【问题描述】:
我们在 C8Y 服务器上实现了一个应用程序:DM(设备管理)应用程序。 最终用户连接到租户相关的 C8Y 服务器并选择 DM 应用程序。 DM 应用程序由两部分组成:
- 前端(html、javascript)
- 后端(Java-spring boot,它公开了一个 rest api)。后端与我们的定制 IoT 产品进行通信。
我们的 DM 应用程序的后端现在位于 MZ,但可以托管在 DMZ 中。
问题描述:
DM 应用的前端(javascript)不能与 DM 应用的后端部分通信作为客户端的安全要求:
- 不允许我们在 DMZ 中设置 http 代理。
- 不允许我们在 javascript 中硬编码其余 api 用户(和 pwd)
解决方案(我的建议):
当最终用户登录到 C8Y 服务器时,我们认为 C8Y 服务器会验证存储在 C8Y 数据库中的用户。 我们建议使用相同的用户凭据(身份验证) - 已用于登录 C8Y 门户 - 来访问此 api。 然后,DM应用的后端需要验证这个rest api用户,这样DM应用也可以通过单次登录来验证整个C8Y应用的用户。
要实施此解决方案:
- 我们需要:
- 在前端获取用户名/密码。
- 或者我们需要前端的经过身份验证的令牌(如果有)。
- 我们需要知道 C8Y 用于从后端验证用户的 API。
- 需要支持将其注册为由 C8Y 负责身份验证的微服务。
问题:
- 您如何看待解决问题的建议?
- 而且账户已经注册了一个微服务,如何添加另一个微服务。
- 如果不支持多个微服务,请建议我们解决此问题,让这个 DM 应用程序作为第二个微服务运行,因为这对我们的客户来说非常关键和阻碍问题。
【问题讨论】:
标签: cumulocity