方案:用于调用 Web API 的 桌面应用

了解构建用于调用 Web API 的桌面应用所需的一切。

入门

如果尚未创建你的首个应用程序,请完成以下快速入门进行创建:

概述

编写桌面应用程序后,想要将用户登录到应用程序,并调用 Web API,如 Microsoft Graph、其他 Microsoft API 或自己的 Web API。 你有多个可选方案:

  • 可以使用交互式令牌获取:

    • 如果你的桌面应用程序支持图形控件,例如,它是一个 Windows.Form 应用程序、一个 Windows Presentation Foundation (WPF) 应用程序或一个 macOS 本机应用程序。
    • 或者,如果它是 .NET 应用程序,并且你同意在系统浏览器中与 Microsoft Entra ID 进行身份验证交互。
    • 或者,如果它是在 Chromium 实例上运行的 Node.js Electron 应用程序。
  • 对于 Windows 托管的应用程序,在已加入 Windows 域或 Microsoft Entra 的计算机上运行的应用程序也可以使用集成 Windows 身份验证以无提示方式获取令牌。

  • 最后,虽然不推荐但也可以在公共客户端应用程序中使用用户名和密码。 在某些方案(例如 DevOps)中仍需要它。 但是,使用它会对应用程序施加约束。 例如,它无法使需要执行多重身份验证(条件访问)的用户登录。 此外,应用程序将无法受益于单一登录 (SSO)。

    它也不适用于新式身份验证原则,仅出于遗留原因提供。

    Desktop application

  • 如果编写可移植命令行工具(可能是在 Linux 或 Mac 上运行的 .NET 应用程序),并且如果接受将身份验证委派给系统浏览器,则可以使用交互式身份验证。 .NET 不提供 Web 浏览器,因此会在系统浏览器中进行身份验证。 否则,在这种情况下,最好的选择是使用设备代码流。 此流还适用于没有浏览器的应用程序,例如物联网 (IoT) 应用程序。

    Browserless application

详情

桌面应用程序有几点具体性。 它们主要取决于你的应用程序是否使用交互式身份验证。

如果你不熟悉 OAuth 2.0 和 OpenID Connect 的标识和访问管理 (IAM),甚至不熟悉 Microsoft 标识平台上的 IAM,请将下列文章加入你的阅读列表。

虽然在完成第一个快速入门或教程之前不需要阅读这些文章,但是它们涵盖了平台不可或缺的主题,熟悉它们将有助于构建更复杂的方案。

后续步骤

转到此方案中的下一篇文章,应用注册