[Cosmo-dev] Re: securing access to items in multiple collections
Morgen Sagen
morgen at osafoundation.org
Tue Nov 13 15:29:59 PST 2007
On Nov 7, 2007, at 10:09 AM, Randy Letness wrote:
> Morgen Sagen wrote:
>>
>> Is a resource a collection?
>
> A collection is a resource, but a resource may not be a collection.
>
>>> 4. A User has access to multiple resources through ACLs
>>> 5. Publishing an item to multiple collections requires a User
>>> principal.
>>
>> It's not immediately obvious to me that #5 needs to be a
>> requirement, but you must have a reason. :-)
>
> The reason is that we want to move to a stricter security model,
> where a principal is granted access to resources through ACLs. With
> true ACL support, cosmo will be able to do a lot more. With
> multiple tickets, each ticket is essentially a principal with access
> to a single resource (most likely a collection). It it much easier
> on the server side to deal with a single principal per request
> (either a ticket or user) because thats how the security model is
> structured today. If a request includes multiple tickets, then that
> request is effectively authenticating as multiple principals (one
> for each ticket) and it becomes complex for the server to deal with
> multiple identities. But if the request authenticates as a User,
> and the protocol includes hooks for granting access to resources
> using tickets, then tickets can be used to grant access to a
> resource. This would be in place of the publisher explicitly
> granting access to the collection during publish, which would
> probably be something we want to add later.
>
>>
>> A while back I proposed having the client include all relevant
>> tickets when making a morsecode request:
>>
>> http://tinyurl.com/2ptlmm
>>
>> Is your proposal a twist on mine except that the server *remembers*
>> what tickets are associated with a user's account? Maybe you could
>> give some example scenarios and describe what gets sent back and
>> forth.
>
> Essentially a twist. What would happen is that the server would
> examine all tickets included in the request and add the user to the
> ticket resource's ACL, effectivley giving the user access to the
> ticket's resource. This happens before anything else, then when the
> security policy is applied (ACL of resources are checked), the user
> has access.
>
> So for example:
>
> 1. User A publishes collection X, creates ticket T.
> 2. User B subscribes to collection X using T.
> 3. User B publishes collection Y.
> 4. User B adds item from X to Y
> 5. User B syncs Y
>
> In Step 5, the client would authenticate as User B and include
> ticket T in the request. When the server sees the ticket, it adds
> User B to the ACL of collection X and then processes the request
> normally. When the server preforms authorization checks, the
> request completes successfully because User B was given access to
> collection X at the start of the request. All subsequent requests
> wouldn't have to include the ticket for collection X.
>
> Or another way it could happen, is the client could authenticate as
> User B and include ticket T as part of the subscription process to
> immediately grant User B access to X.
>
> -Randy
Sorry I'm so late to respond. I think I like this last suggestion
about registering the ticket with the User account at subscription
time, or at some point later if the user doesn't yet have a server
account at the time a ticket is used by the client. From then on, all
syncs are done using user account info rather than sending tickets,
right?
~morgen
More information about the cosmo-dev
mailing list