Version Control with Subversion - httpd, the Apache HTTP server - Basic HTTP Authentication
Basic HTTP Authentication
The easiest way to authenticate a client is via the
HTTP Basic authentication mechanism, which simply uses a
username and password to verify that a user is who she says
she is. Apache provides an
htpasswd
utility for managing the list of acceptable usernames and
passwords, those to whom you wish to grant special access to
your Subversion repository. Let's grant commit access to
Sally and Harry. First, we need to add them to the password
file.
$ ### First time: use -c to create the file
$ ### Use -m to use MD5 encryption of the password, which is more secure
$ htpasswd -cm /etc/svn-auth-file harry
New password: *****
Re-type new password: *****
Adding password for user harry
$ htpasswd -m /etc/svn-auth-file sally
New password: *******
Re-type new password: *******
Adding password for user sally
$
Next, you need to add some more
httpd.conf directives inside your
Location block to tell Apache what to do
with your new password file. The
AuthType directive specifies the type of
authentication system to use. In this case, we want to
specify the Basic authentication system.
AuthName is an arbitrary name that you
give for the authentication domain. Most browsers will
display this name in the pop-up dialog box when the browser
is querying the user for his name and password. Finally,
use the AuthUserFile directive to specify
the location of the password file you created using
htpasswd
.
After adding these three directives, your
<Location> block should look
something like this:
<Location /svn>
DAV svn
SVNParentPath /usr/local/svn
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/svn-auth-file
</Location>
This <Location> block is not
yet complete, and will not do anything useful. It's merely
telling Apache that whenever authorization is required,
Apache should harvest a username and password from the
Subversion client. What's missing here, however, are
directives that tell Apache
which
sorts
of client requests require authorization. Wherever
authorization is required, Apache will demand
authentication as well. The simplest thing to do is protect
all requests. Adding Require valid-user
tells Apache that all requests require an authenticated
user:
<Location /svn>
DAV svn
SVNParentPath /usr/local/svn
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/svn-auth-file
Require valid-user
</Location>
Be sure to read the next section (
the section called “Authorization Options”) for more detail on the
Require directive and other ways to set
authorization policies.
One word of warning: HTTP Basic Auth passwords pass in
very nearly plain-text over the network, and thus are
extremely insecure. If you're worried about password
snooping, it may be best to use some sort of SSL encryption,
so that clients authenticate via https://
instead of https:// ; at a bare minimum,
you can configure Apache to use a self-signed server
certificate.
[26]
Consult Apache's documentation (and OpenSSL documentation)
about how to do that.
[an error occurred while processing this directive]
|