Add CAS hooks (#2533)
This commit is contained in:
parent
caae30f24f
commit
cf3809a0de
|
@ -146,14 +146,22 @@ sub run {
|
|||
|
||||
$self->logger->debug("URL $url detected as an CAS LOGIN URL");
|
||||
|
||||
# GET parameters
|
||||
my $service = $self->p->getHiddenFormValue( $req, 'service' )
|
||||
|| $req->param('service');
|
||||
my $cas_request = {};
|
||||
|
||||
foreach my $param (qw/service renew gateway/) {
|
||||
$cas_request->{$param} =
|
||||
$self->p->getHiddenFormValue( $req, $param )
|
||||
|| $req->param($param);
|
||||
}
|
||||
|
||||
my $h = $self->p->processHook( $req, 'casGotRequest', $cas_request );
|
||||
return $h if ( $h != PE_OK );
|
||||
|
||||
my $service = $cas_request->{service};
|
||||
$service = '' if ( $self->p->checkXSSAttack( 'service', $service ) );
|
||||
my $renew = $self->p->getHiddenFormValue( $req, 'renew' )
|
||||
|| $req->param('renew');
|
||||
my $gateway = $self->p->getHiddenFormValue( $req, 'gateway' )
|
||||
|| $req->param('gateway');
|
||||
my $renew = $cas_request->{renew};
|
||||
my $gateway = $cas_request->{gateway};
|
||||
|
||||
my $casServiceTicket;
|
||||
|
||||
# If no service defined, exit
|
||||
|
@ -281,6 +289,10 @@ sub run {
|
|||
$Sinfos->{_utime} = $time;
|
||||
$Sinfos->{_casApp} = $app;
|
||||
|
||||
my $h = $self->p->processHook( $req, 'casGenerateServiceTicket',
|
||||
$cas_request, $app, $Sinfos );
|
||||
return $h if ( $h != PE_OK );
|
||||
|
||||
my $casServiceSession = $self->getCasSession( undef, $Sinfos );
|
||||
|
||||
unless ($casServiceSession) {
|
||||
|
@ -296,8 +308,9 @@ sub run {
|
|||
}
|
||||
|
||||
# Redirect to service
|
||||
my $service_url = $service;
|
||||
$service_url .= ( $service =~ /\?/ ? '&' : '?' )
|
||||
# cas_request may have been modified by hook
|
||||
my $service_url = $cas_request->{service};
|
||||
$service_url .= ( $service_url =~ /\?/ ? '&' : '?' )
|
||||
. build_urlencoded( ticket => $casServiceTicket );
|
||||
|
||||
$self->logger->debug("Redirect user to $service_url");
|
||||
|
@ -542,6 +555,11 @@ sub validate {
|
|||
|
||||
# Return success message
|
||||
$self->deleteCasSession($casServiceSession);
|
||||
|
||||
my $h =
|
||||
$self->p->processHook( $req, 'casGenerateValidateResponse', $username );
|
||||
return $self->returnCasValidateError() if ( $h != PE_OK );
|
||||
|
||||
return $self->returnCasValidateSuccess( $req, $username );
|
||||
}
|
||||
|
||||
|
@ -839,6 +857,12 @@ sub _validate2 {
|
|||
|
||||
# Return success message
|
||||
$self->deleteCasSession($casServiceSession);
|
||||
|
||||
my $h =
|
||||
$self->p->processHook( $req, 'casGenerateValidateResponse', $username,
|
||||
$attributes );
|
||||
return $self->returnCasValidateError() if ( $h != PE_OK );
|
||||
|
||||
return $self->returnCasServiceValidateSuccess( $req, $username,
|
||||
$casProxyGrantingTicketIOU, $proxies, $attributes );
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user