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本身并不禁止它。它可能不会推荐它,但它不禁止它。 –

相关问题