2017-08-01 49 views
1

如果我正在開發供公衆使用的移動應用程序 - 這意味着公司的一個內部應用程序,服務器不應該由第三方應用程序使用。如何驗證客戶端的內部應用程序

我應該只需要將客戶端_id傳遞給服務器以驗證它是一個有效的客戶端嗎?還是我需要讓客戶的祕密也通過?

我是否應該使用何種加密用於此目的?

https://www.oauth.com/oauth2-servers/client-registration/client-id-secret/ 這是說不要使用內部應用

所以對我做與移動應用程序,我應該通過客戶端ID每個請求的客戶端祕密?

回答

0

移動應用(或任何類型的本機應用)不能是機密的客戶,這意味着它無法保持客戶端祕密的祕密,因爲大家誰安裝的應用程序可以(在理論上)從代碼中提取它。因此,使用客戶端祕密是毫無意義的。

然而,你可以(也應該)限制你的授權服務器只重定向到(硬編碼)註冊的重定向端點您的應用程序的URL。這可以與App claimed URLs結合使用,以確保只有您的應用可以使用重定向端點。端點URL應使用HTTPS,以便驗證服務器的身份。

組織可仍然讓第三方應用程序,爲您的域名和使用證書釘扎其本地網絡中的DNS條目,但是這將是相當困難的,而不是可行的本地網絡之外。

+0

所以理論上,在應用程序,harcoded終點,也可以向右反編譯 – gates

+0

看到的端點URL或客戶端ID不是祕密,而且他們並不需要的人。 –

+0

「Android應用鏈接使用HTTP網址鏈接到您自己的網站域名,所以沒有其他應用程序可以使用您的鏈接」 - https://developer.android.com/training/app-links/index.html ......這(以及您擁有該域的事實)會阻止其他應用程序使用相同的重定向端點URL,並且您的授權服務器會阻止使用任何其他重定向端點URL。不確定如何在iOS,Windows Phone等上執行此操作 –

相關問題