guide私有类别

“私有类别”功能允许管理员将特定类别标记为“私有”。如果将类别设置为私有,则该类别或其任何子文件夹中的所有资产都将受到保护。

标记为“私有”的类别需要特殊授权才能查看或下载其中的资产。

CKBox 通过其 UI 自动处理资产的授权流程。

# 将类别设为私有

  1. 要将类别设为私有,请转到 CKBox 管理面板的“设置”部分。
  2. 选择“资产类别”选项卡。

List of categories.

  1. 单击要设为私有的类别的“编辑”按钮。
  2. 选中将此类别设为私有复选框,然后保存。

Making category private.

  1. 私有类别在类别列表中标记为私有

Private categories.

注意:将类别设为私有后,访问该类别中的所有资产都需要额外的授权。
如果未执行预授权,这可能会导致嵌入内容出现故障。

# 授权流程

要访问私有类别中的资产,用户必须使用来自令牌端点的有效 JWT 向/authorize端点发出 API 请求,以获取授权 cookie。
用于授权的 cookie 是使用 CHIPS(具有独立分区状态的 cookie)的分区 cookie。它们确保对受保护资源的安全和范围访问。

授权后,具有适当权限的用户将能够预览或下载资产。

获取授权 cookie 的步骤

  1. /authorize端点发送带有Authorization头部的 JWT 的 GET 请求。
  2. 确保在 fetch 请求中使用credentials: include,以允许浏览器处理服务器返回的任何Set-Cookie头。
  3. 如果 JWT 有效,响应将在浏览器中设置一个 cookie(CKBox-Auth__Host-CKBox-Auth),然后将用于后续对受保护资源的请求。
const formData = new FormData();
formData.append('token', {{JWT}});

fetch('https://{{CKBOX_API}}/categories/authorizePrivateAccess', {
  method: 'POST',
  mode: 'no-cors',
  body: formData
  credentials: 'include'  // Ensures cookies are handled
})
.then(response => {
  if (!response.ok) {
    throw new Error('Authorization failed');
  }
});

# 访问控制流程

  1. 用户首先通过令牌端点获取 JWT。
  2. 用户向/authorize发出请求以接收授权 cookie。浏览器将 cookie 附加到所有与获取资产内容相关的后续 API 调用。
  3. 系统检查用户的权限,以确保他们有权访问私有类别。
  4. 使用授权 cookie 和有效权限,用户可以访问和下载资产。

# 用例示例:具有敏感嵌入内容的 CMS

具有处理包含嵌入内容(如图像或文档)的敏感信息的 CMS。为了确保这些敏感数据受到保护,管理员可以将包含这些资产的某些类别标记为“私有”。这意味着嵌入在 CMS 内容中的所有资产都需要适当的授权才能访问。

在这种情况下

  • 只有在 CMS 中具有有效会话的用户才能通过使用GET:/authorize端点进行预授权来访问嵌入的资产。
  • 可以在用户登录后立即进行/authorize调用,以确保敏感内容对授权用户可见。当用户注销时,可以清除授权 cookie,撤销访问权限。
  • 如果尝试在没有适当授权的情况下访问 CMS 外部的内容,CKBox 将返回 401 未授权错误。