我正在尝试为我的xamarin应用开发无服务器后端。为此我选择了 azure函数。 现在我已经知道 Azure移动应用为此提供了 SDK ,我们可以通过多种方式轻松启用身份验证 1. Azure Active Directiry 2. Facebook 3.谷歌 4.微软 5.推特
现在我想允许在我的应用程序中使用至少2个这样的登录,但我没有使用azure移动应用程序作为后端,而是使用azure函数。那么如何用无服务器实现相同的结果?
提前致谢。
答案 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指定的特殊标头的所有标头。一些示例标题包括:
有关详细信息,请参阅App Service Token Store。
然后我转到平台功能并在身份验证/授权下配置Microsoft身份验证提供程序。对于移动客户端,只需使用Mobile Apps客户端SDK进行日志记录并按如下方式调用功能端点:
总之,您可以使用Mobile Apps客户端SDK对您的功能应用进行身份验证。您可以根据需要配置身份验证提供程序,然后在调用LoginAsync
进行日志记录时,您可以为移动客户端设置相关的提供程序名称。对于您的功能,您可以检查X-MS-CLIENT-PRINCIPAL-IDP
标头并检索特定提供商的当前用户信息和令牌。
答案 1 :(得分:0)
由于Azure功能是基于App Services构建的,例如移动应用程序,因此您仍然可以使用Azure Active Directory authentication或API keys来获取Http触发的功能。