【发布时间】:2017-12-30 10:29:42
【问题描述】:
我对 REST 安全性非常陌生,我正在尝试构建一个 AngularJS (Angular 1) 应用程序,该应用程序与作为其后端的 RESTful Web 服务集成。此 Web 服务将成为应用(前端)获取和写入所有数据的方式。
该应用最初将是 REST 服务的唯一客户端,但最终我希望将该服务作为公开的公共 API 开放,而不仅仅是由我的 Angular 应用使用/消费。
我正在尝试弄清楚如何为我的 REST 服务构建身份验证/授权解决方案,但有些事情我不清楚。我希望 Angular 应用程序及其支持的 REST 服务都拥有自己的身份验证/授权模型(我认为——我可以说出来)。
- Angular 应用程序是否附带其自己的“服务用户”和用于与 REST 服务集成的凭据?
myapp-client的用户名有自己的密码? 或 - Angular 应用程序是否将用户的凭据“转发”到 REST 服务?
在第一种情况下,就像我说的那样,Angular 应用程序可能会附带硬编码的凭据,用于集成和连接到 REST 服务(再次作为示例:用户名:myapp-client,密码:12345)。我认为这是最简单的,但随后(很可能)在浏览器/前端代码中公开这些硬编码凭据,然后在阳光下的任何脚本小子都有用户名 + 密码来访问我的整个 REST API。
在后一种情况下,我认为 Angular 应用程序必须充当某种中间人,其中用户:
- 匿名并被路由到登录屏幕
- 输入自己的凭据(用户名:smeeb,密码:23456)
- 通过应用程序和后端进行身份验证(不知何故两者)
- 获取某种承载/JWT/等。令牌,然后对 Angular 应用程序的所有后续 HTTP 请求都使用此有效令牌(但应用程序只是以某种方式充当存储令牌的浏览器和 REST 服务之间的中间人)
我想我正在寻找确认我对前一个解决方案(应用程序用来与后端集成的 1 个服务用户)在浏览器中公开凭据的怀疑,而后一个解决方案是可行的方法。还要确认 JWT 是否是实现后一种解决方案的一种方式,或者我是否需要使用 OAuthv2 或其他方式。
【问题讨论】:
标签: angularjs rest security oauth-2.0 jwt