窗体身份验证的困境,从APP1 APP2调用HTTP处理程序不验证

问题描述 投票:0回答:2

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

http://app1.local/

http://app2.local/

应用2有一个HttpHandler的是发生在一些证书,并登录使用窗体身份验证的用户。

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

我直接在浏览器中运行这个,当我打开另一个网页APP 2,我就好了我登录。

问题:

在APP1我有一个登录页面,那做了HttpWebRequest的对APP2的HttpHandler的。出于某种原因,当我登录使用相同的凭据,然后去APP2我没有登录到APP2网站。

为什么是这样?

asp.net forms-authentication httphandler
2个回答
0
投票

他们有相同的cookie的名字吗? (FormsAuthentication.FormsCookieName)如果他们这样做,他们可能是overwritting对方。

该证书是一样的事实是无关紧要的(我认为)。因为它们是两个不同的应用程序/网站,他们没有它们之间的外在信任关系 - 用户需要自己直接验证(并不奇怪)。因此,如果同一窗体身份验证cookie被覆盖以前的验证丢失。


0
投票

这在我看来,应用2就是你的身份验证服务,这是对用户的身份验证使用的其他应用程序(这里只是应用1)。

现在直接通过应用2登陆页面登录,并通过HTTP请求调用的应用1来验证用户即使验证只发生在应用2完全不同。

如何调试和解决:

通过应用1做出应用2 Http请求调用将被大多比调用在应用2直接登录,不同的方法。从应用1这个HTTP请求,应用2不涉及任何浏览器交互 - 这是这两个应用程序之间的内部通话。一种方法来解决这将是应用1还应设置相同的cookie为应用2。其它的线索可以发现,如果你能搞清楚这两种方法的差异,缩小差距。

© www.soinside.com 2019 - 2024. All rights reserved.