From f3e83bfcc88423f0935a060ccd0bf6198da58351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jovan=20Kruni=C4=87?= Date: Fri, 25 Feb 2022 17:37:18 +0100 Subject: [PATCH] fix: add PKCE parameters for PAIA auth --- .../auth/paia/authorization-request-handler.ts | 15 +++++++++++++-- .../modules/auth/paia/token-request-handler.ts | 3 ++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/app/modules/auth/paia/authorization-request-handler.ts b/src/app/modules/auth/paia/authorization-request-handler.ts index 2bf8f74d..ff3d6a32 100644 --- a/src/app/modules/auth/paia/authorization-request-handler.ts +++ b/src/app/modules/auth/paia/authorization-request-handler.ts @@ -22,6 +22,7 @@ import { StringMap, AuthorizationError, AuthorizationErrorJson, + BUILT_IN_PARAMETERS, } from '@openid/appauth'; import {Browser} from 'ionic-appauth'; import {PAIAAuthorizationNotifier} from './paia-authorization-notifier'; @@ -41,8 +42,6 @@ const AUTHORIZATION_REQUEST_HANDLE_KEY = 'appauth_current_authorization_request'; export const AUTHORIZATION_RESPONSE_KEY = 'auth_response'; -// TODO: PAIA specific ...!!! use whatever you can from the parent class ! - export class PAIAAuthorizationRequestHandler { notifier: PAIAAuthorizationNotifier; @@ -208,6 +207,18 @@ export class PAIAAuthorizationRequestHandler { scope: request.scope, }; + // copy over extras + if (request.extras) { + for (const extra in request.extras) { + if ( + request.extras.hasOwnProperty(extra) && // check before inserting to requestMap + !BUILT_IN_PARAMETERS.includes(extra) + ) { + requestMap[extra] = request.extras[extra]; + } + } + } + const query = this.utils.stringify(requestMap); const baseUrl = configuration.authorizationEndpoint; diff --git a/src/app/modules/auth/paia/token-request-handler.ts b/src/app/modules/auth/paia/token-request-handler.ts index 8fc4e697..41152078 100644 --- a/src/app/modules/auth/paia/token-request-handler.ts +++ b/src/app/modules/auth/paia/token-request-handler.ts @@ -65,7 +65,8 @@ export class PAIATokenRequestHandler { method: 'POST', data: { patron: request.patron, - grant_type: 'client_credentials', + grant_type: 'authorization_code', + ...request.toStringMap(), }, headers: { 'Authorization': `Basic ${request.code}`,