Tommi,

Thanks for your analysis. I don't intend to start a war between 
Capabilitites and ACLs here -- that war has been going on for about 50 
years among people who know a lot more about these things than we do :-)

I do, however, know quite a bit about capabilities in the context of 
OpenSim, so let's clarify some issues.

>  
> 1) If client is given CAPS URL to access something we need to have 
> access list / ownership and user role information in the database to 
> deduce if the user has the right for capabilities he/she is requesting 
> for. CAPS URLs do not remove need to for ownership, roles and ACLs. 
> ACL is theoretically just a list of subjects who have ability to do 
> given operations to an object. You can not even theoretically 
> eliminate this information. You can deduce it from group memberhsip 
> but groups are just another principal who can be added to ACL.
You can never throw the basic *policies* away. They have to be stored 
somewhere. That's not what capabilities try to do.

>  
> 2) Server has to store the CAPS URL information to memory or database 
> which is extra overhead.
Incorrect. Capability URLs can and are generated on the fly. Look, for 
example, at Caps.cs that handles about 1/2 of the Caps we pass to the 
client (the other half is spread in several modules that subscribe to 
OnRegisterCaps). They are also detracted on the fly. We already do this 
dynamic management for the CAPs we pass to the client. That is exactly 
the thing that I like the most. It's not just that the authorization is 
generated on the fly; the service handle itself is dynamic. So the 
service is only there during the appropriate context.

>  3) CAPS URL does not work from server to client as HTTP requests can 
> reliably traverse only from client to server due to NATs and 
> firewalls. So they work only from client to server and server to server.
Linden Lab was able to get over this by devising that very twisted thing 
we all hate called the EventQueue. I suggest you study that, if you want 
to know more. I confess I don't like the EQ either. I understand where 
it comes from -- and that's precisely to overcome the NATs & firewalls 
problem.

In any case, most of what I'm talking about here are capabilities that 
don't involve posting to the client, i.e. what the client can do on the 
region and what the region can do on the inventory. So, no NATs & 
firewalls problem here.

>  4) CAPS URLs are different from authentication tokens. CAPS URLs are 
> authrorization related mechanism which are handed out by the service 
> process like region itself. Region CAPS URLs not help to 
> authenticate or authorize against other service processes like asset 
> providers but you need to first authenticate and authorize 
> against asset provider in which point the asset provider can hand you 
> CAPS URLs.
Yes, of course. CAPs merge authentication with authorization. If you 
know the address, you can use the service. And that's the other thing I 
like about it: it avoids the extra calls for authentication.

>  5) If the life time of the CAPS URL is that of a client session it 
> can be easily be abused by attackers who are sniffing the network traffic.
Of course. But CAPs are dynamic, they come and go. We already have that 
for the Linden viewer's CAPs.

The issue of sniffing is an entirely different issue. Sniffing will 
defeat any security scheme that doesn't use encryption. If you want to 
protect from sniffing, use encryption, always.

 > It looks to me that oAuth might be used to authentication as well so 
it could replace OpenId entirely.

I don't think so. The spec for OAuth clearly says that it doesn't 
concern the authentication steps, which can be done in a number of ways. 
They do suggest, however, that OpenID+OAuth is a good combination.

Crista

_______________________________________________
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev

Reply via email to