# -- # Copyright (C) 2001-2019 OTRS AG, https://otrs.com/ # -- # This software comes with ABSOLUTELY NO WARRANTY. For details, see # the enclosed file COPYING for license information (GPL). If you # did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt. # -- # Note: # # If you use this module, you should use as fallback the following # config settings: # # If use isn't login through apache ($ENV{REMOTE_USER} or $ENV{HTTP_REMOTE_USER}) # $Self->{LoginURL} = 'http://host.example.com/not-authorised-for-otrs.html'; # # $Self->{LogoutURL} = 'http://host.example.com/thanks-for-using-otrs.html'; # -- package Kernel::System::Auth::HTTPBasicAuth; use strict; use warnings; our @ObjectDependencies = ( 'Kernel::Config', 'Kernel::System::Log', ); sub new { my ( $Type, %Param ) = @_; # allocate new hash for object my $Self = {}; bless( $Self, $Type ); $Self->{Count} = $Param{Count} || ''; return $Self; } sub GetOption { my ( $Self, %Param ) = @_; # check needed stuff if ( !$Param{What} ) { $Kernel::OM->Get('Kernel::System::Log')->Log( Priority => 'error', Message => "Need What!" ); return; } # module options my %Option = ( PreAuth => 1, ); # return option return $Option{ $Param{What} }; } sub Auth { my ( $Self, %Param ) = @_; # get params my $User = $ENV{REMOTE_USER} || $ENV{HTTP_REMOTE_USER}; my $RemoteAddr = $ENV{REMOTE_ADDR} || 'Got no REMOTE_ADDR env!'; # return on no user if ( !$User ) { $Kernel::OM->Get('Kernel::System::Log')->Log( Priority => 'notice', Message => "User: No \$ENV{REMOTE_USER} or \$ENV{HTTP_REMOTE_USER} !(REMOTE_ADDR: $RemoteAddr).", ); return; } # get config object my $ConfigObject = $Kernel::OM->Get('Kernel::Config'); # replace login parts my $Replace = $ConfigObject->Get( 'AuthModule::HTTPBasicAuth::Replace' . $Self->{Count}, ); if ($Replace) { $User =~ s/^\Q$Replace\E//; } # regexp on login my $ReplaceRegExp = $ConfigObject->Get( 'AuthModule::HTTPBasicAuth::ReplaceRegExp' . $Self->{Count}, ); if ($ReplaceRegExp) { $User =~ s/$ReplaceRegExp/$1/; } # log $Kernel::OM->Get('Kernel::System::Log')->Log( Priority => 'notice', Message => "User: $User authentication ok (REMOTE_ADDR: $RemoteAddr).", ); return $User; } 1;