2017-03-17 52 views
0

我有一個調用REST端點的JavaScript客戶端(HTML頁面)。我想要進行某種認證。我的問題是任何人都可以查看網頁的來源並查看JavaScript。我如何存儲一些祕密/密鑰來從JavaScript調用API?匿名JavaScript客戶端中的REST API認證

  1. 用戶是匿名的。
  2. 網頁不是由我們託管,但它允許我們掛鉤我們的JavaScript。我們沒有辦法編寫服務器端代碼。
+0

據我所知,沒有辦法做到這一點,你永遠不能相信客戶端 –

+0

你想認證誰是身份提供者(S)? – jwilleke

回答

0

有點安全的方法是將密鑰存儲在本地存儲/ indexeddb ..而不是在javascript中進行硬編碼。

或者混淆javascript代碼。 嘗試服務,如

https://javascriptobfuscator.com

或任何類似混淆的js代碼。

+0

我只想指出,這甚至沒有一點安全感。試圖找出密鑰/祕密的人或機器人不會從頂部到底部讀取混淆代碼,而只會看到實際調用網絡操作的代碼(例如,通過開發人員工具網絡選項卡),然後查找密鑰/祕密在任何時候都沒有。 –

0

OAuth2規範通過OAuth2 "implicit grant"爲純瀏覽器客戶端進行了規定。

隱式授權類型用於獲取訪問令牌(它不支持刷新令牌的發放),並針對已知操作特定重定向URI的公共客戶端進行了優化。這些客戶端通常使用JavaScript等腳本語言在瀏覽器中實現。

如果您正在與之交互的服務提供商支持OAuth2隱式授權流程 - 您是免費的。

它要求客戶端標識符(客戶端密鑰)鏈接到特定的redirect_uri,以便即使客戶端標識符丟失,也沒有其他人可以使用它 - 因爲oauth流總是重定向到相同的URI。

因此,保護​​實際的客戶端標識符變得並不重要,即使它被攔截,其他人也無法使用它來獲取訪問令牌。