【问题标题】:Form Authentication woes, calling http handler on app2 from app1 not authenticating表单身份验证问题,从 app1 调用 app2 上的 http 处理程序未进行身份验证
【发布时间】:2010-03-17 16:44:32
【问题描述】:

我有 2 个 asp.net 网络应用程序。

http://app1.local/

http://app2.local/

App2 有一个 httpHandler,它接受一些凭据,并使用表单身份验证登录用户。

FormsAuthentication.SetAuthCookie(cookieUserName, createPersistentCookie);
HttpCookie authCookie = context.Response.Cookies[FormsAuthentication.FormsCookieName];

我直接在浏览器中运行它,当我在 app2 上打开另一个页面时,我已经正常登录了。

问题:

在 app1 上,我有一个登录页面,它向 app2 上的 httpHandler 发出 httpwebrequest。出于某种原因,当我使用相同的凭据登录然后转到 app2 时,我没有登录到 app2 网站

这是为什么?

【问题讨论】:

    标签: asp.net forms-authentication httphandler


    【解决方案1】:

    它们有相同的 cookie 名称吗? (FormsAuthentication.FormsCookieName) 如果这样做,它们可能会相互覆盖。

    凭据相同的事实无关紧要(我认为)。因为它们是两个不同的应用程序/站点,所以它们之间没有明确的信任关系——用户需要直接对自己进行身份验证(不足为奇)。因此,如果相同的表单身份验证 cookie 被覆盖,您之前的身份验证就会丢失。

    【讨论】:

      【解决方案2】:

      在我看来,App2 是您的身份验证器服务,其他应用程序(这里只是 App1)使用它来对用户进行身份验证。

      现在通过 App2 登录页面直接登录和通过 http 请求调用在 App1 中对用户进行身份验证是完全不同的,即使身份验证只发生在 App2 中。

      如何调试和解决:

      通过 App1 向 App2 发出的 Http 请求调用大多会调用与 App2 中直接登录不同的方法。这个从 App1 到 App2 的 http 请求不涉及任何浏览器交互 - 它是这两个应用程序之间的内部调用。解决它的一种方法是 App1 也应该设置与 App2 相同的 cookie。 如果您能找出这两种方法的差异并缩小差距,则可以找到其他线索。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-27
        • 2015-05-19
        • 2014-01-26
        相关资源
        最近更新 更多