Authentication 跨平台登录

Authentication 跨平台登录,authentication,coldfusion,cross-platform,node.js,Authentication,Coldfusion,Cross Platform,Node.js,我正在开发一个应用程序,其中所有用户身份验证都发生在ColdFusion应用程序中(基于CFWheels),但与文件服务器的交互通过Node.js应用程序进行。我需要确保登录CF应用程序的用户可以访问节点服务器中的文件。我正在考虑使用CFToken或节点服务器可以读取并传递给ColdFusion的东西设置cookie,询问“嘿,这个token可以访问这个文件吗?” 我唯一的问题是我不确定CFToken最终是否会被重复使用,如果是,我应该用什么来代替 如果其他人有其他方法来做这类事情,身份验证需要

我正在开发一个应用程序,其中所有用户身份验证都发生在ColdFusion应用程序中(基于CFWheels),但与文件服务器的交互通过Node.js应用程序进行。我需要确保登录CF应用程序的用户可以访问节点服务器中的文件。我正在考虑使用CFToken或节点服务器可以读取并传递给ColdFusion的东西设置cookie,询问“嘿,这个token可以访问这个文件吗?”

我唯一的问题是我不确定CFToken最终是否会被重复使用,如果是,我应该用什么来代替


如果其他人有其他方法来做这类事情,身份验证需要跨多个引擎重复使用,我很想听听你的策略。

叶,你想了解的是SSO(单点登录)

OpenID是一种流行的可与多个平台(包括CF)协同工作的OpenID


如果你喜欢冒险。。。只要稍加考虑,就可以很容易地设计出自己的登录共享机制——通常是通过cookie或标头共享一些令牌,也可以通过RESTfull(或任何)形式的Web服务调用来实现。

这听起来是一个很好的方法

但是,我会用CFCOOKIE来做一个你自己设计的曲奇

当然,这两台服务器必须共享一个域名才能读取相同的cookie。您还必须将cookie设置为域cookie

构建这一架构的一个干净方法是创建一个专门用于安全的完整CFC

它将具有生成和验证登录令牌的方法

您的CF应用程序将使用它来生成令牌,您可以让node.js应用程序使用

http://server.com/path/security.cfc?method=validateToken&token=whatever
假设他们可以访问相同的数据存储,则更有效的方法是使用相同的算法生成/解码(如果需要)两个系统中的令牌,并让node.js应用程序直接访问数据存储


当我需要这样做时,我们将“会话”令牌存储在mongodb中,并直接从每个应用程序(CF、Java和Rails)访问数据存储。CF系统负责初始身份验证。其他两个系统没有进行身份验证,只是验证了令牌,如果未找到/无效/etc,则以适当的方式进行响应。

对不起,从CF角度看,我不确定(暂时没有使用CF)但是我对SSO非常了解,并且已经使用所描述的方法集成了许多跨平台的站点。这听起来很合理。我们的主要数据库是MySQL,但我可以使用MongoDB来存储当前登录,只存储会话令牌和用户id。这样我就具备了MySQL的健壮性和MongoDB的灵活性。我遵循相同的基本概念,但我将令牌作为X-Auth-token头传递。客户端负责发送带有所有API或Ajax请求的令牌。在MongoDB中,令牌在N分钟后过期。每次验证都会重置过期时间。