C# 跨站点登录和重定向

C# 跨站点登录和重定向,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我们制作了一个asp.NETMVC应用程序,它有一个附属程序 我们的附属公司希望能够让他们的客户登录到我们的应用程序,可能需要使用背景代码(而不是表单) 登录后,用户应该被重定向到我们自己的URL之一 首先,我们需要一些帮助和如何做到这一点的例子 第二,如果确实可能的话,允许这实际上是一个跨站点脚本,对吗?那么它会让我们受到攻击吗 任何帮助都将不胜感激。一个简单的链接不能安全地执行此操作,重定向的唯一方法是使用GET,并且您永远不希望以这种方式传递可重用的登录信息 这是你的一个选择。。。提供一个

我们制作了一个asp.NETMVC应用程序,它有一个附属程序

我们的附属公司希望能够让他们的客户登录到我们的应用程序,可能需要使用背景代码(而不是表单)

登录后,用户应该被重定向到我们自己的URL之一

首先,我们需要一些帮助和如何做到这一点的例子

第二,如果确实可能的话,允许这实际上是一个跨站点脚本,对吗?那么它会让我们受到攻击吗


任何帮助都将不胜感激。

一个简单的链接不能安全地执行此操作,重定向的唯一方法是使用GET,并且您永远不希望以这种方式传递可重用的登录信息

这是你的一个选择。。。提供一个功能类似于web服务的面向外部的控制器。至少包括以下两个操作。一个是从您的站点请求一个新帐户,传递任何必要的信息,另一个是作为“远程登录”。这两个操作都应该只接受帖子并需要HTTPS。在内部,他们不应该通过查询字符串接受任何数据传输,而是应该查看POST对象(这是加密的,因此更安全)

“远程登录”操作应采用您的分支机构传递的用户名和密码(在POST对象中加密),并验证其有效性。然后它应该生成一个新的随机值,使用GUID是一个好方法,并返回它。然后,分支机构将它们重定向到您的站点,并在查询字符串中传递GUID。GUID用作他们的一次性登录令牌(他们下次登录时将需要新的GUID)

如果他们不需要一个特定的帐户在你的网站上做事情,那么你可以省去“创建帐户”,只需给你的分支机构一个代码,他们发送远程登录功能,以确认是他们要求登录

对于实际的远程登录,您的分支机构必须做的是对您的站点进行AJAX调用,请求一次性登录的GUID(您可以在一块代码中为他们提供这段代码,并说“将它放在您的页面上,它就会起作用”)。当它收到所述GUID时,它将重定向到您的站点


这并不是最好的选择……当双方共同努力以确保安全和用户不可见时,类似单点登录的行为是最好的,但它是可行的,并且相当安全。

重定向是否需要对同一帐户重复使用,或者这是一次性的转移,将来它们将直接转到您的站点?另外,你对附属网站的工作方式有多大影响?你能让他们进入你创建的Web服务吗?用户需要不时地从我们没有任何影响力的附属网站登录到我们的网站。我们不能让他们窃听任何东西。只需“点击登录”或只是一些链接到我们的应用程序需要这样做。之后,他们在我们的网站上。