使用azure函数在移动应用中进行身份验证

时间:2017-09-27 15:25:41

标签: azure authentication xamarin azure-functions serverless

我正在尝试为我的xamarin应用开发无服务器后端。为此我选择了 azure函数。 现在我已经知道 Azure移动应用为此提供了 SDK ,我们可以通过多种方式轻松启用身份验证  1. Azure Active Directiry  2. Facebook  3.谷歌  4.微软  5.推特

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

提前致谢。

2 个答案:

答案 0 :(得分:2)

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

根据您的方案,您正在尝试对您的功能使用基于用户的身份验证。我做了一些测试,你可以参考一下:

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

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

注意:我只返回带有App Service Authentication / Authentication指定的特殊标头的所有标头。一些示例标题包括:

  • X-MS-CLIENT主体名称
  • X-MS-CLIENT-委托ID
  • X-MS-TOKEN-MICROSOFTACCOUNT-ACCESS-TOKEN
  • X-MS-TOKEN-MICROSOFTACCOUNT-EXPIRES-ON

有关详细信息,请参阅App Service Token Store

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

enter image description here

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

答案 1 :(得分:0)

由于Azure功能是基于App Services构建的,例如移动应用程序,因此您仍然可以使用Azure Active Directory authenticationAPI keys来获取Http触发的功能。