4

我正在尝试为我的 xamarin 应用程序开发无服务器后端。为此,我选择了azure functions。现在我已经知道Azure 移动应用为此目的提供了一个SDK ,我们可以通过它轻松地通过以下多种方式启用身份验证:1. Azure Active Directory 2. Facebook 3. Google 4. Microsoft 5. Twitter

现在我想在我的应用程序中允许使用其中至少 2 个登录,但我没有使用 azure 移动应用程序作为后端,而是使用 azure 函数。那么如何使用无服务器实现相同的结果呢?

提前致谢。

4

2 回答 2

2

AFAIK,当使用 Easy Auth(应用服务中的身份验证/授权)时,用户将被定向到使用Server-managed authentication{your-app-service-url}/.auth/login/{provider}进行日志记录。通过 Web 浏览器与您的 Web 应用程序交互的用户将拥有一个 cookie,并且他们可以作为您的 Web 应用程序的浏览器保持身份验证。对于其他客户端(例如移动客户端),标头中将包含 JWT ,移动应用客户端 SDK 将为您处理它。x-zumo-auth

根据您的场景,您正在尝试对您的函数使用基于用户的身份验证。我做了一些测试,你可以参考他们:

首先,我创建了一个用 C# 编写的 HttpTrigger 函数,然后将授权级别设置为匿名。

return req.CreateResponse(HttpStatusCode.OK, req.Headers,JsonMediaTypeFormatter.DefaultMediaType);

注意:我只返回具有应用服务身份验证/身份验证指定的特殊标头的所有标头。一些示例标题包括:

  • X-MS-CLIENT-PRINCIPAL-NAME
  • X-MS-CLIENT-PRINCIPAL-ID
  • X-MS-TOKEN-MICROSOFTACCOUNT-ACCESS-TOKEN
  • X-MS-TOKEN-MICROSOFTACCOUNT-EXPIRES-ON

更多细节可以参考App Service Token Store

然后我转到平台功能并在身份验证/授权下配置 Microsoft 身份验证提供程序。对于移动客户端,只需使用移动应用客户端 SDK 进行日志记录并调用函数端点,如下所示:

在此处输入图像描述

总之,您可以使用移动应用客户端 SDK 对您的函数应用进行身份验证。您可以根据需要配置身份验证提供程序,然后对于您的移动客户端,您可以在调用LoginAsync日志记录时设置相关的提供程序名称。对于您的功能,您可以检查X-MS-CLIENT-PRINCIPAL-IDP标头并检索特定提供商的当前用户信息和令牌。

于 2017-09-28T05:25:01.813 回答
0

由于 Azure Functions 构建在应用服务(如移动应用)之上,因此您仍然可以使用 Azure Active Directory 身份验证或 Http 触发函数的API 密钥

于 2017-09-27T15:29:09.977 回答