我正在使用Azure移动应用服务为Xamarin本机客户端和Web客户端创建后端。
我的用户需要一致的用户ID才能在所有平台上运行,因为我希望他们使用多个平台(至少是他们的手机和浏览器)。据我所知,至少有四个值(不包括我自己的)用于某种方式"识别"用户。
在客户端,使用Microsoft.WindowsAzure.MobileServices.MobileServiceUser
,当我查看user.Id时,我得到sid:18a8227509fb6******bfc976b646e5
。我不知道它来自何处。
登录后点击./auth/me
端点时,我发现user_id
声明显然是我的登录名。所以这必须来自在HTTP标头中旅行的access_token,对吧?
同样来自./auth/me
端点的名称标识符'声明如下:1015672*****60338
。这个属于国内流离失所者,因为我可以在国内流离失所者的帐户上看到它。还必须来自access_token,对吧?
在服务器端,我使用System.Security.Claims.ClaimsPrincipal
和ClaimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value
。当我通过直接调用端点在浏览器中显示它时,我获得与上面相同的值,但如果我从本机应用程序调用完全相同的端点,则会产生如下所示的值:{{1 }}。不知道它来自哪里。
这些值看起来在多个登录中看起来是一致的,这是一种安慰。 :)
很明显,我们正在寻找来自不同人的不同令牌。我应该使用哪个值适用于所有平台?
我倾向于认为我需要一个自定义端点,它返回我自己的信息以及它所链接的提供者。我不想直接从我的客户那里拨打IDP电话,而且必须存储的信息越少越好。
我非常困惑。
非常感谢任何帮助。
TIA