授权

授权

授权是将对流的访问权限委派给与其所有者不同的帐户的行为。作为最佳实践,当向另一个账户授权时,应该遵循最小权限原则,并仅授权代表的临时密钥写入最少必要的数据到 Ceramic。

范围

CACAO和Ceramic支持一种基本的方式来描述授权包含的资源和操作。资源参数是一个字符串数组。在Ceramic中,这些字符串是StreamIDs或模型StreamIDs。表示的操作是写入访问权限,因为在协议级别上没有以任何方式授权读取访问权限。读取访问需要加密协议,因为流是公共的,并且现在不在范围内。

note:未来,我们期望能够根据操作(写入、删除、创建、更新等)和资源指定更细粒度的授权。

例如,要授权一个帐户仅写入两个特定流,则可以在 CACAO 中将 streamIds 指定为资源,如下所示:

[ "ceramic://kjzl6cwe1jw14bby1eybtqjr1w5l8xysitwmd34i8huccr7lk8g6xrt2l1c1ngn", "ceramic://kjzl6cwe1jw1476bbp2a0lg8gcmk9zj1xjanpg6dooc3golyb2fnmwmg0p6ane3"]

模型

最常用的模式是通过指定模型流ID来指定授权。 模型是可以在流初始化事件中定义的属性。 当与CACAO一起指定并使用时,它允许DID和密钥为该用户的所有流写入具有此特定模型值的数据。

Note: 将来可能会在流中支持除了模型之外的其他键和值,用于授权。

目前,模型主要用作建立在 Ceramic 之上的更高级别概念。一组模型通常描述应用程序的整个写入数据模型,使用户可以逻辑地授权应用程序写入所需的所有流。例如,一个简单的社交应用程序具有用户配置文件和帖子两个相应的模型。CACAO 将由这两个模型 streamId 数组指定资源,如下所示。这将允许拥有此 CACAO 的 DID 创建并写入任何具备这些模型流的流,并允许它创建尽可能多的帖子。由模型 streamID 定义的资源格式为 ceramic://*?model=<StreamId> 并且对于先前示例将定义如下。

[ "ceramic://*?model=kjzl6hvfrbw6c7keo17n66rxyo21nqqaa9lh491jz16od43nokz7ksfcvzi6bwc", "ceramic://*?model=kjzl6hvfrbw6c99mdfpjx1z3fue7sesgua6gsl1vu97229lq56344zu9bawnf96"]

通配符最后,支持所有资源的通配符。出于安全原因,通配符将在未来被弃用,并且仅包含在此处以完整性。

[ "ceramic://*" ]

Last updated