summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Auth
diff options
context:
space:
mode:
authorwurblzap%gmail.com <>2007-08-03 05:38:37 +0200
committerwurblzap%gmail.com <>2007-08-03 05:38:37 +0200
commit6a58d3ebb9fc536ba8c16a374787077f21b94c89 (patch)
treef54f1d4bfe52985e56cae42860966bc3c7048edb /Bugzilla/Auth
parent037a33e69b2d25f83d1fdd16bab2068a391205eb (diff)
downloadbugzilla-6a58d3ebb9fc536ba8c16a374787077f21b94c89.tar.gz
bugzilla-6a58d3ebb9fc536ba8c16a374787077f21b94c89.tar.xz
Bug 380187 – Bugzilla should support RADIUS authentication.
Patch by Marc Schumann <wurblzap@gmail.com>; r=mkanat, a=mkanat
Diffstat (limited to 'Bugzilla/Auth')
-rwxr-xr-xBugzilla/Auth/Verify/RADIUS.pm64
1 files changed, 64 insertions, 0 deletions
diff --git a/Bugzilla/Auth/Verify/RADIUS.pm b/Bugzilla/Auth/Verify/RADIUS.pm
new file mode 100755
index 000000000..da36c3bd1
--- /dev/null
+++ b/Bugzilla/Auth/Verify/RADIUS.pm
@@ -0,0 +1,64 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Bug Tracking System.
+#
+# The Initial Developer of the Original Code is Marc Schumann.
+# Portions created by Marc Schumann are Copyright (c) 2007 Marc Schumann.
+# All rights reserved.
+#
+# Contributor(s): Marc Schumann <wurblzap@gmail.com>
+
+package Bugzilla::Auth::Verify::RADIUS;
+use strict;
+use base qw(Bugzilla::Auth::Verify);
+
+use Bugzilla::Constants;
+use Bugzilla::Error;
+use Bugzilla::Util;
+
+use Authen::Radius;
+
+use constant admin_can_create_account => 0;
+use constant user_can_create_account => 0;
+
+sub check_credentials {
+ my ($self, $params) = @_;
+ my $dbh = Bugzilla->dbh;
+ my $address_suffix = Bugzilla->params->{'RADIUS_email_suffix'};
+ my $username = $params->{username};
+
+ # If we're using RADIUS_email_suffix, we may need to cut it off from
+ # the login name.
+ if ($address_suffix) {
+ $username =~ s/\Q$address_suffix\E$//i;
+ }
+
+ # Create RADIUS object.
+ my $radius =
+ new Authen::Radius(Host => Bugzilla->params->{'RADIUS_server'},
+ Secret => Bugzilla->params->{'RADIUS_secret'})
+ || return { failure => AUTH_ERROR, error => 'radius_preparation_error',
+ details => {errstr => Authen::Radius::strerror() } };
+
+ # Check the password.
+ $radius->check_pwd($username, $params->{password},
+ Bugzilla->params->{'RADIUS_NAS_IP'} || undef)
+ || return { failure => AUTH_LOGINFAILED };
+
+ # Build the user account's e-mail address.
+ $params->{bz_username} = $username . $address_suffix;
+
+ return $params;
+}
+
+1;