嗨,我正在Azure上开发两个Web服务,分别是“ domain1.azurewebsite.net”和“ domain2.azurewebsite.net”。我已经在同一Active Directory下的两个服务中实施了ACS身份验证。现在,我需要通过domain1.azurewebsite.net登录并与domain2.azurewebsite.net共享cookie(包含auth令牌),以便可以访问domain1中domain2的数据服务。
我在网上遵循了建议,该建议设置了cookie domain =“。azurewebsite.net”。我希望此类Cookie被所有子域共享,即“ * .azurewebsite.net”,以便可以实现跨域用途。如下所示在web.config中完成设置
<system.identityModel.services>
<federationConfiguration>
<cookieHandler requireSsl="false"
domain=".azurewebsites.net"
hideFromScript="false"
persistentSessionLifetime="0:30:0" />
<wsFederation passiveRedirectEnabled="true"
issuer="https://focusns.accesscontrol.windows.net/v2/wsfederation"
realm="urn:Focusns"
requireHttps="false"
persistentCookiesOnPassiveRedirects="true" />
</federationConfiguration>
</system.identityModel.services>
Run Code Online (Sandbox Code Playgroud)
为了启用跨域请求,我使用了CORS,并且已经按照如下所示从“ domain2.azurewebsite.net”正确设置了响应头:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://domain1.azurewebsites.net
Run Code Online (Sandbox Code Playgroud)
但是,我的问题是,登录domain1.azurewebsite.net时未附加具有“ .azurewebsite.net”域的cookie。当我使用Chrome,Opera,FF时,当我检查Cookie时,甚至看不到它们。但是我确实在IE11中看到了cookie,在其中一切正常。我在链接浏览器安全手册第2部分中发现了不同浏览器之间的差异,并且我怀疑原因是IE不支持主机范围的cookie。
无论如何,有人知道我该如何解决这个问题?我需要它在Chrome,FF等环境中正常工作。