我需要一个具有基于令牌的身份验证的REST API:我们将使用负载均衡器复制应用程序服务器,因为令牌是在用户通过身份验证时由一台服务器生成的,并且来自同一客户端的不同请求可以由不同的服务器处理,是否有通用的技术或技术在不同的服务器之间共享这些令牌?
关于技术,我们将使用Java堆栈,更具体地说是Grails。
关于应用程序服务器,我们可能有多个数据库。此评论很重要,因为与同事讨论,有人建议使用来自所有应用程序服务器的相同数据库管理令牌共享。我正在寻找一个不需要集中式数据库的解决方案,让我们可以在数据库方面进行扩展。
答案 0 :(得分:2)
使用基于令牌的身份验证时,会有一个服务器对用户进行身份验证并发出安全令牌。可以通过多种方式对用户进行身份验证(针对数据库验证用户名/密码,验证智能卡上的证书等)。
一旦令牌由身份验证服务器发出并签名,则无需数据库通信即可验证令牌。任何接受令牌的服务都只会验证令牌的数字签名。
客户端(服务的调用者)负责将令牌与请求一起发送。因此,无论负载均衡器后面的哪个服务器处理传入请求,它只需要与签名密钥关联的公钥来验证请求是否有效。
选择哪种安全协议取决于您的要求。 OAuth经常用于互联网应用程序。 WS-Federation和SAML-P在企业环境中经常使用。
答案 1 :(得分:2)