javascript - 如何在 Ajax 网站和服务之间共享身份验证

标签 javascript asp.net-mvc asp.net-web-api forms-authentication

我有一个网站(MVC 4)和WebService(Web API)。 WebSite 有一个身份验证 cookie,它会对其进行解密,以便在 WebSite 服务器端代码调用服务时将安全 token 发送到 WebService。效果很好。

但是,网站有 JavaScript,我想直接调用 WebService。我尝试过共享 MachineKey 和 Auth 信息,但 cookie 未通过 WebApi 传输。

我的后备方案是通过网站将所有调用路由到 WebService;但这很丑陋而且很慢。

有什么想法吗?

最佳答案

正确答案是达林的。为了在服务站点和网站之间共享登录 cookie,它们必须位于同一域中;所以例如服务站点可能位于

http://svc.mysite.com

网站可能位于

http://www.mysite.com

然后浏览器将允许两个站点共享相同的 cookie。

另一种方法是让站点向服务站点进行身份验证,并获取可以传递给 JavaScript 的某种 token 。但是,除非您在 HTTPS 上运行,否则这是非常不安全的,因为 token 将“以明文形式”可用。

最终的机制(也是我认为最常见的解决方案)是通过网站路由所有 API 访问,但这在许多情况下并不理想。

关于javascript - 如何在 Ajax 网站和服务之间共享身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14773601/

相关文章:

javascript - 使用多个参数进行延迟加载

javascript - Three.js - BufferGeometry 警告渲染计数或 primcount 在未指定索引时为 0

javascript - 为什么展开运算符将数据嵌套在另一个对象中?

asp.net-mvc - Windows Azure Multi-Tenancy

c# - OData v4 路由前缀?

javascript - cfajaxproxy 的简单表单不起作用

c# - 在 MVC 中实现验证

c# - 问潜在员工的 C# ASP.NET MVC 问题是什么?

c# - 如何使用 Unity 容器解决 Web API 中依赖项的依赖关系?

c# - 如何在 ASP MVC 中下载 NPOI 生成的 xls 文件