具有相同来源策略和OAuth的REST API身份验证

问题描述:

我正在编写一个API,供我的JavaScript应用程序(相同的域,API位于api.example.com和位置example.com和第三方开发人员(移动设备,桌面设备等))使用。我想使用OAuth,但我不知道在同时使用OAuth和使用我的应用程序时,如何使用相同的原始策略工作流程具有相同来源策略和OAuth的REST API身份验证

如何在我的Web应用程序中验证用户?当我发送用户名和密码,我可以检查请求是否来自我的域名,然后返回令牌吗?令牌将存储在Cookie中,并在每次请求时发送回服务器,因此有两部分:

  1. 如果请求来自我的域,只需检查令牌,否则抛出HTTP异常。
  2. 如果不是我的域名,请进行OAuth身份验证。

这可能吗?我如何去设置这个在asp.net web API? (主要是检查,如果该请求是在同一个域中的部分)

我猜测,登录到你不使用你的OAuth的Web应用程序,而只是接受用户名和密码,并启动一个会话?如果是这样,你不必为自己的网站而烦恼OAuth。

建立会话Cookie在*.example.com是有效的,你应该能够验证该cookie上都site.example.comapi.example.com

实施例:

  1. 请求到来时,如果OAuth的验证是成功的api.example.com/verify_credentials.json
  2. 即成响应。
  3. 如果不是,尝试Cookie验证 - 如果成功则投放
  4. 如果两者均失败,则返回402 Unauthorized

这里有一个关于线程之间共享子域的饼干:ASP.NET Subdomain Cookie (parent and one subdomain)