簡體   English   中英

授權標頭中的多個參數不能與基本身份驗證一起使用

[英]Multiple parameters in Authorization header not working with Basic Auth

我正在使用SSL上的基本身份驗證來創建基本API。 該API將用在移動應用程序中,並允許創建具有其他相當基本功能的帳戶。

我決定將API密鑰硬編碼到移動應用程序中,以傳遞給API,從而使黑客更難訪問不需要登錄(基本身份驗證)的API部分。 根據我的閱讀,API密鑰應存儲在HTTP請求的Authorization標頭中。

授權標頭:

Key ~@3o42jf!34vm3.!

然后,我的PHP API讀取標頭並確保密鑰正確。 如果可以,則可以使用API​​的基本元素。

嘗試執行需要將登錄名傳遞到API的任務時,就會出現問題。 我的授權標頭如下所示:

Key ~@3o42jf!34vm3.! Basic c3RhY2tAZ21haWwuY29tOnRlc3RpbmcxMjM=

該API仍可以讀取密鑰,但是現在未設置我使用$_SERVER['PHP_AUTH_USER']$_SERVER['PHP_AUTH_PW']訪問的電子郵件/密碼字符串。 解決此問題的唯一方法是通過apache_request_headers()手動讀取標頭嗎?

由於這是一個自定義標頭,因此應為其使用單獨的標識符。 例如:

X-Api-Key: ~@3o42jf!34vm3.!

然后,您可以保留基本的auth標頭(因為如果在其中插入自定義數據,它的確不起作用)。

在PHP方面,可以使用$_SERVER['HTTP_X_API_KEY']訪問您的自定義標頭

另外,請確保您的請求標頭采用正確的格式。 應該是這樣的:

GET /api/v1/tickets HTTP/1.1
Host: 123.123.123.123
Authorization: Basic c3RhY2tAZ21haWwuY29tOnzzz3RpbmcxMjM=
X-Api-Key: z7='sL(=}24qv'3F
Cache-Control: no-cache
Postman-Token: e657c66f-2db1-bf76-78c5-777305b5bfe6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM