我想澄清一下情况。
您正在观察两个 SID:
1) 从 AAD,通过 Web 浏览器登录 AAD。
2) 来自 Azure 应用程序服务(Web 应用程序和移动应用程序),可能来自我们的客户端使用 LoginAsync。此方法将调用服务器控制的登录流程。
这是设计使然。 MobileServiceClient 获取应用程序服务令牌,并使用该令牌对您的移动应用程序进行身份验证。您可以通过对 .auth/me 端点执行 GET 操作,将从 Azure 应用服务获取的身份验证令牌交换为 AAD SID。
使用应用服务和 AAD 对客户端进行身份验证后,您可以通过调用 yoursite.azurewebsites.net/.auth/me 并解析所需声明的响应来获取有关 AAD 用户(或任何身份提供商)的更多信息:
({“类型”:“http://schemas.microsoft.com/identity/claims/objectidentifier http://schemas.microsoft.com/identity/claims/objectidentifier").
另一种策略是使用 ADAL(http://www.nuget.org/packages/Microsoft.IdentityModel.Clients.ActiveDirectory/ http://www.nuget.org/packages/Microsoft.IdentityModel.Clients.ActiveDirectory/)从客户端应用程序使用 AAD 登录,然后使用 AAD 访问令牌通过适当的 LoginAsync 重载获取移动应用程序令牌:
https://github.com/Azure/azure-mobile-apps-net-client/blob/master/src/Microsoft.WindowsAzure.MobileServices.iOS/Extensions/MobileServiceClientExtensions.cs#L55 https://github.com/Azure/azure-mobile-apps-net-client/blob/master/src/Microsoft.WindowsAzure.MobileServices.iOS/Extensions/MobileServiceClientExtensions.cs#L55
您添加的参数应采用以下格式:{"access_token":"[AAD access_token value]"}
Brett Samblanet 在 .NET 服务器上关于用户 ID 的 wiki 应该有助于理解正在发生的事情:https://github.com/Azure/azure-mobile-apps-net-server/wiki/Understanding-User-Ids https://github.com/Azure/azure-mobile-apps-net-server/wiki/Understanding-User-Ids