云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

域名交易_cos对象存储_免费

小七 141 0

通过基于cookie的身份验证保护图像和视频

控制谁可以访问您的图像和视频,以及何时访问,可能是您的业务和安全工作流的一个重要问题。您可能只希望您的某些用户或员工访问某些资源,或者您可能需要确保原始资源是安全的,并且只传递资源的转换(编辑)版本,例如,显示水印或徽标。Cloudinary以通过动态url提供的各种操作而自豪,使用动态动态操作来交付公共资源有着巨大的好处。但在某些情况下,这种传递资源的灵活性可能过于宽松,因为只要更改或删除动态Cloudinary URL参数就可以动态地传递新图像。这可能导致用户调整URL以访问原始版本的图像,例如,查看没有添加水印的图像,减去隔离图像中特定人脸的裁剪参数,或者没有隐藏用户身份的像素化人脸效果,等等提供对图像访问的更多控制,Cloudinary提供了对上传经过身份验证的资源的现成支持。默认情况下,只能使用签名的传递URL访问这些经过身份验证的资源:具有签名的动态URL,在传递资源之前必须验证该URL。签名基于URL中包含的所有动态参数,因此更改URL中的任何参数或值都将使签名无效,从而拒绝访问请求的资源。网络研讨会以auth身份上载图像所需的一行代码示例诱惑:RubyPHPPythonNode.jsJavaAllRuby:复制到剪贴板云数据库:上传器.upload("包.jpg",:type=>:已验证)PHP:复制到剪贴板\Cloudinary\Uploader::上载("包.jpg",数组("type"=>"authenticated"));Python:复制到剪贴板云数据库.uploader.upload("包.jpg",type="已验证")节点.js:复制到剪贴板cloudinary.v2。上传器.upload("包.jpg",{type:"authenticated"},函数(错误,结果){控制台.log(结果);};Java:复制到剪贴板cloudinary.uploader()。上载("包.jpg",对象实用程序.asMap("type","authenticated"));提供经过验证的图像所需的一行代码示例(也可缩放到300像素的宽度)。请注意结果URL中的签名组件(使用SDK时自动添加):URLRubyPHPPythonNode.jsJavaJSjQueryReactVue.jsAngular.netandroidiosalll公司:复制到clipboardhttps://res.cloudinary.com/demo/image/authenticated/s--8_txrom--/c_scale,宽300/包.jpgRuby:复制到剪贴板cl\U图像标记("包.jpg",:width=>300,:crop=>"scale",:sign_url=>true,:type=>"authenticated")PHP:复制到剪贴板cl\U图像标记("包.jpg",array("width"=>300,"crop"=>"scale","sign_url"=>true,"type"=>"authenticated"))Python:复制到剪贴板云图像("包.jpg").image(width=300,crop="scale",sign_url=True,type="authenticated")节点.js:复制到剪贴板cloudinary.image("包.jpg,{width:300,裁剪:"scale",sign_url:true,type:"authenticated"})Java:复制到剪贴板cloudinary.url().transformation(new transformation().width(300).crop("scale")).signed(true).type("authenticated").imageTag("包.jpg");JS:复制到剪贴板cloudinary.imageTag('包.jpg',{width:300,裁剪:"scale",signUrl:true,type:"authenticated"}).toHtml();jQuery:复制到剪贴板$.cloudinary.image("包.jpg,{width:300,裁剪:"scale",类型:"authenticated"})反应:复制到剪贴板Vue.js版:复制到剪贴板角度:复制到剪贴板.Net:复制到剪贴板cloudinary.Api.UrlImgUp.Transform(new Transformation().Width(300).Crop("scale")).Signed(true).Type("authenticated").BuildImageTag("包.jpg")Android:复制到剪贴板媒体管理器.get().url().transformation(new transformation().width(300).crop("scale")).signed(true).type("authenticated").generate("包.jpg");iOS:复制到剪贴板图像视图.cldSetImage(cloudinary.createUrl().setType("authenticated").setTransformation(CLDTransformation().setWidth(300).setCrop("scale")).generate("包.jpg",signUrl:true)!,cloudinary:云数据库)在许多情况下,上面描述的签名传递方法可以满足您的身份验证需要,但是如果您希望将对资源的访问限制在特定的IP地址或特定的用户,或者在一段有限的时间内,直到它们被释放,该怎么办?为了支持更高级的身份验证要求,Cloudinary添加了新的身份验证功能:基于令牌的身份验证,提供IP限制和时间限制的URL。基于Cookie的身份验证,限制对具有有效Cookie的用户的访问。基于令牌的身份验证当您需要控制哪些设备可以访问图像时,基本的签名URL解决方案可能不够。假设您有尚未发布的产品图片,或者用户上传的图片不应公开(例如,签署的合同)。在这种情况下,您希望只允许您的员工访问,或者实际上,将请求仅限于从您的网络中启动的请求(静态IP地址)。这就是基于令牌的身份验证的来源在安身份验证令牌作为一组查询参数添加到图像传递URL,并用于在传递图像之前进行验证。生成基于令牌的身份验证URL非常简单,只需在SDK资源传递方法中添加sign_URL参数(设置为true)和auth_token参数。auth_token参数包含限制访问的详细信息,在我们的示例中,它将包括允许的ip值和您从中接收的加密密钥云端。为了例如,要仅在请求的IP地址为22.33.22.11时发送"contract123"映像:RubyPHPPythonNode.jsJavaAllRuby:复制到剪贴板cl_image_标记("contract123.jpg",:sign_url=>true,:auth_token=>{:key=>"MyKey",:ip=>"22.33.22.11"},:type=>"authenticated")PHP:复制到剪贴板cl_image_tag("contract123.jpg",数组("auth_token"=>数组("key"=>"MyKey","ip"=>"22.33.22.11"),"type"=>"已验证","sign_url"=>true));Python:复制到剪贴板cloudinary.cloudinary图像("contract123.jpg")。图像(type="authenticated",auth_token=dict(ip="22.33.22.11",key="MyKey"),sign_url=true)节点.js:复制到剪贴板cloudinary.image("contract123.jpg",{type:"已验证",身份验证令牌:{key:"MyKey",ip:"22.33.22.11"},sign_url:true})Java:复制到剪贴板cloudinary.url().转换(新转换()。类型("authenticated").authToken(new authToken("MyKey")。ip("22.33.22.11")。签名(true)).imageTag("contract123.jpg");基于Cookie的身份验证如果您不仅需要对访问特定资源的设备或资源可用时的设备进行细粒度控制,还需要对访问这些资源的特定人员或人员进行细粒度控制,该怎么办?例如,假设您正在开发一个网站,其中只有注册用户的成员资格部分。注册用户有权访问您的"普通"访问者不应看到的图像和视频。您还需要授予最多1小时的访问权限,同时确保您的注册用户不能只与非成员共享图像URL。在本例中,您将希望使用基于cookie的身份验证功能,该功能扩展了基于令牌的身份验证的功能,使您能够将经过身份验证的图像仅传递给具有有效cookie的用户。cookie的有效性可以与用户的会话过期相匹配,并且可以包括一个访问控制列表(ACL),用于配置可以使用cookie的URL路径(例如/image/authenticated/*)。与基于令牌的身份验证一样,您还可以按IP地址和/或时间限制cookie。在上面的示例中,当用户登录到您网站的成员资格部分时,您将为该用户生成一个cookie,该cookie允许他查看您的"已验证"图像。但是如果没有cookie的人试图打开同一个图像URL,他们会得到一个错误。示例:要创建一个有效期为60分钟的cookie,允许访问所有经过身份验证的映像,并使用MY_键进行签名:复制到剪贴板令牌选项={:key=>"我的密钥",:持续时间=>3600,:acl=>"/image/authenticated/*"}cookieToken=云数据库:Utils.generate_auth_令牌(令牌选项)Cookies with Transformations基于cookie的身份验证的灵活性还为每个登录到您系统的用户提供了自定义访问权限的方法。由于Cloudinary使用动态url来交付资源,cookie中的访问控制列表路径可以包括根据公司特定细节定制的转换,例如,在图像上添加公司徽标作为覆盖(例如/image/authenticated/l)_徽标.png/*). 这意味着cookie只能用于验证包含给定转换的url。例如,可以在cookie中设置ACL,以便它授权所有宽度为700像素的图像,并在右上角显示公司徽标拐角:复制到剪贴板:acl=>"/image/authenticated/w_700/l_徽标,g_north_east/*"为了简化工作,您可以将任何一组转换组合为一个命名转换,然后简单地将命名转换添加到ACL中。例如,在ACL中添加一个名为"authorized"的转换,其中"authorized"已设置为上述转换:(w_700/l_logo,g氷u east)。复制到剪贴板:acl=>"/image/authenticated/t_authorized/*"Cookie和特定于用户的转换传递经过身份验证的图像的潜在缺点之一是接收者可以轻松地保存