git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andreas Ericsson <ae@op5.se>
To: "Shawn O. Pearce" <spearce@spearce.org>
Cc: "Stephen R. van den Berg" <srb@cuci.nl>, git <git@vger.kernel.org>
Subject: Re: [RFC] Adding a challenge-response authentication method to	git://
Date: Thu, 14 Aug 2008 11:15:22 +0200	[thread overview]
Message-ID: <48A3F7AA.8070001@op5.se> (raw)
In-Reply-To: <20080814005723.GM3782@spearce.org>

Shawn O. Pearce wrote:
> "Stephen R. van den Berg" <srb@cuci.nl> wrote:
>> I'm not trying to solve all management problems, I'm just trying to
>> offer a simple solution for the small-user-base-central-repository case
>> without a lot of code-bloat on the git side.
>> If it doesn't fit ones needs, use ssh or something else; but it does
>> have its merits for the simple centralised setups.
> 
> OK, then my final two cents, and I'll shutup.
> 
> - Add to git-daemon a new service command, "git-authenticate-user".
> - Clients request "git-authenticate-user 'repository'".
> - The auth_user routine:
> 	enters 'repository' ('ala upload-pack)
> 	execs "git-authenticate-user ."
> 
> - git-authenticate-user:
> 	send pkt-line challenge
> 	recv pkt-line username
> 	recv pkt-line SHA-1(username + password + challenge)
> 	
> 	read gitconfig for "auth.passwordfile"
> 	read passwordfile for entry $username
> 		("user:pass:upload-pack,receive-pack")
> 	verify response
> 
> 	send pkt-line ok/fail
> 	recv pkt-line "git-$service '.'"
> 	check $service is allowed
> 	exec git-$service .
> 

I'd do it like this instead:

daemon: auth_user = dlsym(dlopen("auth-module.so", RTLD_NOW), "authenticat");
client: "git-authenticate action 'repository'"
daemon: send pkt-line challenge
client: send pkt-line username
client: send pkt-line SHA1(username + password + challenge)
daemon: if (auth_user(repository, action, username, password, struct sockaddr_in *inbound))
               allow_connection();

This approach has several nifty benefits:
* The otherwise duplicated code (for different auth schemes) is
  done only once (in the git daemon).
* If the git daemon has no authentication module loaded, we might
  as well not bother sending any challenge and just pretend we do
  not know about the authentication scheme.
* Any kind of authentication scheme can be supported without changing
  the core code. If the authentication module does something wrong,
  one can continue to serve read-only requests by simply unloading
  the module.
* Modules is a great way for newcomers to get started contributing to
  git so it's a nice way of getting more contributors/sub-maintainers.

-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

  parent reply	other threads:[~2008-08-14  9:17 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-13 16:26 [RFC] Adding a challenge-response authentication method to git:// Stephen R. van den Berg
2008-08-13 16:36 ` Petr Baudis
2008-08-14  7:48   ` David Brown
2008-08-14  8:23     ` Petr Baudis
2008-08-14 11:07       ` Stephen R. van den Berg
2008-08-14 11:39         ` Petr Baudis
2008-08-14 12:14           ` Stephen R. van den Berg
2008-08-13 16:40 ` Shawn O. Pearce
2008-08-13 17:37   ` Stephen R. van den Berg
2008-08-13 18:08     ` Shawn O. Pearce
2008-08-14  0:10       ` Stephen R. van den Berg
2008-08-14  0:57         ` Shawn O. Pearce
2008-08-14  7:13           ` Stephen R. van den Berg
2008-08-14  9:15           ` Andreas Ericsson [this message]
2008-08-14  9:51             ` Stephen R. van den Berg
2008-08-14 17:24             ` david
2008-08-14 17:18   ` david
2008-08-14 21:00     ` Shawn O. Pearce

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48A3F7AA.8070001@op5.se \
    --to=ae@op5.se \
    --cc=git@vger.kernel.org \
    --cc=spearce@spearce.org \
    --cc=srb@cuci.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).