Jhipster:使用现有数据库进行身份验证的正确架构
Jhipster : Proper architecture to authenticate using an existing database
我目前正在开发 Jhipster 原型应用程序。该应用程序是一个简单的网关,带有用于访问数据的微服务。
现在,我想使用我公司现有的数据库来验证用户身份,但 Jhispter 似乎不支持多个数据源(而且我不希望我的整个网关切换到另一个数据库)
我的第一个想法是使用微服务来验证用户。这个微服务会 运行 在另一个数据库上,但这会产生另一个问题:要从网关调用这个服务,我需要一个 JWT 令牌......这开始看起来我需要通过身份验证才能对用户进行身份验证.
如前所述,另一种解决方案是在我的网关上有两个数据源:一个用于用户身份验证(指向现有数据库),另一个用于 Jhipster 相关数据(审计等)。
您知道在这种情况下最好的做法是什么吗?
你能为我指明这个选择的正确方向吗?
我建议切换到 JHipster UAA 来解决这个问题,因为您正在寻找 service-to-service 授权。此外,不应有网关服务的自己的实体。微服务的每个端点都应该在自己的微服务中。
为您总结 UAA 的用例,您将获得一项新服务,它可以对用户进行身份验证,为 JWT 交换用户名和密码,就像 JWT 身份验证一样,还有内部客户端凭据,无需用户。由于这是 spring-cloud-security 的一部分,因此审计也有效。请记住,本例中的 "auditor" 将是一项服务(或更准确地说,是服务使用的 oauth2 客户端),而不是用户。
第一个解决方案:您可以轻松取消保护微服务上 SecurityConfioguration 中的身份验证端点,这样您就不需要令牌,然后您必须在 /api/authenticate 的网关上创建一个 Zuul 路由。
第二种解决方案是关于在 Spring Boot 中使用多个数据源的众所周知的问题,它有许多有据可查的答案。
可能还有另一种解决方案,包括使用现有的第三方身份服务器,例如 uaa 或 KeyCloak,如果您可以将它们配置到现有的用户数据库。
所以对于原型,我会选择第二种解决方案。
我目前正在开发 Jhipster 原型应用程序。该应用程序是一个简单的网关,带有用于访问数据的微服务。
现在,我想使用我公司现有的数据库来验证用户身份,但 Jhispter 似乎不支持多个数据源(而且我不希望我的整个网关切换到另一个数据库)
我的第一个想法是使用微服务来验证用户。这个微服务会 运行 在另一个数据库上,但这会产生另一个问题:要从网关调用这个服务,我需要一个 JWT 令牌......这开始看起来我需要通过身份验证才能对用户进行身份验证.
如前所述,另一种解决方案是在我的网关上有两个数据源:一个用于用户身份验证(指向现有数据库),另一个用于 Jhipster 相关数据(审计等)。
您知道在这种情况下最好的做法是什么吗? 你能为我指明这个选择的正确方向吗?
我建议切换到 JHipster UAA 来解决这个问题,因为您正在寻找 service-to-service 授权。此外,不应有网关服务的自己的实体。微服务的每个端点都应该在自己的微服务中。
为您总结 UAA 的用例,您将获得一项新服务,它可以对用户进行身份验证,为 JWT 交换用户名和密码,就像 JWT 身份验证一样,还有内部客户端凭据,无需用户。由于这是 spring-cloud-security 的一部分,因此审计也有效。请记住,本例中的 "auditor" 将是一项服务(或更准确地说,是服务使用的 oauth2 客户端),而不是用户。
第一个解决方案:您可以轻松取消保护微服务上 SecurityConfioguration 中的身份验证端点,这样您就不需要令牌,然后您必须在 /api/authenticate 的网关上创建一个 Zuul 路由。
第二种解决方案是关于在 Spring Boot 中使用多个数据源的众所周知的问题,它有许多有据可查的答案。
可能还有另一种解决方案,包括使用现有的第三方身份服务器,例如 uaa 或 KeyCloak,如果您可以将它们配置到现有的用户数据库。
所以对于原型,我会选择第二种解决方案。