【发布时间】:2018-07-04 12:39:34
【问题描述】:
我正在询问有关从头开始开发应用程序的问题,但遇到了一些麻烦: 我将有一个前端部分(Angular)和一个后端,它们将通过后端的 REST API 进行经典通信。 而对于上下文:这个应用程序(前+后)将部署在每个要使用应用程序的设备上,因此没有公共的全局服务器API。
问题是:在这种情况下,我是否需要对发往后端的请求进行身份验证? 还是我必须考虑作为本地网络服务不需要身份验证?如果我必须知道 Rest 应用程序必须是无状态的,我是否应该使用 OAuth(带有一点状态部分)+ JWT 不包括 HTTP 会话身份验证?
非常感谢,有些概念我不明白。
编辑:在全球范围内,问题是何时开发简单的 REST 应用程序以及何时开发安全认证部分?
【问题讨论】:
-
我认为,如果有要保护的数据或个人数据,则需要进行身份验证。 +它允许记录并知道谁在请求。你不能只说“没有人会知道它的存在”。如果您必须保护它,请进行身份验证,否则假设它是公共的(攻击者可能在您的内部网络中而您不会注意到)我认为 JWT 基本上就足够了,OAUTH 2.0 的设置很复杂,jwt 很简单,完全无状态并且是安全的
-
有什么区别,在实践中我注意到 OAuth2(至少对于特定授权)正在使用令牌?
-
如果我没记错的话,用途是非常不同的。 Oauth 的正常工作流程:在您的用户第一次连接时:您在第三方服务请求授权,第三方服务给您一个“授权授予”(这是您为您的用户存储的),然后您可以请求一个令牌(本质上,令牌具有有限的持续时间)。这对于应该由未知服务使用的第三方服务非常有趣(Facebook 不知道您是谁,但它知道您可以做什么)
-
所以它允许第三方服务在不知道你是谁的情况下知道用户允许你访问的内容(存储在“授权授予”中,持续时间不受限制,您可以阅读)。 JWT 只是一种令牌策略,它允许您与签名(或加密)令牌进行通信:假设您有一个用户后端和一个订单后端:用户在用户的后端进行身份验证,用户后端发送给您返回一个 JWT,然后订单后端可以假设您是存储在 JWT 中的用户,然后它允许您知道存储在 JWT 中的用户的订单
-
恢复:OAUTH系统生成的token是给第三方的。如果您只想对您的服务进行身份验证,那么 JWT 就足够了(JWT 很适合在受信任的服务之间使用)
标签: angular rest oauth-2.0 spring-security-oauth2 restful-authentication