跳到主要内容

ARC 2.0.0-beta.25

调用者身份与安全

UI tree 可以表达意图,但身份、path scope、写权限和嵌入信任仍是独立的 server-side 决定。

AUP tree 不是 access-control list。隐藏一个 node、命名一条 data path 或渲染一个 button,都不会授予 caller 读取、写入、执行或 bridge 该资源的权限。

session substitution 的语义很窄

$session.* 有两种不同角色:

  • presentation condition 可以读取 session 事实,如 $session.authenticated$session.role == owner
  • path substitution 只发生在 srcbindpropBind 中,不发生在普通 props、event 或 execution argument 中。

例如:

aup
input display-name
  bind="/user/persons/$session.did/profile/display-name"

server 从 own field 对每个 session 做 path substitution;缺失值会保持为 unresolved token,而不会虚构身份。client 也不能通过发送 UI message 来声称自己的 caller identity。

renderer 不是 authorization authority

AFS/provider/runtime policy 才决定已经解析的 read、write 或 exec action 是否允许。UI visibility 与 navigation 只是呈现。拒绝 javascript:.. 的 validation 是有用的 input safety,但不替代 service-side permission policy。

frame、bridge、remote surface 与 write-capable flow 都需要各自的 trust、origin、session 与 scope review。两个 target 上外观相同的 button,也可能背后使用不同 authorization context。

嵌入规则见 Frame、bridge 与嵌入 surface;data-binding 语义见 Event、state 与 binding