调用 Web API 的桌面应用:应用注册
本文涵盖了桌面应用程序的应用注册详细信息。
支持的帐户类型
在桌面应用程序中支持的帐户类型取决于你想要启用的体验。 由于此关系,支持的帐户类型取决于要使用的流。
交互式令牌获取的受众
如果桌面应用程序使用交互式身份验证,则可通过任何帐户类型将用户登录。
桌面应用无提示流的受众
- 若要使用集成 Windows 身份验证或用户名和密码,应用程序需要在你自己的租户中将用户登录,例如,当你是业务线应用 (LOB) 开发人员时。 或者,在 Microsoft Entra 组织中,如果你的应用程序是 ISV 方案,则它需要在你自己的租户中将用户登录。 Microsoft 个人帐户不支持这些身份验证流。
- 如果你使用传递商家对客户 (B2C) 颁发机构和策略的社交标识来将用户登录,则只能使用交互式和用户-密码身份验证。
重定向 URI
可以在桌面应用程序中使用的重定向 URI 取决于要使用的流。
通过在 Microsoft Entra 管理中心“应用注册”中为应用配置平台设置来指定应用的重定向 URI。
对于使用 Web 身份验证管理器 (WAM) 的应用,重定向 URI 无需在 MSAL 中进行配置,但必须在应用注册中进行配置。
对于使用交互式身份验证的应用:
- 使用嵌入式浏览器的应用:
https://login.microsoftonline.com/common/oauth2/nativeclient
(注意:如果应用会弹出一个通常不包含地址栏的窗口,则它使用的是“嵌入式浏览器”。) - 使用系统浏览器的应用:
http://localhost
(注意:如果应用会打开系统默认浏览器(如 Edge、Chrome、Firefox 等)来访问 Microsoft 登录门户,则表示它使用“系统浏览器”。)
重要
作为安全最佳做法,我们建议显式设置
https://login.microsoftonline.com/common/oauth2/nativeclient
或http://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
(例如 msal00001111-aaaa-2222-bbbb-3333cccc4444://auth)。 不应为自定义字符串协议指定很容易猜到的名称,应遵循适用于本机应用的 OAuth2.0 规范中的建议。如果你的应用仅使用集成 Windows 身份验证或用户名和密码,则不需要为应用程序注册重定向 URI。 这些流前往 Microsoft 标识平台 v2.0 终结点并返回。 不会在任何特定 URI 上调用你的应用程序。
若要使用守护程序应用程序中使用的客户端凭据流将设备代码流、集成 Windows 身份验证以及用户名和密码与机密的客户端应用程序(它们都不要求重定向 URI)区分开来,请将应用程序配置为公共客户端应用程序。 为了实现该配置:
在 Microsoft Entra 管理中心的“应用注册”中选择你的应用,然后选择“身份验证”。
在“高级设置”>“允许公共客户端流”>“启用以下移动和桌面流:”中,选择“是”。
API 权限
桌面应用程序为已登录用户调用 API。 它们需要请求委托的权限。 它们无法请求应用程序权限,权限仅在守护程序应用程序中处理。
后续步骤
转到此方案中的下一篇文章:应用代码配置。