我有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网站。
为什么是这样?
他们有相同的cookie的名字吗? (FormsAuthentication.FormsCookieName)如果他们这样做,他们可能是overwritting对方。
该证书是一样的事实是无关紧要的(我认为)。因为它们是两个不同的应用程序/网站,他们没有它们之间的外在信任关系 - 用户需要自己直接验证(并不奇怪)。因此,如果同一窗体身份验证cookie被覆盖以前的验证丢失。
这在我看来,应用2就是你的身份验证服务,这是对用户的身份验证使用的其他应用程序(这里只是应用1)。
现在直接通过应用2登陆页面登录,并通过HTTP请求调用的应用1来验证用户即使验证只发生在应用2完全不同。
如何调试和解决:
通过应用1做出应用2 Http请求调用将被大多比调用在应用2直接登录,不同的方法。从应用1这个HTTP请求,应用2不涉及任何浏览器交互 - 这是这两个应用程序之间的内部通话。一种方法来解决这将是应用1还应设置相同的cookie为应用2。其它的线索可以发现,如果你能搞清楚这两种方法的差异,缩小差距。