Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net AuthenticationForm-跨站点cookie_Asp.net_Forms Authentication_Httpcookie - Fatal编程技术网

Asp.net AuthenticationForm-跨站点cookie

Asp.net AuthenticationForm-跨站点cookie,asp.net,forms-authentication,httpcookie,Asp.net,Forms Authentication,Httpcookie,我有两个网站,第一个是myFirst.domain.com,第二个是mySecondSite.domain.com 它们位于两个不同的web服务器上,我的目标是允许跨站点身份验证(我真正需要的是共享FormsAuthenticationCookie) 我已经正确设置了我的web.config文件(机器键节点、表单节点)。唯一的区别是关于loginUrl,在myFirstSite上显示为~/login.aspx,而在mySecondSite上显示为http://myFirstSite.com/lo

我有两个网站,第一个是
myFirst.domain.com
,第二个是
mySecondSite.domain.com

它们位于两个不同的web服务器上,我的目标是允许跨站点身份验证(我真正需要的是共享
FormsAuthentication
Cookie)

我已经正确设置了我的
web.config
文件(机器键节点、表单节点)。唯一的区别是关于loginUrl,在myFirstSite上显示为
~/login.aspx
,而在mySecondSite上显示为
http://myFirstSite.com/login.aspx

请注意,我没有虚拟目录,只有两个不同的web应用程序

问题是:当我从mySecondSite进入myFirstSite登录页面时,我从未从登录页面得到重定向,看起来好像没有编写cookie

以下是有关该问题的几个片段:

MyFirsSite:

 <machineKey validationKey="..." decryptionKey="..." validation="SHA1" decryption="AES" />
        <authentication mode="Forms">
            <forms loginUrl="login.aspx" name="authCookie" enableCrossAppRedirects="true"></forms>
        </authentication>
        <authorization>
            <deny users="?" />
            <allow users="*"/>
        </authorization>
MySecondSite:

<machineKey validationKey="..." decryptionKey="..." validation="SHA1" decryption="AES"/>
        <authentication mode="Forms">
            <forms loginUrl="http://myFirstSite.domain.com/login.aspx?queryStringToIndicateUrlPage" enableCrossAppRedirects="true"></forms>
        </authentication>
        <authorization>

好了,就这些。不幸的是,它不起作用


请不要注意
queryStringToIndicateUrlPage
,这只是一个简单的解决方法,以便知道我是否必须在同一个应用程序上重定向,还是在另一个应用程序上重定向。

当您使用两个域之间共享的基于cookie的身份验证时,您需要在
元素中指出这一点:

<machineKey validationKey="..." decryptionKey="..." validation="SHA1" decryption="AES"/>
    <authentication mode="Forms">
        <forms domain=".domain.com" ... />
    </authentication>


请注意域名前面的首字母“.”,它允许在子域之间共享cookies。

我已经尝试过指定域名,但无论如何都不起作用。@bit:您的示例代码使用authCookie.domain=“myDomain.com”,应该是“.myDomain.com”。你试过了吗?是的,我试过了。我也尝试过很多其他的解决方案,但都没有运气。。这似乎是不可能实现的。重要提示:在我的示例中,我提到了semplcity的myFirstSite.myDomain.com和mySecondSite.myDomain.com。实际上,地址是myFirstSite.xxx.yyy.com和mySecondSite.xxx.yyy.com,因此我的cookie域字符串将是“.xxx.yyy.com”。我已经读到,超过2个点可能是导致坏问题的原因。有可能吗?@bit:我要检查的第一件事是我是不是你,饼干是否真的粘了。忘记身份验证之后,您能看到cookies设置正确吗?使用网络跟踪器查看设置的Cookie和Cookie头(即内置了该功能,您可以在Firefox下使用Firebug)。
<machineKey validationKey="..." decryptionKey="..." validation="SHA1" decryption="AES"/>
    <authentication mode="Forms">
        <forms domain=".domain.com" ... />
    </authentication>