根据您的代码,您正在使用客户端管理的身份验证与 Azure 移动应用程序。对于应用程序服务身份验证/授权,例如移动客户端类型,将向客户端颁发 JSON Web 令牌 (JWT),并将其显示在x-zumo-auth
向移动后端发送请求时的标头。想要了解更多详情,您可以参考身份验证在应用服务中的工作原理。这是将 Azure 流量管理器与移动应用程序一起使用时的 JWT 令牌,我们可以使用jwt.io解码令牌:
对于 JWT 令牌,它将使用WEBSITE_AUTH_SIGNING_KEY
要签名的环境变量audience
, issuer
, Claims
。想要了解更多详情,您可以参考here有关如何为您的应用程序使用自定义身份验证的信息。
每个移动应用程序都有不同的WEBSITE_AUTH_SIGNING_KEY
,你可以使用kudu然后单击环境找到它。此外,我尝试更新我的两个移动应用程序以使用相同的签名密钥,但由于没有权限而失败。
Your LoginAsync
将发送以下请求:
POST https://<yourname>.trafficmanager.net/.auth/login/facebook
Body {"access_token":"<access_token_from_facebook>"}
你可以使用fiddler捕获网络跟踪。
Azure 流量管理器可以与移动应用程序一起使用,特别是通过社交登录吗?
对于自定义身份验证,您可以在 web.config 文件中配置签名密钥。对于社交登录并使用azure提供的身份验证,您无法在不同的移动应用程序之间共享签名密钥。此外,如果你设置Routing method
to Geographic
并且您的移动应用程序位于不同的地理位置,我假设您的场景可能会按预期工作。
UPDATE1:
经过一番试验,我发现你可以具体说明WEBSITE_AUTH_SIGNING_KEY
在移动应用程序的“设置 > 应用程序设置”边栏选项卡下进行设置以覆盖WEBSITE_AUTH_SIGNING_KEY
环境变量如下:
Note:签名密钥需要是 SHA-256 哈希字符串,您可以在两个移动应用程序之间同步密钥或生成自定义密钥。配置完成后,您可以利用 kudu 查看最新的WEBSITE_AUTH_SIGNING_KEY
.
UPDATE2:
我的问题是弄清楚如何在两个不同的移动应用程序中使用社交身份验证,其中流量管理器根据性能进行重定向
作为官方文档提到流量路由方法表现如下:
表现:当您的端点位于不同的地理位置并且您希望最终用户使用网络延迟最低的“最近”端点时,请选择“性能”。
我做了一些测试,你可以参考一下。这是我的流量管理器配置文件下的端点:
Note:我的两个移动应用程序配置相同Client Id
对于我的 MSA 身份验证并设置相同的WEBSITE_AUTH_SIGNING_KEY
“设置 > 应用程序设置”下的值,用于对令牌进行编码/解码。
For my /api/values
API端点,我只是返回WEBSITE_HOSTNAME
环境变量如下:
return Request.CreateResponse(new { WEBSITE_HOSTNAME =Environment.GetEnvironmentVariable("WEBSITE_HOSTNAME") });
For the 表现路由方法,我所有的请求都会被路由到bruce-mobile02.azurewebsites.net
:
For the Weighted路由方法,我为两个端点配置了相同的权重。根据我的测试,具有相同的请求AuthenticationToken
附加为x-zumo-auth
授权的标头值将路由到我的两个端点,如下所示: