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