我们制作了一个asp.net mvc应用程序,该应用程序有一个附属程序。
我们的附属公司希望有可能让他们的客户,可能使用后台代码(非表格)登录我们的应用程序。
登录后,用户应该被重定向到我们自己的一个URL。
首先,我们需要一些帮助以及如何执行此操作的示例。
其次,万一它确实可能,允许这实际上是一个跨站脚本吗?它会让我们受到攻击吗?
任何帮助都将不胜感激。
答案 0 :(得分:1)
一个简单的链接无法安全地执行此操作,重定向的唯一方法是使用GET,并且您永远不希望以这种方式传递可重用的登录信息
这里有一个选项...提供一个外部控制器,其功能类似于Web服务。至少包括以下两个操作。一个用于从您的站点请求新帐户,传递任何必要的信息,另一个用作“远程登录”。这两个操作都应该只接受POST并要求HTTPS。在内部,他们不应该通过查询字符串接受任何数据传输,查看POST对象(这是加密的,因此更安全)。
“远程登录”操作应采用您的联盟会员传递的用户名和密码(在POST对象中加密)并验证其是否有效。然后它应该生成一个新的随机值,使用的好东西是GUID,并返回它。会员然后将它们重定向到您的站点,在查询字符串中传递GUID。 GUID充当其一次性登录令牌(下次需要新的GUID才能登录)。
如果他们不需要特定帐户在您的网站上执行操作,那么您可以省略“创建帐户”,只需向您的联属会员提供他们发送远程登录功能的代码,以确认是他们要求登录。
您的联盟会员必须做什么(并且您可以将这些代码块放在一个单独的部分并说'把它放在您的页面上,它会起作用。')实际的远程登录就是制作一个AJAX致电您的网站,请求GUID进行一次性登录。当它收到所述GUID时,它将重定向到您的站点。
这不是最好的选择......当双方共同努力使用户保持安全和不可见时,单点登录就像行为一样,但它是可行且合理安全的。