代码之家  ›  专栏  ›  技术社区  ›  Mark Kadlec

如何消除从asp.net窗体应用程序调用的MVC应用程序的身份验证

  •  0
  • Mark Kadlec  · 技术社区  · 16 年前

    我有一个现有的asp.net窗体应用程序,它执行窗体身份验证并启用了身份模拟。

    该应用程序有一个链接到一个问卷,我想在一个asp.net MVC应用程序中单独开发,但我不希望用户点击链接,并被提示输入用户名和密码,我希望他们能够无缝开始填写问卷。

    有没有办法将身份验证从一个.net应用程序转移到另一个.net应用程序?我想能够通过像UserRole的东西。

    最好的办法是什么?

    2 回复  |  直到 16 年前
        1
  •  2
  •   tvanfosson    16 年前

    如果您在两个应用程序中使用相同的MachineKey,并且MVC应用程序在同一台服务器上,我认为它将重用auth cookie并简单地认为它们已登录。看到这个了吗 MSDN article sharing authentication tickets across applications . 注意:这假设两个应用程序位于同一服务器上。如果它们在不同的服务器上,那么您需要研究一些其他机制——比如为URL生成一个单次使用的票证,远程系统可以通过web回调到用户所在的发起服务器来使用该票证。它可能不需要完全实现 central authentication system

        2
  •  1
  •   Anero    16 年前

    使用 Windows Identity Foundation (WIF)您可以实现单点登录。

    在WIF中,一个称为安全令牌服务(Security Token service,STS)的服务发出一个带有声明的令牌,声明可以是您想要声明的关于经过身份验证的用户的任何内容,例如他的角色。在应用程序中,您可以使用Page.User、Controller.Page或Thread.Current.Principal属性来检查用户声明(不过,如果您只使用角色声明,为了简单起见,可以使用IsInRole方法)。