Re: Please review: http gss authentication mech
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Please review: http gss authentication mech



RL 'Bob' Morgan wrote:
> More significantly, draft-nystrom-http-sasl-12.txt only works when 
> persistent connections are used, which is a showstopper.

Microsoft's implementation (rfc4559) also support only persistent
connections.  The request-reply is basically half-duplex until
the security context is established, and after that it becomes
regular HTTP/1.1 connection: keep-alive.  In none of the successive
requests on the persistent channel is it visible that there was
a GSS-API based authentication in the beginning.

Every new communication channel requires a new gss/spnego
authentication handhshake.

A gss-api based authentication is fairly expensive and requires
at least two tokens (under spnego), so a full authentication of
every request would be prohibitively expensive.

On the server-side, binding the lifetime of the gssapi security
context to the socket of the persistent connection is IMHO quite
sensible.


There is a certain problem of such a communication scheme with
reverse proxies, ssl accellerators and load balancers, which may have
difficulties providing persistent connections.
"Request pooling/aggregation" between the (server-side) middle-box
and the backend might be difficult.


> Hence the 
> text in http-gss:
> 
>     session.  Instead opaque identifiers in the GSS challenge option
>     field are optionally used together with channel bindings to provide a
>     way to share a security context over several HTTP connections.

I don't really understand what you mean by that, but it really doesn't
sound right.


Channel bindings are IMHO a broken concept (I know Nico doesn't agree,
because his CCM mechanism desperately needs them).  (Traditional)
channel bindings break many architectures in a horrible fashion because
they link characteristics from entirely seperate communication layers
and fail with the addition of the first middle-box to the communication
path (proxy,app-level gateway,firewall).


A much better approach to "forking" sessions that were authenticated
in rfc4559-style is that the application issues a (cryptgraphically strong)
session re-authentication token which the client needs to re-send with
*every* new request.

The existing rfc4559 with SPNEGO&Kerberos uses a 2-token security
context establishment, so if the application issues a session
re-authentication token which the client adds to every request,
then this scheme works even with servers-side reverse proxies
and load-balancers that pool&aggregate requests over a small
number of connections between the middle-box and the backend.


Traditional Web-Browsers have only limited functionality to replicate
session authentication tokens in successor requests.
 - basic authentication credentials
 - cookies
however only cookies can be set on request of the server.

It would have been a good idea to have the browser replicate
a server-issued (crypgraphically strong) token on a www-authenticate:
header field for every successive request after a gss/spnego handshake,
but it appears the designers of the rfc4559 authentication scheme forgot to
specify this, so right now, the use of non-persistent cookies and
a preference or requirement of an SSL/TLS protected communication channel
is probably the most portable design approach (with the least impact
on the creative features of middle-boxes).  If reverse proxies with
load balacing to the backend are involved, the session re-authentication
token must contain enough plaintext information for the reverse proxy
to find the backend server that created this session for repeated
or new network connections.


-Martin

_______________________________________________
Kitten mailing list
Kitten at lists.ietf.org
https://www1.ietf.org/mailman/listinfo/kitten




Note: Messages sent to this list are the opinions of the senders and do not imply endorsement by the IETF.