Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oauth 在不同域上验证API后端的正确方法?(第三方cookie)_Oauth_Express_Session Cookies_Cors_Sails.js - Fatal编程技术网

Oauth 在不同域上验证API后端的正确方法?(第三方cookie)

Oauth 在不同域上验证API后端的正确方法?(第三方cookie),oauth,express,session-cookies,cors,sails.js,Oauth,Express,Session Cookies,Cors,Sails.js,我有一个web应用程序分为两部分 javascript前端。(myfrontend.com) API后端(node.js)。(mybackend.com) 这两个部分托管在不同的域上,我需要这样做,因为最终我将为同一后端构建更多前端(即移动web应用程序等) 我现在验证的方式是: 用户从myfrontend.com登录,凭证将被发送(ajax)到mybackend.com,并在那里根据数据库进行检查。如果他们不签出,什么都不会发生,mybackend.com会以错误代码响应 如果他们真的签出,我

我有一个web应用程序分为两部分

  • javascript前端。(myfrontend.com)
  • API后端(node.js)。(mybackend.com)
  • 这两个部分托管在不同的域上,我需要这样做,因为最终我将为同一后端构建更多前端(即移动web应用程序等)

    我现在验证的方式是:

  • 用户从myfrontend.com登录,凭证将被发送(ajax)到mybackend.com,并在那里根据数据库进行检查。如果他们不签出,什么都不会发生,mybackend.com会以错误代码响应

  • 如果他们真的签出,我会使用express.js的cookie会话,mybackend.com会用cookie响应(对于mybackend.com域)。服务器将从DB检索到的用户id链接到会话

  • 从那时起,对mybackend.com的所有请求都包含cookie,后端使用cookie查找会话,并使用会话中的用户id信息正确响应

  • 起初我对此有很多CORS问题,但在设置了所有正确的标题(如withCredentials等)之后,在每个浏览器中,一切都很好

    我认为这是一个非常优雅的解决方案,因为所有用户信息都被严格隔离在后端,前端从不接收任何用户数据,只有一个短暂的cookie

    所以我有两个问题:

  • 这样做对吗?OAuth的实现与此有何不同,有何优势

  • 如果我在chrome中关闭第三方cookie,这将停止工作。然而,在safari中关闭第三方cookie仍然可以使其正常工作。怎么回事?当您将ajax添加到“mybackend.com”时,为什么为“mybackend.com”获取cookie会被视为第三方cookie?如果我使用iframe或其他什么,可以吗?我应该担心这个吗

  • 是的,这是一个很好的模式。我在()中使用了相同的方法。OAuth更适用于三方认证:消费者、服务提供商和应用程序。 OAuth1.0需要“OAuthDance”来获取对时间敏感的访问令牌。OAuth2.0更容易,因为在消费者第一次获得令牌后,可以将其交换为充当密码的永久承载者。 OAuth Echo用于委托调用/请求

  • 与浏览器和/或cookie头的严格性有关吗