【发布时间】:2012-11-23 09:16:23
【问题描述】:
我创建了许多生成/使用 JSON 数据的 Web 服务,并使用 OAuth2 和 Bearer Tokens 保护它们,这些都可以正常工作。
但是现在我需要构建一个类似的 Web 服务来生成图像而不是 JSON(所以 JPEG/PNG 数据)。为了保持一致性,我还想使用 OAuth2/Bearer 令牌保护服务,但这样做会使服务在希望使用 标签显示图像数据的基于浏览器的应用程序中更具挑战性,因为
标签不会发送必要的
Authorization: Bearer ...bearer-token... HTTP 标头。
我可以看到两种解决方法:
服务的基于浏览器的客户端将使用 XHR Level2 和 HTML5 中的 Blob 和 Blob URL 方案将图像数据检索为 Blob,使用 Blob URL 方案为 Blob 生成 URL,然后动态创建一个指向 Blob URl 的 img 标签。仅显示图像就需要做很多工作!
修改 OAuth2 基础结构以生成除承载令牌之外的 Http cookie。修改服务 Authorirzation 以接受 Authorization: Bearer ... OAuth2 标头或 cookie 作为身份证明。 Cookie 与承载令牌、httpOnly 等具有相同的生命周期。基于浏览器的客户端可以仅依靠浏览器 cookie 支持来访问服务,可以像往常一样通过
标签尊重图像数据。易于浏览器客户端使用,但非标准。不记名令牌或 cookie 的安全风险概况似乎相同。
我是否忽略了后一种方法的任何安全问题?
是否有任何替代方法可以使用 OAuth2 保护图像/媒体资源?
【问题讨论】: