0

方案: 我有一個託管在Azure中的服務。該服務託管一個問題數據庫。我希望我的android應用程序通過Web應用程序身份驗證而不是委託身份驗證從服務中獲取數據。基本上我不希望用戶登錄。使用Android ADAL的Azure AD的Web應用程序身份驗證

研究: 我搜索了很多東西,並且在adal中,acquiretoken沒有任何變體需要客戶端密鑰才能使其工作。在.Net上,使用ClientCredentials也可以完成同樣的任務。 SO上最接近的問題是Authenticate the user on Azure AD using ADAL library from Android native app

答案沒有具體說明如何實現它。

回答

1

移動電話或其他Android設備上的應用程序爲public client applications(本機客戶端應用程序)。由於noted in the specification,公共客戶端不允許客戶端身份驗證方法。

從外行的角度來看,由於公共客戶無法保守客戶的祕密,由於代碼的存放和運行地點的本質,它也無法真正向AAD認證其客戶身份。例如,有人邪惡可以嗅探運行你的應用程序的本地客戶端設備的網絡流量,並用自己的代碼複製它,模仿你的應用程序。因此,只能使用更嚴格的身份驗證方法,如委託身份驗證。

如果您需要爲兩個服務之間的服務呼叫(僅應用程序調用)提供服務,則它們都必須是機密客戶端。從技術上講,你可以通過註冊一個Web應用程序ID和一個客戶端密鑰來讓你的Android應用程序充當一個機密的客戶端,但是我們的圖書館不會幫助你做到這一點。您將需要回到根源並自己進行HTTP調用以獲取令牌。

+0

我明白ADAL不提供它。但是由於DotNet有它,並且該機制也可以用於本地客戶端,爲什麼我們不能爲android客戶端提供相同的功能,並根據他的需求決定是否使用它。 –

+0

我想你並沒有完全理解我的帖子。 OAuth不允許它。期。現在,您當然可以使用OAuth錯誤,並向客戶端註冊錯誤的信息,但這取決於您是否犯了這些錯誤。我們的圖書館只允許您執行OAuth支持的內容。來自規範的 –

+0

;授權服務器**可以**與公共客戶端建立客戶端認證方法。 恕我直言,我明白你的帖子很好肖恩。沒有任何形式,我的回答表明我沒有。問題是何時Adal在Dot Net上提供相同的功能,爲什麼不適用於Android。而Oauth本身並不禁止它。它可能不會推薦它,但它不禁止它。 –

相關問題