可以通过JS进行身份验证吗? (使用第三方身份验证)

时间:2016-07-21 21:00:31

标签: javascript python django authentication twitter-fabric

我希望用Twitter Fabric's Digits覆盖我的Django后端的身份验证。数字允许您在没有密码的情况下登录,这是手机移动身份验证。

诀窍是,它们为您的前端(JS)提供了一个嵌入小部件。此小组件允许您发送请求并返回用户是否经过身份验证。

目前我有两个想法将它与Django集成。

  1. 嵌入脚本,等待响应,然后将响应发送到后端。让后端解析脚本。
  2. 找出端点并从后端ping它们,基本上用Python重写Fabric的Digits JS函数。
  3. 我真的很想做到这一点,但我不确定这是否足够安全。请求的响应可以被欺骗吗?选项1是否存在漏洞?

1 个答案:

答案 0 :(得分:2)

选项#1还不够,但您确实需要将响应发送到服务器,而您不需要执行#2。

如果您刚刚使用了第一个选项并且未对响应进行任何服务器端验证,则他们可以轻松模拟您将转发到后端的响应。记住(忽略防火墙)用户可以绕过所有客户端验证向服务器后端发送他们想要的任何内容。

您需要做的是使用后端的Digits API验证服务器从前端收到的响应是否有效。 See the documentation

  

在您的网络服务器上,通过SSL,您可以使用此响应安全地请求Digits用户的用户ID,电话号码和oAuth令牌。使用此方法,无需为Digits配置OAuth签名,或配置和托管回调网址。

     

作为额外的安全措施,您需要访问您的虚拟主机:

     
      
  • 验证oauth_consumer_key标头值与您的oauth使用者密钥匹配,以确保用户登录您的网站
  •   
  • 通过解析uri并断言域名为api.twitter.com或www.digits.com来验证X-Auth-Service-Provider标头,以确保您致电Twitter。
  •   
  • 验证来自verify_credentials调用的响应以确保用户成功登录
  •