我想用http觸發器創建C#Azure函數。我想用API Key來保護它,爲每個客戶提供一個單獨的密鑰,並且該功能應提供客戶特定的數據,以便確定誰在呼叫它。如何爲Azure函數配置客戶特定的API鍵
我可以使用Azure功能API密鑰來識別客戶嗎?獲取已通過的密鑰的名稱?或者在azure函數中沒有辦法知道哪個密鑰用於驗證請求?
如果有像GetApiKeyName()
這樣的方法,我可以根據我的數據庫中的客戶列表來檢查密鑰名稱,並根據誰在調用函數返回不同的數據。例如想象我有一個銷售跟蹤系統,我的功能是/api/GetMonthlySales
。如果客戶1用他們的API密鑰調用函數,他們應該獲得他們的月度銷售額,如果客戶2調用它,他們會得到不同的金額。
如果這不可能,那就意味着我需要爲每個客戶提供額外的驗證數據,以便他們傳遞給每個函數調用,例如,客戶ID和密鑰。但是這違背了使用Azure函數API密鑰的目的,對吧?
類似的情況是,如果我想在客戶打電話給我的功能時收費。如何識別哪個客戶正在呼叫我的功能?
現在我決定使用Azure身份驗證*和*將這些相同的API密鑰放入數據庫。然後我知道Azure確保只有具有有效密鑰的人才能調用該函數,然後通過抓取querystring'code'參數並在數據庫中查找來查找是誰。要配置新客戶,我需要將它們添加到Azure Function auth,然後將它們添加到我的數據庫。希望將來會有內置的支持,但如果你的客戶很少,這種方式不會太麻煩。 – Rory