鉴于您正在为用户名和密码打开一个端点,您应该阅读4.4.3下描述的一些威胁。资源所有者密码凭据(使用用户名和密码的 OAuth2 流程)- 即使这不是 OAuth 解决方案,遵循该建议仍然非常重要,这涵盖了诸如使用 SSL 进行传输级别安全性等基础知识,但它也列出了很多其他威胁和对策...
在 JavaScript 中使用用户的凭据本身就是一种威胁。OAuth 2 规范将隐式授权流程描述为使用 JavaScript 获取会话 (access_token) 的首选方法,隐式流程旨在使凭证远离 javascript。这里有一个该方法的示例演练;但是,这将涉及您安装授权服务器、使用第 3 方提供程序或使用DotNetOpenAuth 之类的东西实现自己的授权服务器(这里的一些好场景并不太难)。
但是假设您已经排除了 OAuth 2 和隐式授权流程等,那么......
我在这里放置了一个在线示例,它通过 AJAX 使用基本身份验证返回 Json Web 令牌JWT会话令牌,以用于所有后续请求。
我的示例是基本的,因此令牌存储在内存中;但是,cookie、本地存储等可用于在 Web 环境中更长时间地存储令牌。
我的示例使用 Thinktecture 的IdentityModel包。
下面还有其他示例和详细的演练,这些绝对应该用作进一步的参考和指导......
我的例子借鉴了上面和这个问题How to use Basic Auth with jQuery and AJAX?
如果您的登录表单和 API 位于不同的域中,那么您还需要调查CORS或 JSONP,确保在服务器上使用安全存储并隐藏在服务器上的会话签名密钥。该密钥当前在 WebApiConfig.cs 中进行了硬编码,还请务必重新启用必须通过 SSL 选项。
一旦是PhoneGap
您的服务器可能是相同的,但您可以使用 PhoneGap 框架来替换您的一些 JavaScript...