Jhipster:使用现有数据库进行身份验证的正确架构

时间:2016-09-28 08:35:55

标签: authentication jwt jhipster microservices

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

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

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

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

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

2 个答案:

答案 0 :(得分:3)

第一个解决方案:您可以轻松取消对Microsoft服务上SecurityConfioguration中的端点进行身份验证,这样您就不需要令牌,那么您必须在网关上为/ api / authenticate创建一个Zuul路由。

第二个解决方案是一个众所周知的问题,即在Spring Boot中使用多个数据源,这些数据源有很多很好的文档答案。

如果您可以将现有的第三方身份服务器配置为现有的用户数据库,则可以使用现有的第三方身份服务器(如uaa或KeyCloak)。

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

答案 1 :(得分:2)

我建议您切换到JHipster UAA来解决此问题,因为您正在寻找服务到服务授权。此外,网关应该没有自己的权利。您的微服务的每个端点都应位于自己的微服务中。

为了总结UAA的用例,您将获得一项新服务,该服务可以对用户进行身份验证,以交换JWT的用户名和密码,如JWT身份验证,还可以交换内部客户端凭据,而无需用户。由于这是Spring-cloud-security的一部分,审计工作也是如此。请记住,"审核员"在这种情况下,将是一项服务(或更确切地说,是服务使用的oauth2客户端),而不是用户。

相关问题