Facebook graph api 验证OAuth2登录信息,无需在每次请求时调用授权服务器 演员 前端(胖客户端Javascript应用程序),具有Facebook访问令牌 后端100%依赖OAuth2身份验证。所有请求都需要通过Facebook进行身份验证

Facebook graph api 验证OAuth2登录信息,无需在每次请求时调用授权服务器 演员 前端(胖客户端Javascript应用程序),具有Facebook访问令牌 后端100%依赖OAuth2身份验证。所有请求都需要通过Facebook进行身份验证,facebook-graph-api,oauth-2.0,cryptography,digital-signature,Facebook Graph Api,Oauth 2.0,Cryptography,Digital Signature,为了改变后端的用户数据,我要求用户通过Facebook登录。理想情况下,对于每个请求,我都会知道Facebook的用户ID(即graph.Facebook.com/me提供的ID) 问题1 有没有办法让graph.facebook.com/me返回的内容签名,这样我就不必在每次请求时都打电话给facebook进行验证,也不必在后端存储状态 情景2 如果问题1的答案是“不”,这意味着我必须发明我自己的。我想到以下几点: 用户将访问令牌发送到后端 后端调用,用我的密钥对结果进行签名,然后发送回客户端

为了改变后端的用户数据,我要求用户通过Facebook登录。理想情况下,对于每个请求,我都会知道Facebook的用户ID(即
graph.Facebook.com/me
提供的ID)

问题1 有没有办法让
graph.facebook.com/me
返回的内容签名,这样我就不必在每次请求时都打电话给facebook进行验证,也不必在后端存储状态

情景2 如果问题1的答案是“不”,这意味着我必须发明我自己的。我想到以下几点:

  • 用户将访问令牌发送到后端
  • 后端调用,用我的密钥对结果进行签名,然后发送回客户端
  • 每次客户端执行请求时,它都会包含以前包含的blob
  • 在后端的每个传入请求中,它都会验证签名,如果匹配,这意味着请求没有被篡改,我可以相信它来自先前验证的令牌
  • 问题2 如果我采用这个方案(在Facebook上签名,并在每次请求时发送),我如何安全地实施这个方案?是否有我可以阅读的资源可以告诉我:

  • 这项计划需要注意的事项
  • 使用哪种签名算法,如何安全地验证签名
  • 如何避免常见类型的攻击和愚蠢的错误

  • 谢谢

    现在还不清楚你到底想做什么,但我认为你应该看看网站上的文档

    引述:

    可以从客户端或代表客户端从服务器进行图形API调用。通过添加名为appsecret\u-proof的参数,可以更好地保护来自服务器的调用

    访问令牌是可移植的。可以使用Facebook的SDK在客户端生成的访问令牌,将其发送到服务器,然后代表该用户从该服务器拨打电话。访问令牌还可以被人计算机上的恶意软件或中间人攻击所窃取。然后,该访问令牌可以从一个完全不同的系统中使用,该系统不是客户端,也不是服务器,生成垃圾邮件或窃取数据

    您可以通过将appsecret_proof参数添加到来自服务器的每个API调用中,并启用设置以要求对所有调用进行证明来防止这种情况。这可以防止坏人从他们的服务器使用您的访问令牌进行API调用。如果您使用的是官方的PHPSDK,则会自动添加appsecret_-proof参数


    差不多了,但我想要相反的结果:我想要Facebook的回复被签名,这样我就可以将该值发送给用户,并在用户发回时信任它。这是不可能的。未实施