Apply patch on old Portal files in trunk (#1088)
This commit is contained in:
parent
fdf74d2f3a
commit
72cc77aab4
|
@ -211,8 +211,12 @@ sub extractFormInfo {
|
|||
return PE_SAML_CONDITIONS_ERROR;
|
||||
}
|
||||
|
||||
my $relayStateURL =
|
||||
$self->{samlIDPMetaDataOptions}->{$idpConfKey}
|
||||
->{samlIDPMetaDataOptionsRelayStateURL};
|
||||
|
||||
# Extract RelayState information
|
||||
if ( $self->extractRelayState($relaystate) ) {
|
||||
if ( $self->extractRelayState( $relaystate, $relayStateURL ) ) {
|
||||
$self->lmLog( "RelayState $relaystate extracted", 'debug' );
|
||||
}
|
||||
|
||||
|
|
|
@ -1240,33 +1240,43 @@ sub storeRelayState {
|
|||
return $relaystate_id;
|
||||
}
|
||||
|
||||
## @method boolean extractRelayState(string relaystate)
|
||||
## @method boolean extractRelayState(string relaystate, boolean relayStateURL)
|
||||
# Extract RelayState information into $self
|
||||
# @param relaystate Relay state value
|
||||
# @param relayStateURL Allow Relay state value to be the redirection URL
|
||||
# @return result
|
||||
sub extractRelayState {
|
||||
my ( $self, $relaystate ) = @_;
|
||||
my ( $self, $relaystate, $relayStateURL ) = @_;
|
||||
|
||||
return 0 unless $relaystate;
|
||||
|
||||
# Open relaystate session
|
||||
my $samlSessionInfo = $self->getSamlSession($relaystate);
|
||||
|
||||
return 0 unless $samlSessionInfo;
|
||||
|
||||
# Push values in $self
|
||||
foreach ( keys %{ $samlSessionInfo->data } ) {
|
||||
next if $_ =~ /(type|_session_id|_utime)/;
|
||||
$self->{$_} = $samlSessionInfo->data->{$_};
|
||||
}
|
||||
|
||||
# delete relaystate session
|
||||
if ( $samlSessionInfo->remove ) {
|
||||
$self->lmLog( "Relaystate $relaystate was deleted", 'debug' );
|
||||
if ( $relayStateURL and $relaystate =~ /^https?:\/\// ) {
|
||||
$self->lmLog( "RelayState is a redirection URL: $relaystate", 'debug' );
|
||||
$self->{urldc} = $relaystate;
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
$self->lmLog( "Unable to delete relaystate $relaystate", 'error' );
|
||||
$self->lmLog( $samlSessionInfo->error, 'error' );
|
||||
|
||||
# Open relaystate session
|
||||
my $samlSessionInfo = $self->getSamlSession($relaystate);
|
||||
|
||||
return 0 unless $samlSessionInfo;
|
||||
|
||||
# Push values in $self
|
||||
foreach ( keys %{ $samlSessionInfo->data } ) {
|
||||
next if $_ =~ /(type|_session_id|_utime)/;
|
||||
$self->{$_} = $samlSessionInfo->data->{$_};
|
||||
}
|
||||
|
||||
# delete relaystate session
|
||||
if ( $samlSessionInfo->remove ) {
|
||||
$self->lmLog( "Relaystate $relaystate was deleted", 'debug' );
|
||||
}
|
||||
else {
|
||||
$self->lmLog( "Unable to delete relaystate $relaystate", 'error' );
|
||||
$self->lmLog( $samlSessionInfo->error, 'error' );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
|
Loading…
Reference in New Issue
Block a user