Lemonldap-NG-Portal
view release on metacpan or search on metacpan
lib/Lemonldap/NG/Portal/Lib/SAML.pm view on Meta::CPAN
$self->checkLassoError($@);
return;
}
my $content = $value;
# If a string was provided, wrap it in a TextNode
if ( !ref($content) ) {
# Decode UTF-8
$self->logger->debug("Decode UTF8 value $value") if $force_utf8;
$value = decode( "utf8", $value ) if $force_utf8;
$self->logger->debug("Create attribute value $value");
eval { $content = Lasso::MiscTextNode->new(); };
if ($@) {
$self->checkLassoError($@);
return;
}
$content->text_child(1);
$content->content($value);
}
$saml2value->any($content);
return $saml2value;
}
## @method int getEncryptionMode(string encryption_mode)
# Return Lasso encryption mode
# @param encryption_mode Encryption mode string
# @return Lasso encryption mode
sub getEncryptionMode {
my ( $self, $encryption_mode ) = @_;
return Lasso::Constants::ENCRYPTION_MODE_NAMEID
if ( $encryption_mode =~ /^nameid$/i );
return Lasso::Constants::ENCRYPTION_MODE_ASSERTION
if ( $encryption_mode =~ /^assertion$/i );
return Lasso::Constants::ENCRYPTION_MODE_NONE;
}
## @method boolean setProviderEncryptionMode(Lasso::Provider provider, int encryption_mode)
# Set encryption mode on a provider
# @param provider Lasso::Provider object
# @param encryption_mode Lasso encryption mode
# @return result
sub setProviderEncryptionMode {
my ( $self, $provider, $encryption_mode ) = @_;
eval {
Lasso::Provider::set_encryption_mode( $provider, $encryption_mode );
};
return $self->checkLassoError($@);
}
## @method boolean updateSAMLSecondarySessions(string old_session_id, string new_session_id)
# Update _saml_id of secondary sessions when the session ID is changed (upgrade)
sub updateSAMLSecondarySessions {
my ( $self, $req, $old_session_id, $new_session_id ) = @_;
# Find SAML sessions
my $saml_sessions =
Lemonldap::NG::Common::Apache::Session->searchOn( $self->amOpts,
"_saml_id", $old_session_id );
if (
my @saml_sessions_keys =
grep { $saml_sessions->{$_}->{_session_kind} eq $self->sessionKind }
keys %$saml_sessions
)
{
foreach my $saml_session (@saml_sessions_keys) {
# Get session
$self->logger->debug("Retrieve SAML session $saml_session");
my $samlSessionInfo = $self->getSamlSession($saml_session);
# Update session
if ($samlSessionInfo) {
$samlSessionInfo->update( { '_saml_id' => $new_session_id } );
}
}
}
return;
}
## @method boolean deleteSAMLSecondarySessions(string session_id)
# Find and delete SAML sessions bounded to a primary session
# @param session_id Primary session ID
# @return result
sub deleteSAMLSecondarySessions {
my ( $self, $session_id ) = @_;
my $result = 1;
# Find SAML sessions
my $saml_sessions =
Lemonldap::NG::Common::Apache::Session->searchOn( $self->amOpts,
"_saml_id", $session_id );
if (
my @saml_sessions_keys =
grep { $saml_sessions->{$_}->{_session_kind} eq $self->sessionKind }
keys %$saml_sessions
)
{
foreach my $saml_session (@saml_sessions_keys) {
# Get session
$self->logger->debug("Retrieve SAML session $saml_session");
my $samlSessionInfo = $self->getSamlSession($saml_session);
# Delete session
if ( $samlSessionInfo->remove ) {
$self->logger->debug("SAML session $saml_session deleted");
( run in 0.560 second using v1.01-cache-2.11-cpan-ceb78f64989 )