Controlled sharing of objects is fundamental to distributed systems. However, only limited and simple means of sharing are supported in network or cloud-based systems. Current software systems are often constructed as a decentralized graph of collaborative, loosely-coupled services that include different protection domains, communication channels, execution environments and implementations.
As such, security and access control are of concern. Instead of using public-key based certificates or other sophisticated key agreement, cloud-based services typically use a pattern of pure bearer tokens or authentication credentials. Bearer tokens or credentials that grant unconditional authority are often sent directly between clients, servers and protection domains, even on unencrypted channels.