Authentication Jhipster:使用现有数据库进行身份验证的适当体系结构

Authentication Jhipster:使用现有数据库进行身份验证的适当体系结构,authentication,jwt,jhipster,microservices,Authentication,Jwt,Jhipster,Microservices,我目前正在开发Jhipster原型应用程序。该应用程序是一个简单的网关,具有访问数据的微服务 现在,我想使用我公司现有的数据库对用户进行身份验证,但Jhister似乎不支持多个数据源(而且我不希望我的整个网关切换到另一个数据库) 我的第一个想法是使用微服务对用户进行身份验证。该微服务将在另一个数据库上运行,但这会产生另一个问题:要从网关调用该服务,我需要一个JWT令牌。。。这看起来好像我需要通过身份验证才能验证用户 如前所述,另一个解决方案是在我的网关上有两个数据源:一个用于用户身份验证(指向现

我目前正在开发Jhipster原型应用程序。该应用程序是一个简单的网关,具有访问数据的微服务

现在,我想使用我公司现有的数据库对用户进行身份验证,但Jhister似乎不支持多个数据源(而且我不希望我的整个网关切换到另一个数据库)

我的第一个想法是使用微服务对用户进行身份验证。该微服务将在另一个数据库上运行,但这会产生另一个问题:要从网关调用该服务,我需要一个JWT令牌。。。这看起来好像我需要通过身份验证才能验证用户

如前所述,另一个解决方案是在我的网关上有两个数据源:一个用于用户身份验证(指向现有数据库),另一个用于Jhipster相关数据(审计等)

你知道在这种情况下最好的做法是什么吗? 您能为我指出这个选择的正确方向吗?

我建议切换到解决这个问题,因为您正在寻找服务对服务的授权。此外,网关不应提供自己的实体服务。微服务的每个端点都应该位于自己的微服务中


总结一下UAA的使用案例,您可以得到一个新的服务,它可以验证用户,为JWT交换用户名和密码,就像JWT验证一样,但也可以在没有用户的情况下交换内部客户端凭据。由于这是spring云安全的一部分,审计也可以工作。请记住,本例中的“审计员”将是一个服务(或者更准确地说,是该服务使用的oauth2客户机),而不是用户。

第一种解决方案:您可以在微服务的SecurityConfiguration中轻松取消对authenticate端点的保护,这样您就不需要令牌,然后您必须在网关上为/api/authenticate创建Zuul路由

第二个解决方案是关于在Spring Boot中使用多个数据源的一个众所周知的问题,它有许多经过详细记录的答案

如果您可以将现有的第三方身份服务器(如uaa或KeyClope)配置到现有的用户数据库中,则可以使用另一种解决方案


所以对于原型,我会选择第二种解决方案。

David Steinman在第三种方案上比我快:),但我仍然不确定您是否可以配置uaa以使用现有的用户群,所以我会选择第二种方案。好的,我会尝试这些解决方案(首先是无保护服务,然后是两个数据源)JHipster UAA似乎很复杂,我认为它仍处于测试阶段。。。