我有一个包含Web应用程序,移动应用程序(Ionic 3)和REST API模块(在HTTPS上)的项目。 我主要关心的是在它们之间实现安全的登录和通信。 波纹管我详细说明了我选择的解决方案,我想问问它是否正确和安全。如何保护Ionic 3应用程序和自定义php REST API之间的通信
遵循的步骤:
-
在应用中的登录
服务器返回一个智威汤逊 - 艾策斯令牌
当我打电话从API(除了登录)我会发送以下参数的任何功能:
- 内部报头:JWT AccesToken(存储在本地存储)
- 体内:任何其他PARAM necess ary来调用API的函数
里面的每个函数都来自REST API,在执行之前,我检查Access令牌是否有效。
令牌验证:
一)如果访问令牌是有效的我继续执行功能,并返回一个值到了移动应用
B)如果访问令牌不是有效的手段我有2个可能的错误来源:
- B1)的访问令牌的完整性是一个妥协 - >返回的答案将用户重定向到登录(这样一来他没有再对应用程序的访问)
- b2)访问令牌过期 - >我创建一个新的访问令牌具有相同的有效负载,但具有新的有效性。同时,我创建新的Access令牌,同时我还检查了数据库中的IdClient(IdClient是从访问令牌载荷生成的)(如果处于活动状态,如果具有访问API的相同权限...)。在此之后,我将这个新的JWT访问令牌发送到移动应用程序以供使用和存储。
这样,我相信我没有使用刷新标记,即使访问令牌我用寿命是有限的时期
这是正确的和安全的还是我失去了一些东西?
谢谢!
我选择不使用RefreshToken因为我不”知道如何reciving的艾策斯令牌到期错误 后召回功能刷新令牌我应该做的: A)调用SUM1:发送内部FUNCTION1变量和艾策斯令牌 B) :我收到访问令牌过期的错误 C)FUNCTION1内部:我发送刷新令牌 D)在FUNCTION1内部:我收回新的访问令牌 E)在FUNCTION1内部:我从新的访问的REST API中调用函数SUM1令牌 所有这些步骤必须在FUNCTION1内完成。但我不知道如何。 也许在angular2上使用RJx,“重试/重试时......”但我只能读到它们 – Eventful