代码之家  ›  专栏  ›  技术社区  ›  Christopher

有没有在ASP.NET中“签署”HTTP文章的方法?

  •  0
  • Christopher  · 技术社区  · 15 年前

    我在站点A有帐户的用户。站点A已经存在很长时间了,而且更改它的代码很昂贵(但并非不可能)。

    站点B(我现在正在处理它!)为网站A的客户托管一个全新的Web应用程序。网站B应用程序具有网站A的用户名列表,并维护与网站B的使用相关的每个用户的首选项和其他信息。网站A和网站B是不同的平台。我认为站点A是ColdFusion,站点B是ASP.NET MVC。

    我希望用户能够单击站点A中的一个链接,将他们登录到站点B上的应用程序中。我想它可能是这样工作的:

    0)如果用户试图直接访问站点B,他们只需重定向到站点A进行身份验证。

    1)用户登陆A站点。

    2)一旦登录到站点A,他们可以点击一个链接,把他们带到站点B。我想我会用用户名做一个从站点A到站点B的HTTP发布,因此站点B知道谁在登录,以及如何根据他们的喜好呈现他们的页面。

    当然,我不希望任何JoeSchmoe能够使用用户名向站点B发布HTTP,并以该用户的身份登录。

    所以我想知道,如果使用证书或其他东西,我可以使它,使站点B能够确定,这篇文章真的来自站点A。我需要/我可以使用证书吗?也许站点A可以以某种方式“签署”它的帖子,这样站点B就可以确定帖子来自站点A了?

    或者仅仅一个密码就足够了,站点A在SSL上发布一个密码,以及只有站点B知道的用户名?

    我也愿意接受站点A将用户名和guid发布到站点B的想法,如果这确实是一个最近有效的guid,那么哪个站点B会通过Web服务“询问”站点A,而实际上是源于站点A,但这似乎是我可以消除的旅行。

    我希望这足够描述性。请让我解释一下。谢谢你的帮助。:)

    1 回复  |  直到 15 年前
        1
  •  2
  •   David    15 年前

    另一个选择是……

    • 用户登录站点A。

    • 站点A创建一个与此用户关联但将在5秒或短时间内过期的GUID。

    • 用户被重定向到站点B?userid=somid&confirmationid=some-guid

    • 站点B调用站点A上的Web服务,传递用户ID和guid,并检查这是否是有效的重定向。(Web服务只返回“真”或“假”)。

    这就解决了您的信任问题,因为站点B显式地查询站点A,所以站点B知道它正在使用站点A进行身份验证,而不仅仅是盲目地相信确认来自站点A的重定向。

    另外,一个guid足够独特,不太可能被黑客猜测到,最后,到期使得它这样,如果一个黑客猜中了guid,它很可能在猜中时过期。

    当然,您需要通过SSL完成这一切。