我正在开发一个应用程序,其中所有用户身份验证都发生在ColdFusion应用程序中(基于CFWheels),但是与文件服务器的交互是通过Node.js应用程序进行的。我需要确保允许登录CF应用程序的用户访问节点服务器中的文件。我正在考虑使用CFToken设置一个cookie,或者节点服务器可以读取的内容,并传递给ColdFusion,询问“嘿这个令牌可以访问此文件”
我唯一的问题是我不确定CFTokens最终会被重复使用,如果它们是我应该使用的呢?
如果其他人有其他办法做这种事情,认证需要在多个引擎中重复使用,我很乐意听取您的策略。
答案 0 :(得分:4)
这听起来像是一种很好的方式。
但是,我只想用CFCOOKIE来设置你自己设计的cookie。
当然,这两个服务器必须共享域名才能读取相同的cookie。您还必须将cookie设置为域cookie。
设计这个的一个简洁方法是创建一个专用于安全性的整个CFC。
它将有生成和验证登录令牌的方法。
您的CF应用程序将使用它来生成令牌,您可以让您的node.js应用程序使用
通过Web服务调用它http://server.com/path/security.cfc?method=validateToken&token=whatever
一种更有效的方法,假设他们可以访问相同的数据存储区,将使用相同的算法生成/解码(如果需要)两个系统中的令牌,并直接让node.js应用程序访问数据存储区。
当我需要这样做时,我们在mongodb中存储了“session”标记,并直接从每个应用程序(CF,Java和Rails)访问数据存储区。 CF系统负责初始身份验证。其他两个系统没有进行身份验证,只是验证了令牌,如果找不到/无效/等,则以适当的方式响应。
答案 1 :(得分:0)
叶,您想要阅读的内容是SSO(单点登录)。
OpenID是一种流行的,适用于包括CF在内的多种平台。
如果您有冒险精神......稍微考虑一下,设置自己的共享登录机制相当容易 - 通常是通过cookie或标题共享一些令牌,或者也可以通过RESTfull(或任何)也是网络服务的形式。