我目前正在研究Jhipster原型应用程序。该应用程序是一个简单的网关,具有访问数据的微服务。
现在,我想使用我公司的现有数据库对用户进行身份验证,但Jhispter似乎不支持多个数据源(我不希望我的整个网关切换到另一个数据库)
我的第一个想法是使用微服务来验证用户身份。这个微服务将在另一个数据库上运行,但这会产生另一个问题:从网关调用此服务,我需要一个JWT令牌......这看起来像我需要通过身份验证来验证用户。
如前所述,另一个解决方案是在我的网关上有两个数据源:一个用于用户身份验证(指向现有数据库),另一个用于Jhipster相关数据(审计等等)
你知道这种情况下最好的做法是什么吗? 你能指出我这个选择的正确方向吗?
答案 0 :(得分:3)
第一个解决方案:您可以轻松取消对Microsoft服务上SecurityConfioguration中的端点进行身份验证,这样您就不需要令牌,那么您必须在网关上为/ api / authenticate创建一个Zuul路由。
第二个解决方案是一个众所周知的问题,即在Spring Boot中使用多个数据源,这些数据源有很多很好的文档答案。
如果您可以将现有的第三方身份服务器配置为现有的用户数据库,则可以使用现有的第三方身份服务器(如uaa或KeyCloak)。
因此,对于原型,我会选择第二种解决方案。
答案 1 :(得分:2)
我建议您切换到JHipster UAA来解决此问题,因为您正在寻找服务到服务授权。此外,网关应该没有自己的权利。您的微服务的每个端点都应位于自己的微服务中。
为了总结UAA的用例,您将获得一项新服务,该服务可以对用户进行身份验证,以交换JWT的用户名和密码,如JWT身份验证,还可以交换内部客户端凭据,而无需用户。由于这是Spring-cloud-security的一部分,审计工作也是如此。请记住,"审核员"在这种情况下,将是一项服务(或更确切地说,是服务使用的oauth2客户端),而不是用户。