具有同源策略和 OAuth 的 REST API 身份验证
Posted
技术标签:
【中文标题】具有同源策略和 OAuth 的 REST API 身份验证【英文标题】:REST API Authentication with same origin policy and OAuth 【发布时间】:2012-04-30 09:08:21 【问题描述】:我正在编写一个 API,供我的 javascript 应用程序(同一个域,API 位于 api.example.com
和站点 example.com
以及第 3 方开发人员(移动设备、桌面设备等)使用。现在我想使用 OAuth但我不知道同时使用 OAuth 和使用具有相同来源策略的应用程序时的工作流程。
如何在我的网络应用中验证用户身份?当我发送用户名和密码时,我可以检查请求是否来自我的域,然后返回令牌吗?令牌将存储在 cookie 中,并在每次请求时发送回服务器。所以有两部分:
-
如果请求来自我的域,只需检查令牌,否则抛出 HTTP 异常。
如果不是我的域,请进行 OAuth 身份验证。
这可能吗?如何在 asp.net Web API 中进行设置? (主要是检查请求是否在同一个域中)
【问题讨论】:
【参考方案1】:我猜想登录您的网络应用程序时您没有使用 OAuth,而只是接受用户名和密码并开始会话?如果是这样,您真的不必为自己的网站使用 OAuth。
将会话 cookie 设置为在 *.example.com
上有效,您应该能够在 site.example.com
和 api.example.com
上验证该 cookie。
例子:
-
请求进入
api.example.com/verify_credentials.json
如果 OAuth 验证成功,则提供响应。
如果没有,请尝试 Cookie 验证 - 如果成功则提供
如果两者都失败,则返回 402 Unauthorized
。
这是一个关于跨子域共享 cookie 的帖子:ASP.NET Subdomain Cookie (parent and one subdomain)
【讨论】:
以上是关于具有同源策略和 OAuth 的 REST API 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
SPA 和 Spring Boot Rest Api 应用程序中具有授权代码授权类型的 OAuth2 流
oauth2 策略与 ruby on rails 与许多具有 API 的客户端
Arcgis api for js 开发的html中,同源策略不允许读取,跨域问题怎么处理