具有相同来源策略和OAuth的REST API身份验证
问题描述:
我正在编写一个API,供我的JavaScript应用程序(相同的域,API位于api.example.com
和位置example.com
和第三方开发人员(移动设备,桌面设备等))使用。我想使用OAuth,但我不知道在同时使用OAuth和使用我的应用程序时,如何使用相同的原始策略工作流程具有相同来源策略和OAuth的REST API身份验证
如何在我的Web应用程序中验证用户?当我发送用户名和密码,我可以检查请求是否来自我的域名,然后返回令牌吗?令牌将存储在Cookie中,并在每次请求时发送回服务器,因此有两部分:
- 如果请求来自我的域,只需检查令牌,否则抛出HTTP异常。
- 如果不是我的域名,请进行OAuth身份验证。
这可能吗?我如何去设置这个在asp.net web API? (主要是检查,如果该请求是在同一个域中的部分)
答
我猜测,登录到你不使用你的OAuth的Web应用程序,而只是接受用户名和密码,并启动一个会话?如果是这样,你不必为自己的网站而烦恼OAuth。
建立会话Cookie在*.example.com
是有效的,你应该能够验证该cookie上都site.example.com
和api.example.com
。
实施例:
- 请求到来时,如果OAuth的验证是成功的
api.example.com/verify_credentials.json
- 即成响应。
- 如果不是,尝试Cookie验证 - 如果成功则投放
- 如果两者均失败,则返回
402 Unauthorized
。
这里有一个关于线程之间共享子域的饼干:ASP.NET Subdomain Cookie (parent and one subdomain)