Bug 17776: Enable Shibboleth for Plack

https://bugs.koha-community.org/show_bug.cgi?id=17776

Signed-off-by: Matthias Meusburger <matthias.meusburger@biblibre.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
This commit is contained in:
Martin Renvoize 2017-03-02 16:40:11 +00:00 committed by Nick Clemens
parent ffca9decad
commit ea74ed5766
2 changed files with 26 additions and 13 deletions

View File

@ -76,16 +76,7 @@ BEGIN {
qw(shib_ok checkpw_shib logout_shib login_shib_url get_login_shib);
# Check for good config
if ( shib_ok() ) {
# Get shibboleth login attribute
$shib_login = get_login_shib();
}
# Bad config, disable shibboleth
else {
$shib = 0;
}
$shib = 0 unless shib_ok();
}
if ($cas) {
import C4::Auth_with_cas qw(check_api_auth_cas checkpw_cas login_cas logout_cas login_cas_url logout_if_required);
@ -161,6 +152,9 @@ sub get_template_and_user {
my $in = shift;
my ( $user, $cookie, $sessionID, $flags );
# Get shibboleth login attribute
$shib_login = get_login_shib() if $shib;
C4::Context->interface( $in->{type} );
$in->{'authnotrequired'} ||= 0;
@ -790,6 +784,10 @@ sub _timeout_syspref {
sub checkauth {
my $query = shift;
$debug and warn "Checking Auth";
# Get shibboleth login attribute
$shib_login = get_login_shib() if $shib;
# $authnotrequired will be set for scripts which will run without authentication
my $authnotrequired = shift;
my $flagsrequired = shift;

View File

@ -27,6 +27,7 @@ use Koha::Patrons;
use C4::Members::Messaging;
use Carp;
use CGI;
use List::Util qw(any);
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $debug);
@ -82,9 +83,14 @@ sub get_login_shib {
my $config = _get_shib_config();
my $matchAttribute = $config->{mapping}->{ $config->{matchpoint} }->{is};
$debug and warn $matchAttribute . " value: " . $ENV{$matchAttribute};
return $ENV{$matchAttribute} || '';
if ( any { /(^psgi|^plack)/i } keys %ENV ) {
$debug and warn $matchAttribute . " value: " . $ENV{"HTTP_".uc($matchAttribute)};
return $ENV{"HTTP_".uc($matchAttribute)} || '';
} else {
$debug and warn $matchAttribute . " value: " . $ENV{$matchAttribute};
return $ENV{$matchAttribute} || '';
}
}
# Checks for password correctness
@ -247,13 +253,22 @@ Map their attributes to what you want to see in koha
Tell apache that we wish to allow koha to authenticate via shibboleth.
This is as simple as adding the below to your virtualhost config:
This is as simple as adding the below to your virtualhost config (for CGI running):
<Location />
AuthType shibboleth
Require shibboleth
</Location>
Or (for Plack running):
<Location />
AuthType shibboleth
Require shibboleth
ShibUseEnvironment Off
ShibUseHeaders On
</Location>
=item 5.
Configure koha to listen for shibboleth environment variables.