Re: [foaf-protocols] new sequence diagram

Be aware that you are using loaded terms (to one who is expert on ssl and https).

For there to be (over https) an (http) application exchange and only then a request for an https client cert implies a double handshake (typically). The first delivers the app data, which (probably by uri component) induces the server to ask the client to perform a second handshake. In the course of that the server may demand a client cert (should no client cert have been previously communicated, in unsolicited manner.) a second app data request is then delivered through the server socket, at which point the server variables for both client cert and ssl cipher suite information will typically be attached to the typical web servers http request (cgi/servlet context).

This is essentially what foafssl.me does. As I recall, the foafssl idp site acted similarly. It's not obvious from the script code of webauthid site if it also does this.

Be clear. The the first app data is to be delivered to layer 7 code (ie some php script) which decides to induce the handshake that demands a mutual auth ssl session, this is subtly different to the following. Alternatively, the php script only ever receives 1 indication, which always has a client cert in its context.

Make sure it's clear which pattern must be implemented.

If its the first pattern, can there be multiple http Tewa/resp over https, before one "upgrades" this session to a mutual auth session?

If its not obvious why there is any need to distinguish these, just delete the mail.


On Nov 20, 2011, at 5:05 AM, "Henry Story" <henry.story@bblfish.net> wrote:

> Peter Williams had some criticism about the sequence diagram, which it is true whilst being simple is perhaps merging too many things together.
> 
> So I propose the following much more precise diagram. I plan to also create a state diagram that would show interactions 
> more clearly. Here we are looking at a request that succeeds.
> 
> 1. We set up a TLS session. The server authenticates.
> 2. The application layer protocol starts. It passes a guard which can look at the application layer protocol metadata
>    and request the client certificate if needed. (the guard can have access to ACL information to make this decision)
> 3. the Guard decides 
>     a. client authentication is needed  (it's not available in cache) and asks the TLS layer to do that
>     b. the TLS layer sends a client authentication request
>     c. the client selects a certificate
>     d. the TLS agent verifies only that the public sent in the certificate can decrypt the encoded token
>        ( we need to find the technical jargon for this)
>     e. if it does the guard ends up with the client certificate
>  
> 
> <WebIDSequence-friendly.jpeg>
> 
> 4 . The Guard needs to verify the WebID claims in the certificate, so it sends those to the WebID verifier that follows the
>    well known procedure, either going through a cache or fetching directly the information on the web (5)
> 
> 6. given the identities the guard can decide whether the user with that identity has access to the resource requested by considering
> its ACLs and the graph of trusted information. (out of scope of detailed study here)
> 
> 7. the resource is given access to and the server can send the application layer response to the client
> 
> -----
> 
> The good thing in this diagram is that
>  
>  1. we can make clear that the TLS agent can be bog standard - it just needs to not throw an exception if it does not recognise the issuer.
>  2. The guard is working at the application layer, and can communicate with the underlying TLS layer.
>  3. we don't need to specify what the protocol of the request is - but we can give examples of HTTP requests
>  4. the above makes clear how we can get around any browser issues, and how we can get rid of the most problematic user interface problems: namely the automatic request of the client certificate
>  
> Henry
> 
> 
> 
> Social Web Architect
> http://bblfish.net/
> 
> _______________________________________________
> foaf-protocols mailing list
> foaf-protocols@lists.foaf-project.org
> http://lists.foaf-project.org/mailman/listinfo/foaf-protocols

Received on Monday, 21 November 2011 03:42:50 UTC