Hi Sergiu,

On Sun, Oct 26, 2008 at 8:20 AM, Sergiu Dumitriu <[EMAIL PROTECTED]> wrote:

> Asiri Rathnayake wrote:
> > Hi Devs,
> >
> > I have hit a wall trying to implement Digest Access Authentication for
> the
> > xwiki-webdav module. I'll try to be clear as much as possible.
> >
> > *+ INTRO* :  Digest Access Authentication is used to avoid the
> transmission
> > of clear text passwords over http for authenticating users. Instead of
> the
> > clear text password, following hash (RESPONSE) will be transferred to the
> > server by client,
> >
> > HA1 = MD5(username,password,realm)
> > HA2 = MD5(method,digestURI)
> > RESPONSE = MD5(HA1,nonce,HA2)
> >
> > Here the 'nonce' is some weird string token generated by the server for
> that
> > particular client for a particular session. So the RESPONSE instead of
> the
> > clear text password will be transferred to the server. For more specific
> > information about Digest Authentication, you may refer [1].
> >
> > *+ PROBLEM* : Simply put, the way xwiki handles authentication requires
> the
> > presentation of a clear text password by the client (which is not
> available
> > with Digest Authentication scheme). What we have with xwiki (on the
> server
> > side) is a crypted version of the original password.
> >
> > One possible solution to overcome this limitation is to store the HA1
> value
> > in our databases (is this possible ?). This is one of the limitations of
> > Digest Authentication scheme as mentioned in [1] :
> >
> > *"There is an important problem with implementing Digest access
> > authentication. This is the requirement that either cleartext passwords
> or
> > the HA1 hashes must be known in order to perform client response
> validation"
> > *
> >
> > I would like to know what other developers have to say about this issue,
> and
> > possible workarounds ... [?]
> >
> > Thanks.
> >
> > - Asiri
> >
> > [1] http://en.wikipedia.org/wiki/Digest_access_authentication
>
> Hi devs,
>
> This is a serious roadblock, and it cannot be easily solved.
>
> The main idea is that whatever data we keep in the database of the wiki,
> it is accessible. Storing HA1 is as safe as storing a plaintext
> password. Anybody with edit access and a bit of cracking/hacking
> experience can get it out of the wiki. So I'm a strong -1 against
> storing any unencrypted login information.
>
> I can't see any simple and clean mechanism to work around this problem.
> There's no way we can validate the correct password. Some hacks we could
> use in the worst case are:
>
> 1. Something like Niels suggested, authenticate in a third service over
> SSL and use a generated token as the password. This is cumbersome for
> many reasons, like: this token should expire often, for security
> reasons; the need for a certificate + HTTPS configuration; adding a new
> service; increased complexity; and many others.
>
> 2. Something similar to what is done for the current password. I don't
> go into further details now since I'm sleepy, and it's too ugly to be
> taken into account seriously.
>
> 3. Use Basic auth, but force https to be used. This means that we must
> document (or link to external documentation) how to setup https on
> various containers.
>
> 4. Find the time to implement crypt password storing mechanism. This
> means that the password can also be decrypted, unlike the current hash
> mechanism. This involves more effort, and is less secure than what we
> have now (I'd like that the user's password can never be retrieved, not
> even by the wiki and server owner).
>
> 5. Try to find other ways to authenticate.
>
>
> I always try to approach the problem from a different angle, since many
> times a difficult technical question is actually the dead end of a wrong
> solution to a different problem. So, why do you need to implement Digest
> authentication? What is your scenario? What is the goal? Do you have a
> link to the WebDAV authentication specification? Can we use cookies
> instead? Can we use OpenID authentication?
>

Well, [RFC2518 <http://www.ietf.org/rfc/rfc2518.txt>] clearly states that
all webdav servers 'MUST' support the digest authentication mechanism
(Section 17.1) :

*"Furthermore, a WebDAV server MUST NOT send Basic
authentication credentials in a WWW-Authenticate header unless the
connection is secure.  Examples of secure connections include a
Transport Layer Security (TLS) connection employing a strong cipher
suite with mutual authentication of client and server, or a
connection over a network which is physically secure, for example, an
isolated network in a building with restricted access.

WebDAV applications MUST support the Digest authentication scheme
[RFC2069]. Since Digest authentication verifies that both parties to
a communication know a shared secret, a password, without having to
send that secret in the clear, Digest authentication avoids the
security problems inherent in Basic authentication while providing a
level of authentication which is useful in a wide range of scenarios."
*
Also, windows XP by default uses digest authentication and users need to
hack into their registries if they need their built-in webdav client to use
Basic Authentication instead.

There is no technical barrier for us to keep using Basic Authentication (con
: users have to do some tweaking). But it's less secure. Having said that,
even MD5 hashes are reportedly not *that* secure :
http://en.wikipedia.org/wiki/MD5

AFAIK either Cookies nor OpenID can be used because they are inherently
meant for browsers. (WebDAV clients are not browsers most of the time).

Thanks.

- Asiri


>
> --
> Sergiu Dumitriu
> http://purl.org/net/sergiu/
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to