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

本文介绍了在开发具有应用服务后端的原生移动应用时身份验证和授权功能如何工作。 应用服务提供了集成的身份验证和授权,因此,移动应用可以在不更改应用服务中的任何代码的情况下让用户登录。 该功能可以方便地保护应用程序和处理每个用户的数据。

警告

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

有关应用服务中的身份验证和授权如何工作的信息,请参阅 Azure 应用服务中的身份验证和授权

在使用提供者 SDK 的情况下进行身份验证

在应用服务中配置所有项目后,可以将移动客户端修改为通过应用服务进行登录。 可以使用下述两种方式:

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

提示

大多数应用程序应使用提供者 SDK,这样可以让用户在登录时获得更一致的体验,可以使用令牌刷新支持,还可以获得提供者指定的其他权益。

使用提供者 SDK 时,用户一登录即可获得与操作系统结合更紧密的体验,而应用程序就运行在该操作系统中。 此方法还提供提供者令牌以及客户端上的某些用户信息,因此可以更轻松地使用图形 API 和自定义用户体验。 由于客户端上的代码可登录用户,所以此方法称为“客户端流”或“客户端定向流”。

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

注意

某些平台,如 Windows (WPF),仅适用于客户端定向流。 其他平台对服务器和客户端流都同样适用。 如果平台仅适用于客户端定向流,快速入门指南将对此进行说明。

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

在不使用提供者 SDK 的情况下进行身份验证

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

从客户端定向流提交令牌

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

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

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

请求正文必须符合文档中阐述的期望。