Apache-AuthenSecurID

 view release on metacpan or  search on metacpan

RCS/AuthenSecurID.pm,v  view on Meta::CPAN


=item *
Apache::AuthenSecurID by David Berk <dberk@@lump.org>

=head1 COPYRIGHT

The Apache::AuthenSecurID module is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.

=cut

@


1.5
log
@*** empty log message ***
@
text
@d1 1
a1 1
# $Id: AuthenSecurID.pm,v 1.4 2001/06/22 19:08:36 root Exp $
d85 2
@


1.4
log
@documentation
@
text
@d1 1
a1 1
# $Id: AuthenSecurID.pm,v 1.3 2001/06/21 14:50:24 root Exp root $
d96 1
a96 1
 PerlSetVar AuthCookieHandler /path/of/authentication/handler
d146 1
a146 1
AuthCookieHandler
@


1.3
log
@many fixes
@
text
@d1 1
a1 1
# $Id: AuthenSecurID.pm,v 1.2 2001/06/19 19:05:42 root Exp root $
a18 7
	
	# Continue only if the first request.
	#return OK unless $r->is_initial_req;

	#my $reqs_arr = $r->requires;
	#return OK unless $reqs_arr;
	#my $log = $r->log;
a19 1
	# Grab the password, or return if HTTP_UNAUTHORIZED
d21 1
d28 1
d32 1
d46 1
a46 1
		( $username, $session_time ) = split /\:/, $plaintext_cookie;
a48 1
	# check cookie
d53 1
d57 3
a59 2
		$r->err_header_out(	"Pragma" => "no-cache" ); 
		my $crypt_cookie = $cipher->encrypt_hex ( "$username:$time" );
d61 1
a61 1
			$crypt_cookie . "; path=" . "/");
d64 1
d83 1
a83 5
 # Configuration in httpd.conf

 PerlModule Apache::AuthenSecurID

 # Authentication in .htaccess
d85 1
a88 1
 # authenticate via SecurID
d91 1
a91 1
 PerlSetVar Auth_SecurID_VAR_ACE /ace/config/directory 
d93 1
d95 2
d99 1
d103 6
a108 3
This module allows authentication against a SecurID server.  If 
authentication is successful it sets a cookie with a MD5 hash
token.  The token expires at midnight local time.
d112 1
d114 1
a114 1
Auth_SecurID_VAR_ACE
d116 2
a117 2
The location of the F<sdconf.rec> file.  It defaults to the
directory F</var/ace> if this variable is not set.
d122 10
a131 2
The name of the of cookie to be set for the authenticaion token.  
It defaults to the F<SecurID> if this variable is not set.
d136 1
a136 1
The path of the of cookie to be set for the authenticaion token.  
d139 19
d172 2
d176 1
a176 1
L<Apache>, L<mod_perl>, L<Authen::SecurID>
d195 1
@

RCS/AuthenSecurID.pm,v  view on Meta::CPAN

@a9 1
use Authen::ACE;
d14 1
a14 1
$VERSION = '0.3';
a26 3
	my($res,$pass) = $r->get_basic_auth_pw;
	$r->log_reason("$res $pass", $r->uri);
	$log->debug("$res $pass");
a27 3
	return $res if $res != OK;

	# Handle Cookie 
a28 4
	$log->debug("$auth_cookie");

	my $cookie_path = $r->dir_config("AuthCookiePath") || "/";
	$log->debug("$cookie_path");
a30 1
	$log->debug("$crypt_key");
d33 2
a34 1
	$log->debug("$cookie_timeout");
a39 1
	my $user = $r->connection->user;
d54 1
a54 11
	if ( $session_key 
		&& $user eq $username 
		&& ($session_time+($cookie_timeout * 60) >= $time) ) {

		# OK set cookie
#		my $auth_cookie  = $cipher->encrypt_hex ( "$user:$time" );
#	 	$r->err_header_out("Set-Cookie" => $auth_cookie . "=" .
#			$auth_cookie . "; path=" . $cookie_path); 
#		$r->no_cache(1);
#                $r->err_header_out("Pragma", "no-cache");
#                $r->header_out("Location" => $r->uri);
a55 51
	}


	# SecurID Config Directory 
	my $VAR_ACE    = $r->dir_config("Auth_SecurID_VAR_ACE") || "/var/ace";

	# Sanity for usernames 
	if (length $user > 64 or $user =~ /[^A-Za-z0-9]/) {
		$r->log_reason("Apache::AuthenSecurID username too long or"
			."contains illegal characters", $r->uri);
		$r->note_basic_auth_failure;
		return AUTH_REQUIRED;
	}

	if ( ! $pass ) {
		$r->log_reason("Apache::AuthenSecurID passcode empty",$r->uri);
		$r->note_basic_auth_failure;
		return AUTH_REQUIRED;
	}

	if (length $pass > 256) {
		$r->log_reason("Apache::AuthenSecurID password too long",$r->uri);
		$r->note_basic_auth_failure;
		return AUTH_REQUIRED;
	}

	# Create the SecurID connection.
	my $ace = Authen::ACE->new(
		config => $VAR_ACE 
	) || warn ( $! );

	# Error if we can't connect.
	if (!defined $ace) {
		$r->log_reason("Apache::AuthenSecurID failed to"
			."init",$r->uri);
		return SERVER_ERROR;
	}
	
	# Do the actual check.
	my ( $result, $info ) = $ace->Check ( $pass, $user );
	if ($result == ACM_OK) {
		$r->log_reason("Apache::AuthenSecurID succeed auth user"
			. "$user" ,$r->uri);
		my $auth_cookie  = $cipher->encrypt_hex ( "$user:$time" );
		$r->err_header_out("Set-Cookie" => $auth_cookie . "=" .
			$auth_cookie . "; path=" . $cookie_path); 
		$r->no_cache(1);
                $r->err_header_out("Pragma", "no-cache");
                $r->header_out("Location" => $r->uri);
		return OK;
		#return REDIRECT;
d57 4
a60 4
		$r->log_reason("Apache::AuthenSecurID failed for user $user $res $VAR_ACE",
			$r->uri);
		$r->note_basic_auth_failure;
		return AUTH_REQUIRED;
@



( run in 2.116 seconds using v1.01-cache-2.11-cpan-99c4e6809bf )