适用于移动应用的 Azure 应用服务中的身份验证和授权

注意

此产品已停用。 有关使用 .NET 8 或更高版本的项目的替换,请参阅 Community Toolkit Datasync 库

本文介绍使用应用服务后端开发本机移动应用时身份验证和授权的工作原理。 应用服务提供集成的身份验证和授权,因此移动应用可以在不更改应用服务中的任何代码的情况下让用户登录。 它提供了一种简单的方法来保护应用程序并处理每用户数据。

警告

本文介绍 Azure 移动应用客户端 SDK 的 v4.2.0。 当前版本使用新的身份验证机制,不支持 Azure 应用服务身份验证 & 授权的方式相同。

若要了解如何在应用服务中进行身份验证和授权,请参阅 Azure 应用服务中的 身份验证和授权。

使用提供程序 SDK 进行身份验证

在应用服务中配置所有内容后,可以修改移动客户端以使用应用服务登录。 此处有两种方法:

  • 使用给定标识提供者发布的 SDK 来建立标识,然后获取对应用服务的访问权限。
  • 使用单行代码,使移动应用客户端 SDK 可以登录用户。

提示

大多数应用程序应在用户登录时使用提供程序 SDK 来获得更一致的体验,以使用令牌刷新支持,并获取提供程序指定的其他优势。

使用提供程序 SDK 时,用户可以登录到与运行应用的操作系统更紧密地集成的体验。 此方法还提供提供程序令牌和客户端上的一些用户信息,这使得使用图形 API 和自定义用户体验变得更加容易。 此方法称为“客户端流”或“客户端定向流”,因为客户端上的代码登录用户。

获取提供程序令牌后,需要将其发送到应用服务进行验证。 Azure 应用服务验证令牌。 然后,该服务将为客户端创建新的令牌。 移动应用客户端 SDK 具有管理此交换的帮助程序方法,并将令牌自动附加到应用程序后端的所有请求。 还可以保留对提供程序令牌的引用。

注意

某些平台(如 Windows(WPF)仅适用于客户端定向流。 其他服务器和客户端流的工作方式同样良好。 如果平台仅适用于客户端定向流,则快速入门指南将显示这一点。

有关身份验证流的详细信息,请参阅 应用服务身份验证流

不使用提供程序 SDK 的身份验证

如果不想设置提供程序 SDK,可以允许 Azure 应用服务为你处理登录。 Azure 移动应用客户端 SDK 将打开一个 Web 视图,用于选择并登录用户。 此方法称为“服务器流”或“服务器定向流”,因为服务器管理登录用户的进程。 客户端 SDK 永远不会收到提供程序令牌。

从客户端定向流提交令牌

使用客户端定向流时,首先获取 Azure 应用服务验证令牌所需的相关信息。 在大多数情况下,令牌将是访问令牌。 有关详细信息,请参阅 Azure 应用服务文档

然后,可以生成相应的 JSON 对象。 例如,如果在 WPF 应用程序中使用 MSAL 在 .NET 上执行客户端定向流,则可以使用以下代码:

var requestBody = new JObject(new JProperty("access_token", authResult.AccessToken));
var userInfo = await mobileClient.login("aad", requestBody);

请求正文必须与文档中所述的预期相匹配。