我们的情景:
我们的解决方案包括一个提供单页javascript应用程序的MVC应用程序,以及一个Asp.Net WebAPI应用程序,该应用程序既可用作独立API,也可用作SPA的数据源。
我们已经设置了所有内容,以便两个应用程序将共享身份验证令牌和成员资格,因此,如果我们登录到SPA,那么相同的formsauthentication cookie也将允许我们访问API。
如果您在浏览器地址栏中发出API请求,而不是通过AJAX,则此方法可以正常工作。我们已经按照使用Thinktecture设置基本身份验证的示例进行了操作,如果我们将用户名\密码硬编码为我们的ajax调用的身份验证标头,那么这也可以正常工作。
然而,我的问题是,在客户端持久保存这些细节的正确方法是什么?到目前为止,我们唯一真正的解决方案是发送用户名\密码的base 64哈希作为SPA初始加载的一部分,然后在需要时将其拉出。然而,这似乎不安全。
所以基本上,只是想知道在这种情况下'正确'的方法是什么......我们是关闭还是我们忽略了另一种方法?
谢谢!
答案 0 :(得分:0)
我们正在使用Thinktecture.IdentityModel的会话令牌支持,然后通过动态生成的脚本将令牌提供给客户端。
http://ben.onfabrik.com/posts/dog-fooding-our-api-authentication
的详细信息我还在https://github.com/benfoster/ApiDogFood发布了一个演示这些概念的示例应用程序。