3

我们的场景:

我们的解决方案包括一个提供单页 javascript 应用程序的 MVC 应用程序和一个旨在用作独立 api 和 SPA 数据源的 Asp.Net WebAPI 应用程序。

我们已经设置好一切,以便两个应用程序共享身份验证令牌和成员资格,因此如果我们登录到 SPA,那么相同的表单身份验证 cookie 也将允许我们访问 API。

如果您在浏览器地址栏中发出 API 请求,但不是通过 AJAX,这可以正常工作。我们遵循了使用 Thinktecture 设置基本身份验证的示例,如果我们将 username\password 硬编码为 ajax 调用的身份验证标头,那么这也可以正常工作。

但是,我的问题是,在客户端保留这些详细信息的正确方法是什么?到目前为止,我们唯一真正的解决方案是将用户名\密码的 base 64 哈希作为 SPA 初始加载的一部分,然后在需要时将其取出。然而,这似乎不安全。

所以基本上,只是想知道在这种情况下“正确”的方法是什么......我们是接近还是我们忽略了另一种方法?

谢谢!

4

1 回答 1

0

我们使用 Thinktecture.IdentityModel 提供的会话令牌支持,然后通过动态生成的脚本使客户端可以使用令牌。

详情请见http://ben.onfabrik.com/posts/dog-fooding-our-api-authentication

我还在https://github.com/benfoster/ApiDogFood上发布了一个示例应用程序来演示这些概念。

于 2013-03-29T00:12:38.963 回答