2020-11-05 15:24:45 +01:00
|
|
|
package t::OidcHookPlugin;
|
|
|
|
|
|
|
|
use Mouse;
|
|
|
|
extends 'Lemonldap::NG::Portal::Main::Plugin';
|
|
|
|
|
|
|
|
use Lemonldap::NG::Portal::Main::Constants qw(PE_OK);
|
|
|
|
use Data::Dumper;
|
|
|
|
use Test::More;
|
|
|
|
|
|
|
|
use constant hook => {
|
2021-05-31 11:23:38 +02:00
|
|
|
oidcGenerateCode => 'modifyRedirectUri',
|
2021-03-10 15:47:46 +01:00
|
|
|
oidcGenerateIDToken => 'addClaimToIDToken',
|
|
|
|
oidcGenerateUserInfoResponse => 'addClaimToUserInfo',
|
|
|
|
oidcGotRequest => 'addScopeToRequest',
|
|
|
|
oidcResolveScope => 'addHardcodedScope',
|
|
|
|
oidcGenerateAccessToken => 'addClaimToAccessToken',
|
|
|
|
oidcGotClientCredentialsGrant => 'oidcGotClientCredentialsGrant',
|
2020-11-05 15:24:45 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
sub addClaimToIDToken {
|
|
|
|
my ( $self, $req, $payload, $rp ) = @_;
|
|
|
|
$payload->{"id_token_hook"} = 1;
|
|
|
|
return PE_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
sub addClaimToUserInfo {
|
2022-03-11 12:07:41 +01:00
|
|
|
my ( $self, $req, $userinfo, $rp, $session_data ) = @_;
|
2020-11-05 15:24:45 +01:00
|
|
|
$userinfo->{"userinfo_hook"} = 1;
|
2022-03-11 12:07:41 +01:00
|
|
|
$userinfo->{"_auth"} = $session_data->{_auth};
|
2020-11-05 15:24:45 +01:00
|
|
|
return PE_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
sub addScopeToRequest {
|
|
|
|
my ( $self, $req, $oidc_request ) = @_;
|
|
|
|
$oidc_request->{scope} = $oidc_request->{scope} . " my_hooked_scope";
|
|
|
|
|
|
|
|
return PE_OK;
|
|
|
|
}
|
|
|
|
|
2021-01-14 15:31:36 +01:00
|
|
|
sub addHardcodedScope {
|
|
|
|
my ( $self, $req, $scopeList, $rp ) = @_;
|
2021-10-27 00:18:56 +02:00
|
|
|
push @{$scopeList}, "myscope" if $rp ne "scopelessrp";
|
2021-01-14 15:31:36 +01:00
|
|
|
|
|
|
|
return PE_OK;
|
|
|
|
}
|
|
|
|
|
2021-05-31 11:23:38 +02:00
|
|
|
sub modifyRedirectUri {
|
|
|
|
my ( $self, $req, $oidc_request, $rp, $code_payload ) = @_;
|
|
|
|
my $original_uri = $oidc_request->{redirect_uri};
|
|
|
|
$oidc_request->{redirect_uri} = "$original_uri?hooked=1";
|
|
|
|
return PE_OK;
|
|
|
|
}
|
|
|
|
|
2021-01-28 15:06:19 +01:00
|
|
|
sub addClaimToAccessToken {
|
|
|
|
my ( $self, $req, $payload, $rp ) = @_;
|
|
|
|
$payload->{"access_token_hook"} = 1;
|
|
|
|
return PE_OK;
|
|
|
|
}
|
|
|
|
|
2021-03-10 15:47:46 +01:00
|
|
|
sub oidcGotClientCredentialsGrant {
|
|
|
|
my ( $self, $req, $payload, $rp ) = @_;
|
|
|
|
$payload->{"hooked_username"} = "hook";
|
|
|
|
return PE_OK;
|
|
|
|
}
|
|
|
|
|
2020-11-05 15:24:45 +01:00
|
|
|
1;
|
|
|
|
|