Azure Active Directory 中的本机应用程序和 Web 应用程序之间的确切区别是什么

What is the exact difference between native app and web app in Azure Active Directory

当我们在 Azure Active Directory 中注册应用程序以使用图形 api 时,我看到有两种类型的应用程序 Web 应用程序和本机应用程序。

创建 Web 应用程序时,请求了两个值 1. 登录 URL 和 2. 应用程序 ID url。这些值有什么用?我们需要现实世界 url 还是只需要 https://localhost:randomePort 就够了?

另一方面,在创建本机应用程序时,我只能看到一个必需值 'Redirect URL'。

我可以使用 REST 调用获取 Web 应用程序的访问令牌

POST https://login.microsoftonline.com/<tenant-id>/oauth2/token

grant_type      client_credentials
client_id       (the client ID of the calling service application in the AD)
client secret   (the key configured in the calling service application in the AD)
resource        https://graph.windows.net

但是如何使用此类 REST 调用获取本机应用程序的访问令牌?因为本机应用程序没有客户端密码

关于权限,对于本机应用程序,我只能看到可用的委托权限选项,而对于网络应用程序,我可以看到应用程序权限和委托权限选项。

还有一件事,上面的 REST 调用示例对应用程序进行身份验证,我如何使用 REST 调用使用他的凭据对用户进行身份验证?

本机应用程序是 public OAuth2 术语中的客户端。这些应用程序旨在 运行 在设备上并且不受信任维护秘密 - 因此,它们在目录中的条目没有相应的 属性。没有秘密,就无法断言应用程序的身份 - 因此此类应用程序无法获得应用程序级别的权限,门户用户体验反映了这一点。 相反,用 OAuth2 的说法,Web 应用程序是机密客户端。他们可以为他们的用户获取委托令牌,但他们也可以使用客户端凭据为自己获取令牌。 本机应用程序可以通过 OAuth2 授权授予为用户获取令牌。您可以在 https://azure.microsoft.com/en-us/documentation/articles/active-directory-authentication-scenarios/ 找到所有受支持拓扑的完整概述。每个场景描述都指向更多面向实施的指导。