2017-05-15 418 views
0

API請求假設我做一個API請求發送到以下網址:與身份驗證令牌

https://myapi.com/data

這是我建,並完全控制的API。

我想將此API的訪問權限限制爲僅允許我授權的應用程序。

我看到很多服務將爲您提供一個API密鑰,您可以將其添加到您的URL以供您訪問。

假設我有:

https://myapi.com/data?key=a6reallly7long2string9of0numbers2and4letters

然後在後臺我有類似:

class REST { 
    public $ACCESS_TOKEN = 'a6reallly7long2string9of0numbers2and4letters', 

    public function Auth($token){ 

     if($token===$this->ACCESS_TOKEN) return true; 

     return false; 
    } 
} 

如果值匹配,我允許訪問。

但是,所有人需要做的就是查看應用程序在客戶端進行的請求,並且他們擁有令牌。

即使我對令牌進行加密或使用單向散列,它們仍然具有解密爲正確結果的值。

如何通過URL標記爲API提供良好的身份驗證?

回答

1

我想將此API的訪問權限限制爲僅允許我授權的應用程序。

你在找什麼是「訪問授權」。事實上,一個訪問令牌似乎是一個很好的方式,但也有一些方面缺少

** Authorization頭**

默認情況下,該令牌應作爲發送一個HTTP標頭(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization)未在url

常用授權標頭類型是基本(基本認證)和承載(用於OAuth認證和授權)

令牌不應該是一個硬編碼恆定。它應該基於應用程序(以及可選的用戶)身份驗證來創建/生成。如果令牌是暫時的,那麼它仍然更好

現在你可以問 - 應用程序如何保持其憑據的祕密?每個應用程序都可以有他們自己的服務器服務(最終用戶不應該訪問應用程序憑證)或純Web應用程序應該由CORS標頭控制

只需搜索OAuth 2.0協議和JWT令牌(jwt應該是自包含的,籤)。

恕我直言,網址令牌可能是一個選項,因爲沒有其他的選擇,因爲URL通常被緩存,重新發送,記錄,...

** API經理**

如果你有資源(服務器)的話,你可以部署一個API管理器(也有開源的,商業或雲的選項,只是尋找一些)。 API經理將處理應用程序的註冊,授權和執行。

+0

謝謝,先生!是有道理的,我很欣賞這個徹底的回覆 – yevg

+0

好吧 - 這是一個非常廣泛的話題,很難在手機上撰寫綜合文章。我只是試圖給你一些開始點.. – gusto2