2014-01-07 44 views
0

我正在爲需要訪問我使用的api的客戶創建移動應用程序。 api需要認證,應用程序需要調用api來接收某些特定於每個客戶(移動應用程序)的數據。帶API授權訪問的移動應用程序

我只想確保正確的做法是讓移動應用程序將查詢發送到我的服務器,然後再進行經過身份驗證的API調用並將響應返回給移動客戶端?

或者是否有可能讓手機直接進行api調用,大概是使用相同的授權密鑰?

回答

1

這主要是基於輿論的問題,但是我給它一個去:

[意譯]我的服務器作爲一個API代理進行身份驗證調用另一個API代表我的未經身份驗證用戶?

這是API世界一個普遍的現象,但你需要考慮一些事情:

  • 它在用戶和服務之間的額外的層,增加了時間的數據傳輸。確保您構建的代理具有可擴展性,或者使用可代表您管理代理的第三方服務。無論哪種方式,不要忘記考慮成本。
  • 通常服務提供商需要驗證是有原因的。你是否通過打開他們的API來違反任何許可協議?
  • 是每個應用程序或每個用戶的身份驗證嗎?如果它是每個用戶(例如,每個用戶登錄並檢索唯一的access_token),那麼您將打電話給後端API作爲用戶而不是應用程序
  • 目標API是否受限速?例如,Instagram的API只允許每小時5000個請求。如果您有10,000個用戶每小時使用一次,則您已達到此限制。
  • 是否有像這樣開放目標API的安全問題?是否有需要保護的敏感信息?如果是這樣,像你一樣打開它是你創造安全漏洞?

是否有可能有移動發出API直接調用到目標API,可能使用相同的授權密鑰?

絕對可以 - 只要您遵循目標API所建立的認證流程。你要考慮的,雖然上面列舉的擔憂相同的列表,除了:如果你使用像OAuth2的驗證流程

  • ,該標準要求每個用戶必須爲自己的身份驗證和進行API調用使用獨特的access_token。您的目標API提供商是否提供此服務?如果是這樣,那就是要走的路,如果access_token受到攻擊,只有那個用戶的數據/帳戶等。處於危險之中。
  • 如果您使用的是應用程序級認證(例如,您的應用程序的client_idclient_secret)直接在您的移動應用程序中被警告,可以輕鬆獲取並妥協,從而攻擊者可以通過這種方式訪問​​整個目標API。
+0

感謝您的詳細解答!,它的認證每個應用程序。 –

+0

@raphael_turtle然後只要它不受速率限制,並且您沒有任何安全/許可問題,代理可能就是要走的路 - 這樣您就可以保留auth在移動應用程序之外。請記住,性能可能是一個問題,但如果您擁有大量用戶,則需要管理代理。 – brandonscript

+0

@raphael_turtle我還在第一個關於可伸縮性和成本的列表中增加了另一行。 – brandonscript

相關問題