首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Azure身份验证Id不稳定

Azure身份验证Id不稳定
EN

Stack Overflow用户
提问于 2020-01-25 08:01:22
回答 1查看 51关注 0票数 0

我正在使用Azure移动应用程序服务和Xamarin表单。在我的应用程序中,我使用了在azure门户中配置的web社交媒体身份验证(Facebook、Twitter、Google)。

我使用从CurrentClient.Id获得的sid,以便将其与我的简易表格中的用户进行匹配。然而,对于一些用户,在使用相同的帐户和相同的提供商登录后,由于sid不同,在我的数据库中找不到匹配!我100%确定这是以前用来登录的同一个帐户,但我得到了不同的sid。那件事怎么可能?它不应该在每次登录时都保持不变,或者它的全部意义是什么?

EN

回答 1

Stack Overflow用户

发布于 2021-03-04 03:35:07

为此,您正在使用Azure应用程序服务身份验证。在传递给服务的JWT中有一个稳定的ID。您可以很容易地从/.auth/me端点获得它(请参阅https://docs.microsoft.com/en-us/azure/app-service/app-service-authentication-how-to#validate-tokens-from-providers )

当你得到/.auth/me并将X-ZUMO-AUTH头设置为从登录返回的authenticationToken时,user.userId字段将被填充一个稳定的ID。因此,下一个问题是“我如何在Node.js后端添加这个/比较这个?”幸运的是,HOW-TO FAQ for Node.js明确地回答了这个问题。简而言之,使用context.user.getIdentity() (一种异步方法)来获取身份,然后对其执行某些操作:

代码语言:javascript
运行
复制
function queryContextFromUserId(context) {
  return context.user.getIdentity().then((data) => {
    context.query.where({ id: data.userId });
    return context.execute();
  });
}

function addUserIdToContext(context) {
  return context.user.getIdentity().then((data) => {
    context.itme.id = data.userId;
    return context.execute();
  });
}

table.read(queryContextFromUserId);
table.insert(addYserIdToContext);
table.update(queryContextFromUserId);
table.delete(queryContextFromUserId);

这里真正的问题是“数据块中有什么?”它是一个包含“带有X-ZUMO-AUTH标头的/.auth/me端点生成的内容”的对象,并且依赖于提供者。

解决这个问题的机制。

  1. 调试客户端应用程序-登录完成后,检查客户端对象的CurrentUser并获取当前令牌
  2. 使用Fiddler、失眠症或邮递员获取.../.auth/me,并将X-ZUMO-AUTH标头设置为当前令牌
  3. 对每个验证方法重复一次,以确保每个验证方法的格式正确。

你现在可以在你的后端使用它们了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59905145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档