我正在开发一个 ASP.NET MVC Web 应用程序,它从后面的 API 获取数据。因此,身份验证目前是通过 ASP.NET 表单身份验证完成的,这意味着客户端将电子邮件和密码发送到网站,网站将该数据传输到 API,该 API 返回一个身份验证令牌,该身份验证令牌存储在 ASP.NET 会话中。之后,在客户端上设置身份验证 cookie。
没关系并且安全(据我目前的知识),没有凭据或令牌存储在客户端。
作为一个缺点,每个 AJAX 请求都必须通过网站进行路由。结果,我有大量的 ASP.NET MVC 操作,它们除了将请求转发到 API 并返回从那里返回的结果之外什么都不做。
这可能是未来的瓶颈,因为网站基础设施必须以与 api 基础设施相同的方式进行扩展。现在我正在寻找一种解决方案来通过网站删除这些冗余调用并直接从客户端(通过 AJAX)访问 API。
这需要来自客户端的 API 身份验证。从技术上讲,如果我将身份验证令牌存储在 LocalStorage 中(不支持旧浏览器),那将不是问题。
但这种方法有多安全?JSONP 旁边有哪些窃取令牌的选项(可以通过不包括外部脚本来防止,对吗?)?