From a2d9557a8f0cfffbf50e502eefa067a5c705c1fb Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Fri, 29 Nov 2013 14:16:27 +0000 Subject: [PATCH] BUG8446, Follow up: Adds Shibboleth authentication - Use syspref OpacBaseURL instead of ENV{'SERVER_NAME'} as this wont work if koha is behind a reverse proxy. - To use multiple vhosts, set OpacBaseURL per vhost explicitly with 'SetEnv OpacBaseURL Value' as per Bug 10325 BUG8446, Follow up: Adds Shibboleth authentication - Ensure user is returned to requested page after authentication - Added querystring to the target path in shibboleth URL so that when a user is authenticated he/she is returned to the correct page they requested before authentication. Example where this is important: When a user clicks a direct biblio link of the form - /opac-detail.pl?biblionumber=12345 BUG8446, Follow up: Remove unused imports from scripts - Remove import of deprecated C4::Utils module from shibboleth authentication module: Auth_with_shibboleth.pm --- C4/Auth_with_Shibboleth.pm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/C4/Auth_with_Shibboleth.pm b/C4/Auth_with_Shibboleth.pm index 3b0a9fb..13f4b79 100644 --- a/C4/Auth_with_Shibboleth.pm +++ b/C4/Auth_with_Shibboleth.pm @@ -22,7 +22,6 @@ use warnings; use C4::Debug; use C4::Context; -use C4::Utils qw( :all ); use CGI; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $debug); @@ -40,7 +39,7 @@ my $protocol = "https://"; # Logout from Shibboleth sub logout_shib { my ($query) = @_; - my $uri = $protocol . $ENV{'SERVER_NAME'}; + my $uri = $protocol . C4::Context->preference('OPACBaseURL'); print $query->redirect( $uri . "/Shibboleth.sso/Logout?return=$uri" ); } @@ -48,8 +47,11 @@ sub logout_shib { sub login_shib_url { my ($query) = @_; - my $param = $protocol . $ENV{'SERVER_NAME'} . $query->script_name(); - my $uri = $protocol . $ENV{'SERVER_NAME'} . "/Shibboleth.sso/Login?target=$param"; + my $param = $protocol . C4::Context->preference('OPACBaseURL') . $query->script_name(); + if ( $query->query_string() ) { + $param = $param . '%3F' . $query->query_string(); + } + my $uri = $protocol . C4::Context->preference('OPACBaseURL') . "/Shibboleth.sso/Login?target=$param"; return $uri; } -- 1.7.10.4