在aspx应用程序中预先validation用户

我们有2个应用程序,一个在Nodejs中,另一个在aspx中。
login页面在Nodejs中。 我需要的是创build一个会话,并在login页面在aspx应用程序中validation我的用户,以便以后在aspx应用程序中导航。

作为一个网页开发noobot,我不知道从哪里开始或search什么。

提前致谢

所以有几种方法可以做到这一点,这取决于您目前的应用程序意图和做你正在做的事情的原因。 我会尝试在这里列出一些赞成和反对的。 我会再次说,没有什么是我认为容易为一个新的Web开发人员; 在你的团队中是否有其他人拥有一种或两种技术的经验?

1)可能是最简单的select,如果你能做到的话,那就是让Node.js进程成为网关。 ASP.NET应用程序根本不需要对用户进行身份validation,Node.js应用程序充当ASP.NET应用程序的完整反向代理。 如果你可以支持它,这个效果很好,你可以通过让Node.js应用程序login到ASP.Net应用程序(通过你想要的任何方法;基本身份validation,表单login等等)来保护它。 如果您需要ASP.Net应用程序来了解当前上下文中的用户是什么,那么您可以将所需的任何信息推送到请求头文件中(例如,如果他们共享相同的数据库,则将其放入Id节点应用程序authentication的用户)。 如果您希望ASP.NET应用程序可以通过节点应用程序自行访问,那么节点应用程序将成为众多用户之一,而且asp.net应用程序需要HTTP模块来规范用户信息是否来自会话或从HTTP头。 最简单的方法是让Http Module检查当前用户是否具有特定angular色(例如NodeApp)并login,然后将HttpContext的用户信息复制到新的Sessionvariables中应用程序的其余部分使用),或者在数据库中查找代理用户,并执行相同的操作。 基本上,应用程序的其余部分将永远不会相信HttpContext的当前用户在这一点上作出决定。

Pro的:相当简单的架构,并不取决于每个应用程序的域名。 这两个应用程序都需要访问用户数据库才能正常工作。

Con's:如果由于某种原因,应用程序不能访问相同的用户数据库,那么它就不是那么好。 做代理有一些开销(不多,但仍然有)。 无论你是在谈论“真实”用户还是“节点”用户,你都必须保持直线,这有一些大脑的弯曲。

2)OAuth(或者OpenID)是最符合标准的选项。 在这种情况下,您可以将Node.js应用程序设置为OAuth提供程序,并使ASP.NET应用程序成为OAuth使用者。 然后,用户可以使用他们的节点用户名和密码进行login,并让Node应用程序通过现有的身份validation模块将身份validation令牌传递给ASP.NET应用程序。

Pro's:在ASP.NET上编写的代码比上面的例子要less,符合标准。 如果您希望以后可以切换(或添加)OAuth提供程序

Con's:对用户更为间接(在应用程序之间redirect)。 这可能会被最小化,但您需要非常熟悉OAuth协议。

3)会话共享(如果别人正在对你进行会话劫持,则视为会话…)。 如果你在同一个域中,那么Node.js应用程序可以简单地写出ASP.NET会话和auth cookies像ASP.NET一样。 我只是简单地说,但是有很多关于ASP.NET机器的细节,你需要理解它是正确的。 http://support.microsoft.com/kb/910443 。 主要的一点是,你需要将你的ASP.NET会话存储放在一个数据库中,然后让Node.jspipe理这些元素的添加和删除,这样当ASP.NET查看session&auth cookie时在一个给定的请求,它可以find他们希望find他们的地方,然后ASP.NET进程会在那里find他们,并采取相应的行动。

Pro's:使用已经在某种程度上已经存在的ASP.NEt机器Con's:可能非常脆弱,所有事情都考虑在内。 您的node.js应用程序需要访问ASP.NEt应用程序将用于解密会话内容的machineKey。 您需要确保使用相同的encryptionalgorithm,并且这两个应用程序都将耦合到相同的会话存储区。

4)在ASP.NET中滚动您自己的成员资格提供程序,向Node应用程序发出Forms Auth票据。 这有点类似于1和3的混合。在这个选项中,Node应用程序在对用户进行身份validation之后,会向ASP.Net服务器上的Login端点发送另一个请求,并为其提供凭据来标识自己(例如,以某种方式encryption的共享密钥)。 它也可以提供任何你想要的用户细节。 然后,您可以在您的ASP.NET代码中手动调用Forms Authentication api来为最终用户创build一张票( http://msdn.microsoft.com/zh-cn/library/system.web.security.formsauthenticationticket.aspx )即没有自己计算; 会议商店可以在任何地方。 对Node.js应用程序的响应将在validationcookie中包含票据数据,因此您的Node.js应用程序可以将该数据传回给您的用户,以便下次他们向ASP.nEt应用程序发出请求时,他们将有一个由asp.net生成的有效身份validationcookie。

Pro的:从ASP.NET的angular度来看比#3更灵活,用户更less。 Con:仍然需要两个应用程序在同一个域上,但仍然需要两者之间的大量集成。 如果你搞砸你的会员提供商,你可能会意外地在你的安全漏洞。

总的来说,我认为OAuth解决scheme是最好的解决scheme,但这些都是我所能想到的方法。