使用Forms身份验证跨域

时间:2012-05-17 08:55:18

标签: asp.net-mvc asp.net-web-api cross-domain forms-authentication

这是我们的问题.. 我们已经构建了一个 MVC Web-api ,它使用带有cookie的 Forms身份验证来处理会话。 当我们在与web-api相同的域(localhost或web-server)上使用我们的前端网页时,一切正常。 (我们使用JQuery $ .get和$ .post与web-api进行通信。)

虽然未来的前端应该是一个独立的html5应用程序,但不能与web-api位于同一个域中。 不幸的是,这不起作用。

web-api会向客户端返回一个身份验证cookie,但是当前端发送请求时,cookie不会被带回web-api。 当web-api和前端都在同一个域上时,cookie会随请求自动发送。

我们尝试过设置 web-api webconfig文件中的“Access-Control-Allow-Origin:*”和“Access-Control-Allow-Authentication:true”。

1 个答案:

答案 0 :(得分:4)

您需要的是单点登录(SSO)功能。

浏览器只会将cookie发送到同一个域,这就是为什么当应用程序位于不同的域时它无效的原因。

在CodeProject中有关于在ASP.NET中实现SSO的一篇很好的文章 - http://www.codeproject.com/Articles/106439/Single-Sign-On-SSO-for-cross-domain-ASP-NET-applic它也适用于ASP.Net MVC。