Re: [hybi] About authentication mechanism

Greg Wilkins <gregw@intalio.com> Tue, 21 June 2011 23:36 UTC

Return-Path: <gregw@intalio.com>
X-Original-To: hybi@ietfa.amsl.com
Delivered-To: hybi@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7FEF011E80FB for <hybi@ietfa.amsl.com>; Tue, 21 Jun 2011 16:36:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.726
X-Spam-Level:
X-Spam-Status: No, score=-2.726 tagged_above=-999 required=5 tests=[AWL=-0.049, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, MIME_8BIT_HEADER=0.3, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id U6qasAw40mAk for <hybi@ietfa.amsl.com>; Tue, 21 Jun 2011 16:36:05 -0700 (PDT)
Received: from mail-vx0-f172.google.com (mail-vx0-f172.google.com [209.85.220.172]) by ietfa.amsl.com (Postfix) with ESMTP id 0C8A911E8083 for <hybi@ietf.org>; Tue, 21 Jun 2011 16:35:57 -0700 (PDT)
Received: by vxi40 with SMTP id 40so279250vxi.31 for <hybi@ietf.org>; Tue, 21 Jun 2011 16:35:57 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.52.115.232 with SMTP id jr8mr22040vdb.38.1308699357068; Tue, 21 Jun 2011 16:35:57 -0700 (PDT)
Received: by 10.52.108.9 with HTTP; Tue, 21 Jun 2011 16:35:56 -0700 (PDT)
In-Reply-To: <BANLkTin4mWJgQm+pfyYRs_RhRkdMBfY_Og@mail.gmail.com>
References: <BANLkTinerv=Ua4d-ma+uPVJjF95U1U5iXg@mail.gmail.com> <BANLkTin4mWJgQm+pfyYRs_RhRkdMBfY_Og@mail.gmail.com>
Date: Wed, 22 Jun 2011 09:35:56 +1000
Message-ID: <BANLkTiksptqmTWftg7Ur98QQnp22QV7OLA@mail.gmail.com>
From: Greg Wilkins <gregw@intalio.com>
To: =?ISO-8859-1?Q?I=F1aki_Baz_Castillo?= <ibc@aliax.net>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: hybi@ietf.org
Subject: Re: [hybi] About authentication mechanism
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Jun 2011 23:36:06 -0000

On 21 June 2011 23:43, Iñaki Baz Castillo <ibc@aliax.net> wrote:
> Hi, any comment about this please? IMHO this topic is important. If
> I'm wrong I would like to know it :)

In many respects, this is a thread that should probably occur within
the W3C and WHATWG lists, as how browsers handle credential collection
is much more of an issue for them than the IETF..   Note that I think
they are in final call on their APIs as well.

It is true that the current version of the draft no longer denies the
ability of a client to handle 401 responses, so that is perhaps all
that we need.     However it might be that we should consider if we
recommend support for BASIC and DIGEST.

cheers







>
> 2011/6/20 Iñaki Baz Castillo <ibc@aliax.net>et>:
>> Hi, I would like to start a new thread for this topic as it seems that
>> the draft does not cover it at all (just suggests that an HTTP
>> response code other than 101 should be threated as RFC 2616 states:
>>
>>
>>  "1.  If the status code received from the server is not 101, the
>>        client handles the response per HTTP procedures." (p. 30)
>>
>>
>> The question is: should the browser prompt the human user for
>> user/pass as when a 401 is received in the WS handshake attemp?
>>
>> Imagine this case:
>>
>> - www.domain.org => 1.1.1.1:80
>>
>> - ws.domain.org => 1.1.1.2:443
>>
>> - I open http://www.domain.org in my browser, fill some login form and
>> retrieve websocket connection data, including an user and pass (for
>> Digest).
>>
>> - My JavaScript is then provisioned (via JavaScript WebSocket API
>> ????) with ws connection data: server ip, port, Digest user/passwd.
>>
>> - My web browser starts the ws connection with ws.domain.org:443. It
>> receives 401 with Digest (so I need a nonce from the server before
>> using my user/passwd).
>>
>> - JavaScript code automatically accepts the Digest chanllenge,
>> generates a Digest response with the provided user/passwd and the
>> retrieved Digest nonce, and re-send the HTTP GET request (all of this
>> without prompting the user) with the Authorization header.
>>
>> - If the JavaScript code would not be proviosioned with user/pass,
>> then upon receipt of the 401 it should prompt the user (like a
>> JavaScript alert?).
>>
>>
>>
>> So, if all this stuff is not clearly specified (and I think passing
>> user/pass to the JavaScript WebSocket connection API does not exist)
>> then using HTTP Digest (or Basic) will be not useful or feasible, and
>> I expect than using cookies and all that "pure just-web stuff" will be
>> the only way. Please, take into account that a websocket server could
>> run in a separate server, so using cookies mechanism is not so
>> feasible (it could or not depending the case). Neither I think that
>> cookies (a workaround to simulate
>> sessions in HTTP protocol) are the best way to go.
>>
>> IMHO the draft should do much more effort in authentication process.
>> Please don't let the door open to ugly and/or propietary
>> authentication solutions.
>>
>>
>> My proposal is that the JavaScript WebSocket API should include a
>> method to pass authentication 'user' and 'password' (and optionally
>> 'realm' so it would ignore the realm para in the 401 response when
>> using Digest rather than Basic auth).
>>
>> In this way, I could open a webpage, perform usual login (maybe via a
>> HTML form as commonly extended) and then retrieve WS connection data
>> (WS URI), including user/pass/[realm].
>> So my JavaScript client would open a WS connection with the given
>> destination and in case of receiving a 401 it would re-send the HTTP
>> GET request with the appropriate Authorization header without
>> prompting the user.
>>
>> This wouldn't be the only authentication mechanism, of course, but
>> IMHO it should be documented (and covered by the JS WebSocket API).
>>
>> Regards.
>>
>> --
>> Iñaki Baz Castillo
>> <ibc@aliax.net>
>>
>
>
>
> --
> Iñaki Baz Castillo
> <ibc@aliax.net>
> _______________________________________________
> hybi mailing list
> hybi@ietf.org
> https://www.ietf.org/mailman/listinfo/hybi
>