0

我正在尝试在不同的 Web 应用程序(asp.net 应用程序和 MVC4 应用程序)之间共享身份验证和授权。

我读到您应该将机器密钥和这些值在站点之间设置为相同。我已经这样做了,并且身份验证工作正常。

但现在在 MVC 应用程序中,我想使用 Authorize 属性来确保用户只能看到应该看到的内容。这是行不通的。

我也查了。

当我从 ASP.Net 应用程序调用 User.IsInRole("Admin") 时(这是登录完成的地方),返回的值为 true,但是当导航到 MVC 应用程序时,相同的调用返回 false。

似乎角色没有在应用程序中共享,是否可以正常工作或者我应该创建自定义授权属性?

非常感谢

4

1 回答 1

1

您拥有的应用程序越多,共享表单 cookie 的问题就越大。最终,如果两个应用程序位于不同的域 (something.foo.comsomethingelse.bar.com),这将不起作用,因为您不能强制浏览器将 cookie 提交到两个不同的域。

这仅在您手动控制表单 cookie 并将其发布给.yourdomain.com顶级域并且您的应用程序位于子域 ( app1.yourdomain.com, app2.yourdomain.com) 时才有效。这可能是一个严重的限制。

您可以做的是将您的身份验证外部化,即创建一个单独的 Web 应用程序,其唯一目标是对您的用户进行身份验证和授权。您选择一种单点登录协议(WS-Federation、OAuth2、OpenID)并围绕此身份验证提供程序联合您的应用程序环境。

这听起来可能很困难,特别是如果这对您来说是新事物,但如果您投入时间,那么只有好处。

于 2012-08-16T07:30:59.040 回答