Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular RESTAPI和身份验证?_Angular_Rest_Oauth 2.0_Spring Security Oauth2_Restful Authentication - Fatal编程技术网

Angular RESTAPI和身份验证?

Angular RESTAPI和身份验证?,angular,rest,oauth-2.0,spring-security-oauth2,restful-authentication,Angular,Rest,Oauth 2.0,Spring Security Oauth2,Restful Authentication,我正在询问有关从头开发应用程序的问题,我遇到了一些问题: 我将有一个前端部分(Angular)和一个后端,它们将通过后端上的RESTAPI进行经典通信。 对于上下文:此应用程序(前端+后端)将部署在要使用该应用程序的每个设备上,因此没有公共全局服务器API 问题是:在这种情况下,我是否需要验证向后端发出的请求? 或者我必须考虑到,本地Web服务不需要认证吗?如果我必须这样做,知道Rest应用程序必须是无状态的,我是否应该使用OAuth(带有一点状态部分)+JWT(不包括HTTP会话身份验证) 非

我正在询问有关从头开发应用程序的问题,我遇到了一些问题: 我将有一个前端部分(Angular)和一个后端,它们将通过后端上的RESTAPI进行经典通信。 对于上下文:此应用程序(前端+后端)将部署在要使用该应用程序的每个设备上,因此没有公共全局服务器API

问题是:在这种情况下,我是否需要验证向后端发出的请求? 或者我必须考虑到,本地Web服务不需要认证吗?如果我必须这样做,知道Rest应用程序必须是无状态的,我是否应该使用OAuth(带有一点状态部分)+JWT(不包括HTTP会话身份验证)

非常感谢,有一些概念我不明白


编辑:在全球范围内,问题是什么时候开发一个简单的REST应用程序,什么时候开发用于安全性的身份验证部分?

通常,前端应该绝对进行身份验证,以便执行REST服务。通常使用类似OAuth的东西,这样客户机就可以获得一个唯一的令牌进行身份验证


如果您说服务器和客户端都部署在一个独立的设备上,那么我的第一个问题是为什么要使用这种架构?在这样的情况下避免认证可能是好的,但是你确实需要首先阐明有一个客户端-服务器分离的逻辑,并考虑什么攻击是可能的。p> 我认为,如果需要保护数据或个人数据,则需要进行身份验证它允许记录并知道谁在请求。你不能只说“没有人会知道它的存在”。如果您必须保护它,请进行身份验证,否则假定它是公共的(攻击者可以在您的内部网络中,而您不必注意)。我认为JWT已经足够了,OAUTH 2.0的设置非常复杂,JWT是直截了当的,完全无状态的,并且是安全的。在实践中,我注意到OAuth2(至少对于特定的授权)是使用代币吗?如果我没记错的话,用法是非常不同的。Oauth的正常工作流程:在用户第一次连接时:您在第三方服务上请求授权,第三方服务会给您一个“授权授予”(这是您为用户存储的),然后您可以请求一个令牌(本质上令牌的持续时间有限)。这对于第三方服务来说非常有趣,它应该由未知服务使用(facebook不知道你是谁,但它知道你可以做什么),因此它允许第三方服务知道用户允许你访问的内容(存储在“授权授权”中,该授权不受持续时间限制,并且你可以阅读)不知道你是谁。JWT只是一种令牌策略,它允许您使用已签名(或加密)的令牌进行通信:假设您有一个用于用户的后端和一个用于订单的后端:用户在用户后端进行身份验证,用户后端向您发回JWT,然后order后端可以假设您是存储在JWT中的用户,然后它允许您知道存储在JWT中的用户恢复的顺序:OAUTH系统生成的令牌是为第三方的。如果您只想为您的服务进行身份验证,只需JWT就足够了(JWT很适合在受信任的服务之间使用)好的,谢谢,隔离设备将是客户端计算机。我认为angular appli和后端处理部分之间通信的经典方式是通过REST?最后,它不是客户机-服务器应用程序,而是前端-后端通过REST通信,因为我不知道没有RESTOk如何通信-听起来你们不需要auth,如果您只是将web应用程序用作本机应用程序的替代,并且服务器也在本地设备上运行。如果服务器在其他地方运行,则肯定需要对任何特权REST请求进行身份验证。好的,但同一设备上的其他软件可以请求API吗?即使这是设备所有者的责任:这不是一个完全隔离的设备,后端应该请求外部DB/API,例如(但不是mines),但是是的,服务器将在每个本地设备上运行。如果不是这样,通常如何进行前后通信?