调用 Web API 的桌面应用:应用注册

本文涵盖了桌面应用程序的应用注册详细信息。

支持的帐户类型

在桌面应用程序中支持的帐户类型取决于你想要启用的体验。 由于此关系,支持的帐户类型取决于要使用的流。

交互式令牌获取的受众

如果桌面应用程序使用交互式身份验证,则可通过任何帐户类型将用户登录。

桌面应用无提示流的受众

  • 若要使用集成 Windows 身份验证或用户名和密码,应用程序需要在你自己的租户中将用户登录,例如,当你是业务线应用 (LOB) 开发人员时。 或者,在 Microsoft Entra 组织中,如果你的应用程序是 ISV 方案,则它需要在你自己的租户中将用户登录。
  • 如果你使用传递商家对客户 (B2C) 颁发机构和策略的社交标识来将用户登录,则只能使用交互式和用户-密码身份验证。

重定向 URI

可以在桌面应用程序中使用的重定向 URI 取决于要使用的流。

通过在 Microsoft Entra 管理中心“应用注册”中为应用配置平台设置来指定应用的重定向 URI。

  • 对于使用 Web 身份验证管理器 (WAM) 的应用,重定向 URI 无需在 MSAL 中进行配置,但必须在应用注册中进行配置。

  • 对于使用交互式身份验证的应用:

    • 使用嵌入式浏览器的应用:https://login.partner.microsoftonline.cn/common/oauth2/nativeclient(注意:如果应用会弹出一个通常不包含地址栏的窗口,则它使用的是“嵌入式浏览器”。)
    • 使用系统浏览器的应用:http://localhost(注意:如果应用会使用系统的默认浏览器(例如,Edge、Chrome、Firefox 等)来访问 Microsoft 登录门户,则它使用的是“系统浏览器”。)

    重要

    作为安全最佳做法,我们建议显式设置 https://login.partner.microsoftonline.cn/common/oauth2/nativeclienthttp://localhost 作为重定向 URI。 如果未指定任何其他重定向 URI(不建议这样做),某些身份验证库(如 MSAL.NET)将使用默认值 urn:ietf:wg:oauth:2.0:oob。 在下一个主要版本中,此默认值将作为中断性变更进行更新。

  • 如果针对 macOS 构建本机 Objective-C 或 Swift 应用,请基于应用程序的捆绑包标识符采用以下格式注册重定向 URI:msauth.<your.app.bundle.id>://auth。 将 <your.app.bundle.id> 替换为应用程序的捆绑包标识符。

  • 如果生成 Node.js Electron 应用,请使用自定义字符串协议(而不是常规 Web (https://) 重定向 URI),以便处理授权流的重定向步骤,例如 msal{Your_Application/Client_Id}://auth(例如 msalfa29b4c9-7675-4b61-8a0a-bf7b2b4fda91://auth)。 不应为自定义字符串协议指定很容易猜到的名称,应遵循适用于本机应用的 OAuth2.0 规范中的建议。

  • 如果你的应用仅使用集成 Windows 身份验证或用户名和密码,则不需要为应用程序注册重定向 URI。 这些流前往 Microsoft 标识平台 v2.0 终结点并返回。 不会在任何特定 URI 上调用你的应用程序。

  • 若要使用守护程序应用程序中使用的客户端凭据流将设备代码流集成 Windows 身份验证以及用户名和密码与机密的客户端应用程序(它们都不要求重定向 URI)区分开来,请将应用程序配置为公共客户端应用程序。 为了实现该配置:

    1. Microsoft Entra 管理中心的“应用注册”中选择你的应用,然后选择“身份验证”。

    2. 在“高级设置”>“允许公共客户端流”>“启用以下移动和桌面流:”中,选择“是”。

      Enable public client setting on Authentication pane in Azure portal

API 权限

桌面应用程序为已登录用户调用 API。 它们需要请求委托的权限。 它们无法请求应用程序权限,权限仅在守护程序应用程序中处理。

后续步骤

转到此方案中的下一篇文章:应用代码配置