我們目前正在實施OAuth2以保護我們的新API並且不確定如何安全地提供所需的功能。我們需要允許從移動設備如下:使用OAuth2安全驗證移動訪問的選項
下載應用的用戶能夠拍攝照片,並提交它,而無需首先登錄後立即
雖然我們希望允許匿名用戶訪問,在用戶不需要登錄或註冊以使用某些功能的情況下,我們不希望允許對API進行未經驗證的訪問。這通常可以使用client credentials authorization flow來獲取和應用訪問令牌來實現,但這需要了解客戶端的祕密。從我讀到的內容來看,移動設備不被視爲可信客戶端,不應該包含客戶端密鑰,因此不應該能夠自行生成應用訪問令牌。
我們已經想出了幾個選項來完成這一要求,但希望對他們一些輸入:
- 嵌入在應用程序客戶端機密。從安全的角度來看,這看起來並不理想,但也許我們錯過了一個明顯的方法來保護它?我們至少針對iOS和Android。
- 離線生成應用訪問令牌並將其嵌入到應用中。仍然不是很安全,但至少祕密沒有暴露。
- 允許僅使用客戶端ID而不是訪問令牌訪問某些功能。這可能是最簡單的,但它引入了不一致性,需要多種身份驗證客戶端的方式。
- 構建並使用伴隨網絡應用爲移動應用生成應用訪問令牌。表面上看起來像是一個勝利者,但現在你必須確保訪問同伴應用程序!
如何安全地從移動設備使用OAuth2驗證對API的訪問權限,而無需用戶先登錄?
究竟是你想爲 「安全」 是什麼?您並未嘗試對用戶進行身份驗證,因爲您聲明瞭匿名訪問。您是否想要認證客戶端應用程序?嘗試通過加密連接進行通信? 「安全」有點模糊。 – Fantius
也許'安全'不是最好的術語。我們不想要的是匿名訪問API - 我們想知道哪個應用正在發出請求。我們需要的是允許應用程序發出請求,而無需用戶登錄。我將更新問題以嘗試澄清。 –
然後,應用程序需要有一些祕密,沒有別的。這是做到這一點的唯一方法。如果有什麼祕密,它可以模擬應用程序。 – Fantius