On 2008-01-02 at 11:32 +0100, Aristotle Pagaltzis wrote:
> Which is reasonably doable without the aid of tools, because you
> can easily inspect these files: Subversion stores *everything*,
> and that includes the passwords, in pure, untarnished clear text.
> 
> A marvel.
> 
> That anyone ever thought this fuming pile of manure is great.

This is fairly common for authenticated repository systems, that I've
seen.  I mean, it's not like ~/.cvspass is anything other than
fool-yourself obfuscation.  Perforce uses environment variables, which
aren't particularly secure (hello, ps(1)) and yet it's used in SOX
environments.  *sigh*

svn does at least let you not store passwords, by using an
authentication mechanism not based on passwords.

I do not use svn+ssh but with pubkey auth I'd be surprised if any
passwords had to be stored.

Instead I use GSSAPI.  It's just a matter of telling Apache use use
mod_auth_kerb and serving over https; the libneon subversion client
library explicitly disables Negotiate auth unless the access protocol is
https.  I've assumed that this is to avoid having to write layer
wrapping and to just be able to rely upon servers not asking for GSSAPI
session protection layers when already using TLS.

The svn client tools, cadaver, they all Just Work with GSSAPI.  Safari,
Firefox after enabling it, yup (and don't need to use the https variant
of the site).  Not sure if MSIE does, I think that I didn't bother since
I wasn't using domain signin but MIT Kerberos for Windows so that I
could have tokens for whatever remote sites I had accounts for.  I
suspect MSIE would work, if you used this in a Windows Domain setup.
Untested, but I vaguely recall that MSIE introduced Negotiate so I'd for
once be surprised if MS did get this wrong.

Now, there's no special support for this server-side, so your
authenticated id is just the fully-qualified u...@domain but that's at
least The Right Thing.  I get around it with AuthzSVNAccessFile which
defines the groups and defining a group for the same name as 'user'
which contains 'user' and 'u...@domain'.

Of course, you need to have unique DNS for Kerberos to be happy.  That's
why I use IPv6 and why svn.spodhuis.org is IPv6-only.  But there's /svn,
/ksvn, /viewvc and /kviewvc on that.  (Two modules are publicly
readable, if anyone's interested).

So I could see why libneon chickened out but that doesn't mean that I
don't have some resigned vague hate for the lack of stackable IO layers
in the standard C libraries; I need to look closer at sfio.

I had some ... irritation when I finally figured out the https
restriction and then had to wander over my svn:externals references
changing the URLs.  *sigh*

-Phil

Reply via email to