该组件旨在成为 OpenBMC 的“全能型”嵌入式 Web 服务器。
该 Web 服务器实现了几个不同的接口:
bmcweb 在协议层支持 http 和 https。TLS 通过 OpenSSL 支持。HTTP/1 和 HTTP/2 通过为 TLS 连接注册 ALPN 以及为 http 连接提供 h2c 升级头来支持。
bmcweb 支持多种身份验证协议:
这些身份验证类型均可通过运行时策略更改(通过相关的 Redfish API)或配置时选项来启用或禁用。所有支持用户名/密码的身份验证机制都会路由到 libpam,以便在身份验证实现中进行自定义。
bmcweb 中的所有授权都在路由时按路由确定,并符合 Redfish PrivilegeRegistry。
*注意:非 Redfish 功能映射到最接近的等效 Redfish 权限级别。
bmcweb 根据 meson 构建文件 进行配置。可用选项记录在 meson.options 中。
meson setup builddir
ninja -C builddir
如果在配置过程中宿主机系统上找不到任何依赖项,meson 将自动通过 bmcweb/subprojects 中提到的其 wrap 依赖项下载它们。
bmcweb 依赖系统中的某些数据来存储进程内部的持久化数据。有关存储的确切数据以及读写时间的详细信息,可从 persistent_data 命名空间中看到。
bmcweb 在 multipart 表单上传期间使用 /tmp/bmcweb 存储临时文件。该目录会在服务重启时由 systemd 通过服务文件中的 TemporaryFileSystem 指令自动清理。
当启用 SSL 支持且未找到可用证书时,bmcweb 将在启动服务器之前生成自签名证书。有关此证书构建参数的详细信息,请参阅 bmcweb 源代码。
bmcweb 支持多种形式的 http 压缩,包括 zstd 和 gzip。通过观察客户端头来判断是否支持压缩负载。
bmcweb 能够聚合来自卫星 BMC 的资源。有关如何启用和使用此功能的更多信息,请参阅 AGGREGATION.md。