Annotation of modules/fsu/localauth.pm, revision 1.1
1.1 ! ng 1: # The LON-CAPA localauthentication mechanism
! 2: #
! 3: # LON-CAPA is free software; you can redistribute it and/or modify
! 4: # it under the terms of the GNU General Public License as published by
! 5: # the Free Software Foundation; either version 2 of the License, or
! 6: # (at your option) any later version.
! 7: #
! 8: # LON-CAPA is distributed in the hope that it will be useful,
! 9: # but WITHOUT ANY WARRANTY; without even the implied warranty of
! 10: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! 11: # GNU General Public License for more details.
! 12: #
! 13: # You should have received a copy of the GNU General Public License
! 14: # along with LON-CAPA; if not, write to the Free Software
! 15: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
! 16: #
! 17: # /home/httpd/html/adm/gpl.txt
! 18: #
! 19: # http://www.lon-capa.org/
! 20: #
! 21: # 8/24 Guy Albertelli
! 22: # 6/17/2003 H. K. Ng
! 23: # 2/16/2004 Ng
! 24: #
! 25: # local authentication using ldap
! 26: # To use this package, you will also need the following:
! 27: # perl-ldap-0.31.tar.gz
! 28: # which in term requires
! 29: # Authen-SASL-2.04.tar.gz
! 30: # Convert-ASN1-0.17.tar.gz
! 31: # IO-Socket-SSL-0.92.tar.gz
! 32: # Net_SSLeay.pm-1.23.tar.gz
! 33: # XML-SAX-Base-1.02.tar.gz
! 34: #
! 35: # One of the packages may prompt you to update the openssl, so you may also
! 36: # need openssl-0.9.7b.tar.gz
! 37: #
! 38: # Above were the versions used at fsu.
! 39: #
! 40: # To implement it on your local system, complete the variable assignment below.
! 41: #
! 42: # See notes beside each variable.
! 43: #
! 44: package localauth;
! 45: use strict;
! 46: use Net::LDAP;
! 47: use Net::LDAPS;
! 48:
! 49: # ----START LOCAL CHANGES HERE ----- DON'T DELETE THIS LINE
! 50: sub localauth {
! 51: my ($username,$password) = @_;
! 52:
! 53: my $ldap_host_name = ''; # insert the host name of your ldap server, e.g., ldap.fsu.edu
! 54: my $ldap_ca_file_name = ''; # insert the ldap certificate filename - include absolute path
! 55: # certificate is required if you wish to encrypt the password.
! 56: # e.g., /home/http/perl/lib/local/ldap.certificate
! 57: my $ldap_search_base = ''; # ldap search base, at fsu this is set to 'o=fsu.edu'.
! 58:
! 59: my $ldap = Net::LDAPS->new($ldap_host_name,
! 60: verify => 'require', # 'require' implies that a certificate is needed
! 61: # else set to 'none' if you do not wish to use a certificate
! 62: cafile => $ldap_ca_file_name,
! 63: );
! 64:
! 65: if (not defined $ldap) {
! 66: return (0);
! 67: }
! 68:
! 69: $ldap->bind;
! 70:
! 71: my $search_string = '(acnsloginname='.$username.')';
! 72: my $mesg = $ldap->search (base => $ldap_search_base,
! 73: filter => $search_string,
! 74: attrs => ['dn'] ,
! 75: );
! 76:
! 77: if ($mesg->code) {
! 78: $ldap->unbind;
! 79: $ldap->disconnect;
! 80: return (0)
! 81: }
! 82:
! 83: my @entries = $mesg->all_entries;
! 84: if ($#entries != 0) {
! 85: $ldap->unbind;
! 86: $ldap->disconnect;
! 87: return (0)
! 88: }
! 89: $mesg = $ldap->bind (dn => $entries[0]->dn,
! 90: password => $password,
! 91: );
! 92:
! 93: $ldap->unbind;
! 94: $ldap->disconnect;
! 95: if ($mesg->code) {
! 96: return (0)
! 97: }
! 98:
! 99: return (1);
! 100: }
! 101: # ----END LOCAL CHANGES HERE ----- DON'T DELETE THIS LINE
! 102:
! 103: 1;
! 104: __END__
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>