2017-10-12 37 views
1

我有一個包含Web應用程序,移動應用程序(Ionic 3)和REST API模塊(在HTTPS上)的項目。 我主要關心的是在它們之間實現安全的登錄和通信。 波紋管我詳細說明了我選擇的解決方案,我想問問它是否正確和安全。如何保護Ionic 3應用程序和自定義php REST API之間的通信

遵循的步驟:

    在應用中的登錄
  1. 服務器返回一個智威湯遜 - 艾策斯令牌

  2. 當我打電話從API(除了登錄)我會發送以下參數的任何功能:

    • 內部報頭:JWT AccesToken(存儲在本地存儲)
    • 體內:任何其他PARAM necess ary來調用API的函數
  3. 裏面的每個函數都來自REST API,在執行之前,我檢查Access令牌是否有效。

令牌驗證:

一)如果訪問令牌是有效的我繼續執行功能,並返回一個值到了移動應用

B)如果訪問令牌不是有效的手段我有2個可能的錯誤來源:

  • B1)的訪問令牌的完整性是一個妥協 - >返回的答案將用戶重定向到登錄(這樣一來他沒有再對應用程序的訪問)
  • b2)訪問令牌過期 - >我創建一個新的訪問令牌具有相同的有效負載,但具有新的有效性。同時,我創建新的Access令牌,同時我還檢查了數據庫中的IdClient(IdClient是從訪問令牌載荷生成的)(如果處於活動狀態,如果具有訪問API的相同權限...)。在此之後,我將這個新的JWT訪問令牌發送到移動應用程序以供使用和存儲。

這樣,我相信我沒有使用刷新標記,即使訪問令牌我用壽命是有限的時期

這是正確的和安全的還是我失去了一些東西?

謝謝!

回答

0

是的,如果您實施上述token based authentication pattern (JWT),我看不到任何有關您的應用安全的問題。您可以在我的Ionic 3應用程序中使用以下鏈接看到相同的模式。

你可以看到that implementation here

但在該應用程序中,我有一個後端API開發人員。所以我已經使用前端應用程序來使用該API模式。但我想也有refresh token pattern。你能告訴我你爲什麼試圖避免在你的應用程序?

+0

我選擇不使用RefreshToken因爲我不」知道如何reciving的艾策斯令牌到期錯誤 後召回功能刷新令牌我應該做的: A)調用SUM1:發送內部FUNCTION1變量和艾策斯令牌 B) :我收到訪問令牌過期的錯誤 C)FUNCTION1內部:我發送刷新令牌 D)在FUNCTION1內部:我收回新的訪問令牌 E)在FUNCTION1內部:我從新的訪問的REST API中調用函數SUM1令牌 所有這些步驟必須在FUNCTION1內完成。但我不知道如何。 也許在angular2上使用RJx,「重試/重試時......」但我只能讀到它們 – Eventful

相關問題