具有天蓝色功能的移动应用程序中的身份验证
authentication in mobile app with azure functions
我正在尝试为我的 xamarin 应用程序开发一个无服务器后端。为此,我选择了 azure functions。
现在我已经知道 Azure Mobile Apps 为此目的提供了一个 SDK,我们可以使用它轻松启用 Authentication 有多种方式如下
1. Azure 活动目录
2.脸书
3. Google
4.微软
5.推特
现在我想允许在我的应用程序中使用至少 2 个登录,但我没有使用 azure 移动应用程序作为后端,而是使用 azure 函数。那么如何使用无服务器实现相同的结果呢?
提前致谢。
由于 Azure Functions 构建在应用服务之上,例如移动应用,您仍然可以将 Azure Active Directory authentication or the API keys 用于 Http 触发函数。
AFAIK,当使用 Easy Auth(应用服务中的 Authentication/Authorization)时,用户将被定向到 {your-app-service-url}/.auth/login/{provider}
以使用 Server-managed authentication 登录。通过网络浏览器与您的网络应用程序交互的用户将拥有一个 cookie,并且他们可以作为您的网络应用程序的浏览器保持身份验证。对于其他客户端(例如移动客户端),JWT 将包含在 x-zumo-auth
header 中,移动应用程序客户端 SDK 会为您处理它。
根据您的情况,您正在尝试对您的函数使用 user-based 身份验证。我做了一些测试,你可以参考一下:
首先,我创建了一个用 C# 编写的 HttpTrigger 函数,然后将授权级别设置为匿名。
return req.CreateResponse(HttpStatusCode.OK, req.Headers,JsonMediaTypeFormatter.DefaultMediaType);
注意:我只是 return 所有 header 具有应用服务身份验证/身份验证指定的特殊 header。 header 的一些示例包括:
- 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
header 并检索特定提供商的当前用户信息和令牌。
我正在尝试为我的 xamarin 应用程序开发一个无服务器后端。为此,我选择了 azure functions。 现在我已经知道 Azure Mobile Apps 为此目的提供了一个 SDK,我们可以使用它轻松启用 Authentication 有多种方式如下 1. Azure 活动目录 2.脸书 3. Google 4.微软 5.推特
现在我想允许在我的应用程序中使用至少 2 个登录,但我没有使用 azure 移动应用程序作为后端,而是使用 azure 函数。那么如何使用无服务器实现相同的结果呢?
提前致谢。
由于 Azure Functions 构建在应用服务之上,例如移动应用,您仍然可以将 Azure Active Directory authentication or the API keys 用于 Http 触发函数。
AFAIK,当使用 Easy Auth(应用服务中的 Authentication/Authorization)时,用户将被定向到 {your-app-service-url}/.auth/login/{provider}
以使用 Server-managed authentication 登录。通过网络浏览器与您的网络应用程序交互的用户将拥有一个 cookie,并且他们可以作为您的网络应用程序的浏览器保持身份验证。对于其他客户端(例如移动客户端),JWT 将包含在 x-zumo-auth
header 中,移动应用程序客户端 SDK 会为您处理它。
根据您的情况,您正在尝试对您的函数使用 user-based 身份验证。我做了一些测试,你可以参考一下:
首先,我创建了一个用 C# 编写的 HttpTrigger 函数,然后将授权级别设置为匿名。
return req.CreateResponse(HttpStatusCode.OK, req.Headers,JsonMediaTypeFormatter.DefaultMediaType);
注意:我只是 return 所有 header 具有应用服务身份验证/身份验证指定的特殊 header。 header 的一些示例包括:
- 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
header 并检索特定提供商的当前用户信息和令牌。