2017-10-12 75 views
1

Azure流量管理器可以与移动应用程序一起使用,特别是使用社交登录吗?我已经配置了一个流量管理器和两个应用服务(比如mobileapp1和mobileapp2)来处理它。他们似乎对邮递员和响应以及所有工作都很好。现在,我已经将流量管理器的URL声明为xamarin客户端应用程序中的客户端,并且当我登录到Azure时,该应用程序会引发异常。登录Facebook后,当我将令牌传递到使用此线路的服务器时在移动应用程序中使用Azure流量管理器

var user = await client.LoginAsync(MobileServiceAuthenticationProvider.Facebook, token); 

它在此行引发异常,表示无效操作。

为了继续这个疑问..我有两个移动应用程序连接到一个流量管理器。他们都配置了Facebook登录。那么,它应该工作吗?如果在用户注册时他/她被重定向到mobileapp1并且在那里完成了天蓝色认证,而在一些后续尝试中用户被重定向到mobileapp2,会发生什么情况。 mobileapp2的身份数据库是否了解用户?这是我使用移动应用程序附带的身份验证服务,而不是B2C。

回答

1

根据您的代码,您正在将Client-managed authentication用于Azure移动应用程序。对于App Service身份验证/授权(例如移动客户端类型),将向客户端发送JSON Web令牌(JWT),并在向移动后端发送请求时将其显示在x-zumo-auth标头中。有关更多详细信息,请参阅How authentication works in App Service。下面是使用与移动应用Azure的流量管理器时,智威汤逊的道理,我们可以使用jwt.io令牌解码:

enter image description here

对于JWT令牌,它将使用WEBSITE_AUTH_SIGNING_KEY环境变量签署audienceissuerClaims。有关更多详细信息,请参阅here关于如何为您的应用程序使用自定义身份验证。

每个移动应用有不同的WEBSITE_AUTH_SIGNING_KEY,你可以使用kudu并单击环境找到它。此外,我试图更新我的两个移动应用程序以使用相同的标志密钥,但因未获得许可而失败。

LoginAsync将发送以下请求:

POST https://<yourname>.trafficmanager.net/.auth/login/facebook 
Body {"access_token":"<access_token_from_facebook>"} 

你可以使用fiddler捕获网络跟踪。

Azure流量管理器可以与移动应用程序一起使用,专门用于社交登录吗?

对于自定义验证,您可以在web.config文件中配置符号密钥。对于社交登录并使用azure提供的身份验证,您不能在不同的移动应用程序之间共享标志密钥。此外,如果您将Routing method设置为Geographic,并且您的移动应用处于不同的地理位置,则我认为您的方案可能按预期工作。

UPDATE1:

一些试验后,我发现你能具体行动应用程式的“设置>应用程序设置”刀锋下WEBSITE_AUTH_SIGNING_KEY设置覆盖WEBSITE_AUTH_SIGNING_KEY环境变量,如下所示:

enter image description here

注意:签名密钥需要是SHA-256哈希字符串,您可以在两个移动应用程序之间同步密钥或生成您的密钥r自定义键。配置设置后,您可以利用kudu检查最新的WEBSITE_AUTH_SIGNING_KEY

UPDATE2:

我的问题是搞清楚如何使用社交权威性与在重定向按流量管理器的性能

基础作为官员发生两个不同的移动应用documentation提到有关交通路由方法性能如下:

性能:如果端点位于不同地理位置,并且希望最终用户使用“最近”端点的最低网络延迟,请选择性能。

我做了一些测试,你可以参考它。这是在我的流量管理器配置文件中的端点:

enter image description here

注:我的两个移动应用程序都配置了相同的Client Id我MSA认证,并在“设置>应用程序设置”设置相同WEBSITE_AUTH_SIGNING_KEY值编码/解码令牌。

对于我/api/values API终点,我只返回WEBSITE_HOSTNAME环境变量,如下所示:

return Request.CreateResponse(new { WEBSITE_HOSTNAME =Environment.GetEnvironmentVariable("WEBSITE_HOSTNAME") }); 

对于性能路由的方法,我的所有请求将被路由到bruce-mobile02.azurewebsites.net

enter image description here

对于加权路由方法,我配置为我的两个端点提供相同的重量。

enter image description here

+0

感谢您的答复:根据我的测试,如下用相同AuthenticationToken附着作为授权x-zumo-auth头值的请求将被路由到我的两个端点。我确实了解身份验证如何在Azure移动应用程序中发挥作用,但它更加清晰。我也明白,如果转移到其中一个移动应用程序的限制是地理上的,它将起作用,因为那时来自一个位置的一个用户将总是到达一个始终具有他/她的身份的服务器。但在我们的案例中,我们试图将性能作为衡量指标。 – Nitish

+0

我用一些研究更新了我的答案,你可以参考它。 –

+0

再次感谢布鲁斯。我理解你在说什么,但正如我所说的,我的问题是如何使用社交身份验证与两个不同的移动应用程序,其中流量管理器的重定向是基于性能进行的,并且在做了一些研究之后,似乎还不可能除非我使用B2C构建完整的自定义身份验证,而不依赖于Azure的开箱即用社交身份验证。 – Nitish

相关问题