我有一个客户端 angular-js 应用程序。我有一个服务器端 nodejs API。客户端和服务器端应用程序位于不同的域中。客户端使用 API 获取或发布一些数据。此外,客户端需要从服务器端获取图像并在浏览器中显示它们。
我使用 Passport nodejs 模块进行身份验证。我不知道哪种身份验证策略更适合我。我认为有两种类型的身份验证策略:基于 token 和基于cookie。而且我认为这两种类型在我的情况下都没用:
<img>
中发送 header 标签。 采用的解决方案是什么?
最佳答案
了解 Web 应用程序和 Web 服务之间的区别很重要。 Web 应用程序提供标记、JavaScript、CSS 和图像文件,并且经常使用基于 cookie 的身份验证(但可以使用任何其他 implicit authentication 机制)。浏览器发出的任何请求都会自动进行身份验证。
另一方面,Web 服务经常使用不记名 token 身份验证。当浏览器、胖客户端或移动设备中的客户端与 API 通信时,它会在 Authorization
中发送一个 token 。 HTTP 请求的 header 。 header 必须显式附加到执行 HTTP 请求的 JavaScript 或 native 代码中的请求。
在单页应用程序 (SPA) 中,缺少 Web 应用程序,并且标记、JavaScript、CSS 和图像是从浏览器提供的,无需身份验证。仅对 Web 服务的请求进行身份验证,通常使用 JWT token 。
在您的情况下,如果您希望只有授权用户能够下载图像和其他文件,您应该考虑构建一个 Web 应用程序。使用像 OpenID Connect 这样的安全协议(protocol)对您的用户进行身份验证。选择同时支持您的 Web 应用程序的 OpenID Connect 和 OAuth2 的授权服务器为您的网络服务。
关于api - 我应该为我的 API 使用哪种身份验证策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34098031/