webui-service - Oracle Solaris WebUI 服务
svc:/system/webui/server:default
WebUI SMF 服务是一个运行 WSGI 应用程序的 Apache 实例,通过 HTTPS 调用协调者。缺省情况下,WebUI 侦听端口 6787。要侦听端口 443 然后将请求重定向到端口 6787,请参见示例 1“侦听端口 443”。
在启动时自动生成自签名证书。还可以在部署期间提供证书,如示例 2“设置 SSL 证书”中所示。
协调者是最小的 Web 应用程序中间件,为 Web 应用程序提供以下服务:
用户验证
用户会话和 RAD 令牌保护
RAD-Rest 请求重定向
验证的文件服务
可以通过 REST API 使用以下名称空间来获得这些服务:
为 WebUI 框架及其所有应用程序保留。如果用户通过验证,则将重定向到显示板应用程序,否则将重定向到登录页面。
用于用户验证的 REST API
主体中包含以下 JSON 有效荷载的 POST 请求将为提供的 username 启动新的 PAM 验证对话:
{ "username": "username" "inactivity_timeout": timeout in minutes }
此请求通过 RAD 验证模块进行处理。
可以省略 username。在这种情况下,PAM 可能会提示您提供 username,具体取决与其配置。username 是普通的 Oracle Solaris username。
此外,inactivity_timeout 是可选的。缺省值为 24h。
如果成功,将返回 JSON 有效荷载以及头中的 auth-token cookie。
如果失败,将会返回 HTTP 未经授权 (401) 错误。
用户会话令牌的有效性取决于:
在请求主体中指定的会话不活动超时
可以通过 coordinator/absolute_timeout SMF 属性修改的绝对超时
关联隐藏 RAD 令牌的有效性
可以重用此 cookie,以便随后使用 WebUI 访问 RAD REST 接口,并且它还用作 WebUI 框架的用户会话。
返回的 JSON 主体具有以下组成部分:
state 组成部分具有下列值之一:
验证已成功完成
您正在验证对话中,需要更多信息才能继续。
您需要正确处理 messages 字段。
RAD/REST 验证模块中发生意外错误
messages 组成部分是 JSON 对象列表,其中包含要显示到用户界面的消息。消息具有两个元素:要输出的消息以及样式,样式可以是以下项之一并要求特定的行为,如下所述:
收集来自用户的输入,从而启用响应回显;例如,当 PAM 需要知道 username 时。
收集来自用户的输入,从而禁用响应回显;例如,要求提供口令。
向用户显示信息。您是否需要确认此内容取决于要显示的 UI。
向用户显示错误。您是否需要确认此内容取决于要显示的 UI。
以下是消息示例:
{ "state": "CONTINUE", "messages": [ { "style": "PROMPT_ECHO_OFF", "message": "Password: " } ] }
PUT 请求用于继续进行通过 POST 启动的对话,并向 WebUI 反馈更新。
请求主体必须至少包含收集的响应数据,类似如下:
{ "responses": [ "password" ] }
如果没有响应,您可以在 JSON 中将数组替换为空值(如同以上 POST 示例)。
如果未提示提供数据,可能出现此情况,例如,如果只是 TEXT_INFO 消息,此时不需要响应。
如果成功提交响应,您将收到类似以上 POST 示例的 JSON 有效载荷,以及状态和更多消息(如果需要任何更多提示)。
如果成功完成,您将收到状态值 SUCCESS。在这种情况下,您将收到的有效载荷中包含其他值,如以下 GET 请求中所述。
如果验证失败,您将收到 HTTP 错误代码 401(未经授权)。
头中包含 auth-token cookie 的 GET 请求将返回 JSON 有效载荷(如果该 cookie 有效)。
如果您正在进行 PAM 验证对话,您收到的有效载荷与状态值为 CONTINUE 时从 POST 或 PUT 收到的有效载荷相同。
如果您有完全验证的有效会话,您将收到状态值设置为 SUCCESS 的有效载荷,且 JSON 中包含一些其他值。
进行验证的用户名
如果 cookie 无效,将返回 HTTP 未经授权 (401)。
头中包含 auth-token cookie 的 DELETE 请求将尝试删除用户会话及其关联的 RAD 连接。如果成功,将返回以下 JSON 有效载荷:
{ username: username }
如果失败,将返回 HTTP 错误请求 400 错误。
RAD/Rest URL 访问点。允许您使用 REST 通过 HTTPS 处理 RAD 查询。
将 RAD-REST 请求与其 JSON 主体有效载荷重定向到内部 rad-http 守护进程进行处理。
有关更多有效载荷格式信息,请参见《RAD REST Developer Guide》。
显示板应用程序登录页面
分析 (Analytics) 应用程序登录页面
用于存储 js 框架文件 (JET) 的未经验证的目录
其他 WSGI 应用程序可以使用名称空间的其余部分。
以下配置属性是 webui/server:default 服务的 conf 属性组的成员:
符合 Apache 侦听指令格式的 ip:port 字符串列表。如果未指定任何值,则 Web 服务器将使用缺省端口侦听所有可用的 IP 地址。
缺省证书文件位置
缺省证书密钥文件位置
缺省 CA 证书路径位置
要在服务器用于标识自身的 Apache 配置中用作 ServerName 的值
绝对最长用户会话持续时间,以分钟为单位
包含当用户请求 https://hostname:6787/ 时将会重定向到的相关名称空间的字符串
用于确定 Apache 是否应该将 root URL (/) 重定向到 Solaris 显示板应用程序的布尔值。
用于确定服务是否应该侦听端口 443 然后将请求重定向到端口 6787 的布尔值
Apache 使用的密码
Apache 使用的安全协议
webui/server SMF 服务会在启动和刷新时将专门格式化的文件导入首选项系统。这些文件由已安装的应用程序定义,例如 analytics(7) WebUI 应用程序在 analytics(5) 中提供导入格式文档。
如果由于任何原因导致导入失败,则 webui/server SMF 服务将进入降级状态以标记导入失败。有关失败的详细信息,请参见 webui/server SMF 日志。
缺省情况下,WebUI 侦听端口 6787。要侦听端口 443 然后将请求重定向到端口 6787,请将 conf/redirect_from_https 属性值设置为 true。
$ svccfg -s webui/server:default svc:/system/webui/server:default> listprop conf/redirect_from_https conf/redirect_from_https boolean false svc:/system/webui/server:default> setprop conf/redirect_from_https=true svc:/system/webui/server:default> listprop conf/redirect_from_https conf/redirect_from_https boolean true svc:/system/webui/server:default> refresh svc:/system/webui/server:default> restart svc:/system/webui/server:default> exit $ svcprop -p conf/redirect_from_https webui/server:default true示例 2 设置 SSL 证书
Oracle Solaris 11.4 提供自签名证书以用于缺省 webui/server 配置。具有证书颁发机构 (Certificate Authority, CA) 提供的正确签名的证书的客户可能希望改用该证书。
要替换自签名证书配置,请执行以下过程,替换正确的文件名:
# SVC=svc:/system/identity:cert # svccfg -s $SVC setprop certificate/cert/pem_value \ = astring: "$(cat /path/to/signed/certificate.crt )" # svccfg -s $SVC setprop certificate/cert/private_key/pem_value \ = astring: "$(cat /path/to/signed/certificate.key )" # svccfg -s $SVC setprop certificate/ca/pem_value \ = astring: "$(cat /path/to/issuer/certificate.crt )" # svcadm refresh $SVC # svcadm restart -sr $SVC
由于 SMF 依赖项,重新启动 svc:/system/identity:cert 也会启动 svc:/system/webui/server。
sstore(1)、libsstore(3LIB)、analytics(5)、analytics(7)、attributes(7)、ssid(7)、sstore(7)、sstoreadm(1)、svcadm(8)
可以使用 svcadm 命令对 sstored 服务执行管理操作,例如启用、禁用或重新启动服务。