You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.7 KiB
71 lines
1.7 KiB
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 => {
|
|
oidcGenerateCode => 'modifyRedirectUri',
|
|
oidcGenerateIDToken => 'addClaimToIDToken',
|
|
oidcGenerateUserInfoResponse => 'addClaimToUserInfo',
|
|
oidcGotRequest => 'addScopeToRequest',
|
|
oidcResolveScope => 'addHardcodedScope',
|
|
oidcGenerateAccessToken => 'addClaimToAccessToken',
|
|
oidcGotClientCredentialsGrant => 'oidcGotClientCredentialsGrant',
|
|
};
|
|
|
|
sub init {
|
|
my ($self) = @_;
|
|
return 1;
|
|
}
|
|
|
|
sub addClaimToIDToken {
|
|
my ( $self, $req, $payload, $rp ) = @_;
|
|
$payload->{"id_token_hook"} = 1;
|
|
return PE_OK;
|
|
}
|
|
|
|
sub addClaimToUserInfo {
|
|
my ( $self, $req, $userinfo ) = @_;
|
|
$userinfo->{"userinfo_hook"} = 1;
|
|
return PE_OK;
|
|
}
|
|
|
|
sub addScopeToRequest {
|
|
my ( $self, $req, $oidc_request ) = @_;
|
|
$oidc_request->{scope} = $oidc_request->{scope} . " my_hooked_scope";
|
|
|
|
return PE_OK;
|
|
}
|
|
|
|
sub addHardcodedScope {
|
|
my ( $self, $req, $scopeList, $rp ) = @_;
|
|
push @{$scopeList}, "myscope";
|
|
|
|
return PE_OK;
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
sub addClaimToAccessToken {
|
|
my ( $self, $req, $payload, $rp ) = @_;
|
|
$payload->{"access_token_hook"} = 1;
|
|
return PE_OK;
|
|
}
|
|
|
|
sub oidcGotClientCredentialsGrant {
|
|
my ( $self, $req, $payload, $rp ) = @_;
|
|
$payload->{"hooked_username"} = "hook";
|
|
return PE_OK;
|
|
}
|
|
|
|
1;
|
|
|
|
|