我有一个网站(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/