在单页面js应用程序中保持身份验证令牌的安全方法

时间:2013-01-24 17:18:10

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

我们的情景:

我们的解决方案包括一个提供单页javascript应用程序的MVC应用程序,以及一个Asp.Net WebAPI应用程序,该应用程序既可用作独立API,也可用作SPA的数据源。

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

如果您在浏览器地址栏中发出API请求,而不是通过AJAX,则此方法可以正常工作。我们已经按照使用Thinktecture设置基本身份验证的示例进行了操作,如果我们将用户名\密码硬编码为我们的ajax调用的身份验证标头,那么这也可以正常工作。

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

http://ben.onfabrik.com/posts/dog-fooding-our-api-authentication

的详细信息

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