diff options
author | Dave Arter <davea@mysociety.org> | 2020-05-13 16:38:09 +0100 |
---|---|---|
committer | Dave Arter <davea@mysociety.org> | 2020-07-02 14:38:29 +0100 |
commit | 3b958bc30c5ccb6ea3143c08d1ca65dc0bf4b9bc (patch) | |
tree | f28b82682eae51d32b6c7b9a824226ef66d7d31a /perllib/OIDC/Lite/Client/WebServer/AuthCodeFlow.pm | |
parent | 53b9f82cbb7fe81484b8bbf434f0b0acd925b454 (diff) |
Rename O::L::C::W::Azure to O::L::C::W::AuthCodeFlow
Turns out there’s nothing strictly Azure-specific about it.
Diffstat (limited to 'perllib/OIDC/Lite/Client/WebServer/AuthCodeFlow.pm')
-rw-r--r-- | perllib/OIDC/Lite/Client/WebServer/AuthCodeFlow.pm | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/perllib/OIDC/Lite/Client/WebServer/AuthCodeFlow.pm b/perllib/OIDC/Lite/Client/WebServer/AuthCodeFlow.pm new file mode 100644 index 000000000..33a9a788f --- /dev/null +++ b/perllib/OIDC/Lite/Client/WebServer/AuthCodeFlow.pm @@ -0,0 +1,42 @@ +package OIDC::Lite::Client::WebServer::AuthCodeFlow; + +use strict; +use warnings; +use parent 'OIDC::Lite::Client::WebServer'; + +use OIDC::Lite::Client::IDTokenResponseParser; + +=head1 NAME + +OIDC::Lite::Client::WebServer::AuthCodeFlow - extension to auth against an +identity provider using the authorization code flow, such as Azure AD B2C or +Google OAuth 2.0. +More info: https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowSteps + +OIDC::Lite doesn't appear to support the authorisation code flow to get an +ID token - only an access token. This flow returns all its claims in the id_token +(and may not support a UserInfo endpoint e.g. Azure AD B2C), so this extension +adds support for parsing the id_token when calling get_access_token. + +=cut + +=head2 new + +Overrides response_parser so that get_access_token returns a +L<OIDC::Lite::Model::IDToken> object. + +NB this does not perform any verification of the id_token. It's assumed to be +safe as it's come directly from the OpenID IdP and not an untrusted user's +browser. + +=cut + +sub new { + my $self = shift->next::method(@_); + + $self->{response_parser} = OIDC::Lite::Client::IDTokenResponseParser->new; + + return $self; +} + +1; |