安全的,我發展通過固定的OAuth2和春天有個REST API將從一個Android應用程序(客戶端)使用。爲了訪問我的API的任何端點,需要的OAuth2訪問令牌,並通過認證頭在一個類似的方式移交給端點:OAuth2用戶端編號和祕密
「授權」 - 「承載accesstokenhere」
爲了獲取接入令牌,用戶名和密碼必須提供,以及作爲客戶端ID和客戶端密鑰(它們所代表的Android應用)。 ClientID的和客戶端祕密都交給的方式通過認證頭令牌端點與此類似,它是由Spring規定:
「授權」 - 「基本的clientId:clientSecret」
如果客戶端ID和客戶端密鑰匹配服務器上定義的客戶端,並且用戶存在並且密碼正確,則返回訪問令牌和刷新令牌。
現在我的問題是我如何安全地將我的clientId和客戶端機密存儲在Android應用程序中,確保有人逆向工程我的應用程序無法訪問它們?
另外,如果我是開發iOS應用程序(第二個客戶端),這將是明智的使用從安全POV不同的clientID的和客戶端祕密?
您的客戶端是一個公共客戶端,無需客戶端密鑰,因爲你不能隱藏祕密。另見:https://stackoverflow.com/a/43391526/5277820和https://stackoverflow.com/questions/44044528/how-to-secure-oauth-2-0-client -id和客戶端祕密。 – dur