当前位置:  开发笔记 > 前端 > 正文

如果我使用基于令牌的身份验证,我应该如何加载图像

如何解决《如果我使用基于令牌的身份验证,我应该如何加载图像》经验,为你挑选了1个好方法。

我在域上有一个客户端应用程序,在域上client-domain.com有一个服务器端应用程序server-domain.com.服务器端有一个API.客户端应用程序将AJAX请求发送到服务器端应用程序.我使用基于令牌的身份验证,因此客户端应用程序在每个AJAX请求的头文件中发送令牌,例如:"授权:承载{某些令牌}".当我需要获取或发布一些数据时,它可以很好地处理AJAX请求.

但服务器端API也保留文件.例如图像.文件是私有的,只有经过身份验证的用户才能获取它们.我需要在标签的客户端显示这些图像.我无法使用它们,因为在这种情况下,浏览器不会向服务器端发送Authorization标头.

采用的解决方案是什么?客户端应用程序如何从服务器端API加载图像?



1> Jeferson Ten..:

有三种解决方法,最好的解决方法是使用签名的URL


    第一种方法只是使用签名哈希参数创建一个无需身份验证(匿名访问)的路由,该哈希参数指示是否可以加载资源。


服务器收到请求后,如果尚未达到到期时间,则必须验证guid,当然,请检查guid是否为有效签名。

多个文件/文档服务器(例如Dropbox,S3,CDN提供程序等)使用此方法。

在某些公司中查看该技术。

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-urls.html#private-content-overview-choosing-duration

https://client.cdn77.com/support/knowledgebase/cdn-resource/how-do-i-set-up-signed-urls


    第二种方法是通过带有图像URL的querystring传递令牌。

    建议不要使用此方法,因为要清楚公开URL,并且许多服务器有时会编写和公开所访问URL的公共日志。不幸的是,JWT通常向用户公开,用户可以进一步控制许多功能来进一步加载图像。


服务器收到请求后,必须通过querystring验证令牌,并使用内容进行响应。


    第三种方法创建一个经过身份验证的cookie来验证图像的访问。

    不建议使用此方法,因为该方法超出了API模式(通常基于Webapi /令牌的身份验证)。

服务器收到请求后,您需要验证验证cookie是否有效。


您能解释一下为什么选项2不能抵御XSS,大概是为什么选项1可以抵御XSS吗?在选项1中,我们如何生成和验证GUID?
@JefersonTenorio,那么,在第一种情况下,任何(经过身份验证/未经身份验证的)用户都可以在guid有效的情况下访问资源?有第一种方法的示例实现吗?我查看了这些链接,但是它们似乎非常针对他们所谈论的生态系统。
推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有