使用同源策略和OAuth进行REST API身份验证

3
我正在编写一个API,既要被我的JavaScript应用程序(同一域名,API位于api.example.com,站点位于example.com),也要被第三方开发人员(移动设备、桌面等)使用。现在我想使用OAuth,但不知道在同时使用OAuth和同源策略时的工作流程。
如何在我的Web应用程序中验证用户?当我发送用户名和密码时,我可以检查请求是否来自我的域,并返回令牌吗?该令牌将存储在cookie中,并在每个请求中发送回服务器。所以有两个部分:
  1. 如果请求来自我的域,只需检查令牌否则抛出HTTP异常。
  2. 如果不是我的域,则进行OAuth身份验证。
这种做法可行吗?我该如何在asp.net web API中设置它?(主要是关于检查请求是否在同一域中的部分)
1个回答

2
我猜想您的网站应用程序登录时并没有使用OAuth,而是接受用户名和密码并启动会话?如果是这样,您就不必为自己的网站费心使用OAuth。
将会话cookie设置为在*.example.com上有效,您应该能够在site.example.com和api.example.com上都验证该cookie。
例如:
1. 请求发送到api.example.com/verify_credentials.json 2. 如果OAuth验证成功,则提供响应。 3. 如果不成功,则尝试Cookie验证-如果成功,则提供响应。 4. 如果两者都失败,则返回402未经授权。
这里有一个关于在子域之间共享cookie的线程:ASP.NET Subdomain Cookie (parent and one subdomain)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接