Catalyst-Plugin-OpenIDConnect

 view release on metacpan or  search on metacpan

META.json  view on Meta::CPAN

            "Crypt::OpenSSL::RSA" : "0.38",
            "Crypt::PK::RSA" : "0",
            "Data::UUID" : "0",
            "DateTime" : "0",
            "DateTime::Format::ISO8601" : "0",
            "Digest::SHA" : "0",
            "JSON::MaybeXS" : "0",
            "MIME::Base64" : "0",
            "Module::Runtime" : "0",
            "Moose" : "0",
            "Try::Tiny" : "0",
            "URI" : "0",
            "namespace::autoclean" : "0",
            "perl" : "5.020"
         }
      }
   },
   "release_status" : "stable",
   "resources" : {
      "bugtracker" : {
         "web" : "https://github.com/tfrayner/catalyst-plugin-openidconnect/issues"

META.yml  view on Meta::CPAN

  Crypt::OpenSSL::RSA: '0.38'
  Crypt::PK::RSA: '0'
  Data::UUID: '0'
  DateTime: '0'
  DateTime::Format::ISO8601: '0'
  Digest::SHA: '0'
  JSON::MaybeXS: '0'
  MIME::Base64: '0'
  Module::Runtime: '0'
  Moose: '0'
  Try::Tiny: '0'
  URI: '0'
  namespace::autoclean: '0'
  perl: '5.020'
resources:
  bugtracker: https://github.com/tfrayner/catalyst-plugin-openidconnect/issues
  repository: https://github.com/tfrayner/catalyst-plugin-openidconnect.git
version: '0.15'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'

cpanfile  view on Meta::CPAN

requires 'namespace::autoclean';
requires 'JSON::MaybeXS';
requires 'Crypt::OpenSSL::RSA', '>=0.38'; # for RSA signing/verification with JWT (openssl 3 support)
requires 'Crypt::PK::RSA'; # for JWK key parameter extraction in JWKS endpoint
requires 'Digest::SHA';
requires 'MIME::Base64';
requires 'DateTime';
requires 'DateTime::Format::ISO8601';
requires 'Config::General';
requires 'URI';
requires 'Try::Tiny';
requires 'Data::UUID';
requires 'Bytes::Random::Secure';
requires 'Crypt::Misc'; # for slow_eq() constant-time client secret comparison (HIGH-3)
requires 'Module::Runtime';

# Optional: install Redis::Fast (preferred) or Redis for the Redis store backend.
# These are not required unless you use Store::Redis.
feature 'redis', 'Redis store backend for multi-process (FastCGI) deployments' => sub {
    recommends 'Redis::Fast';
    recommends 'Redis';

lib/Catalyst/Plugin/OpenIDConnect.pm  view on Meta::CPAN

use Moose::Role;
use namespace::autoclean;

use Catalyst::Plugin::OpenIDConnect::Context;
use Catalyst::Plugin::OpenIDConnect::Utils::JWT;
use Catalyst::Plugin::OpenIDConnect::Utils::Store;
use Catalyst::Plugin::OpenIDConnect::Role::Store;
use Crypt::OpenSSL::RSA;
use Crypt::PK::RSA;
use JSON::MaybeXS qw(encode_json decode_json);
use Try::Tiny;
use DateTime;
use DateTime::Format::ISO8601;
use Data::UUID;
use URI;

our $VERSION = '0.15';

=head1 NAME

Catalyst::Plugin::OpenIDConnect - OpenID Connect provider plugin for Catalyst

lib/Catalyst/Plugin/OpenIDConnect/Controller/Root.pm  view on Meta::CPAN


BEGIN { extends 'Catalyst::Controller'; }

use JSON::MaybeXS qw(encode_json decode_json);
use MIME::Base64 qw(encode_base64 decode_base64 encode_base64url);
use Digest::SHA qw(sha256);
use Crypt::PK::RSA;
use Crypt::Misc qw(slow_eq);
use URI;
use DateTime;
use Try::Tiny;
use Data::UUID;

# Set the namespace for OpenIDConnect routes
__PACKAGE__->config(namespace => 'openidconnect');

# Module-level UUID generator for refresh token JTI claims (MED-1).
my $_uuid = Data::UUID->new();

=head1 NAME

lib/Catalyst/Plugin/OpenIDConnect/Utils/JWT.pm  view on Meta::CPAN

use strict;
use warnings;
use Moose;
use namespace::autoclean;

use JSON::MaybeXS qw(encode_json decode_json);
use MIME::Base64 qw(encode_base64 decode_base64);
use Digest::SHA qw(sha256);
use Crypt::OpenSSL::RSA;
use DateTime;
use Try::Tiny;

=head1 NAME

Catalyst::Plugin::OpenIDConnect::Utils::JWT - JWT handling for OpenID Connect

=head1 DESCRIPTION

Provides JWT signing and verification functionality using RS256 (RSA SHA-256) algorithm
for OpenID Connect token creation and validation.

lib/Catalyst/Plugin/OpenIDConnect/Utils/Store.pm  view on Meta::CPAN

package Catalyst::Plugin::OpenIDConnect::Utils::Store;

use strict;
use warnings;
use Moose;
use namespace::autoclean;

use Try::Tiny;
use Bytes::Random::Secure qw(random_bytes);
use MIME::Base64 qw(encode_base64url);

with 'Catalyst::Plugin::OpenIDConnect::Role::Store';

=head1 NAME

Catalyst::Plugin::OpenIDConnect::Utils::Store - In-process memory store for OIDC state

=head1 DESCRIPTION

lib/Catalyst/Plugin/OpenIDConnect/Utils/Store/Redis.pm  view on Meta::CPAN

package Catalyst::Plugin::OpenIDConnect::Utils::Store::Redis;

use strict;
use warnings;
use Moose;
use namespace::autoclean;

use JSON::MaybeXS qw(encode_json decode_json);
use Bytes::Random::Secure qw(random_bytes);
use MIME::Base64 qw(encode_base64url);
use Try::Tiny;

with 'Catalyst::Plugin::OpenIDConnect::Role::Store';

=head1 NAME

Catalyst::Plugin::OpenIDConnect::Utils::Store::Redis - Redis-backed OIDC store

=head1 SYNOPSIS

    # In your Catalyst application configuration:



( run in 1.470 second using v1.01-cache-2.11-cpan-5fbc6bb55f2 )