@okta-dfuhriman/okta-auth-js
Version:
The Okta Auth SDK
41 lines (36 loc) • 1.31 kB
text/typescript
/* eslint-disable @typescript-eslint/no-non-null-assertion */
import { OAuthTransactionMeta, OktaAuthOAuthInterface, PKCETransactionMeta, TokenParams } from '../types';
import { getOAuthUrls } from './oauth';
export function createOAuthMeta(
sdk: OktaAuthOAuthInterface,
tokenParams: TokenParams
): OAuthTransactionMeta | PKCETransactionMeta {
const issuer = sdk.options.issuer!;
const urls = getOAuthUrls(sdk, tokenParams);
const oauthMeta: OAuthTransactionMeta = {
issuer,
urls,
clientId: tokenParams.clientId!,
redirectUri: tokenParams.redirectUri!,
responseType: tokenParams.responseType!,
responseMode: tokenParams.responseMode!,
scopes: tokenParams.scopes!,
state: tokenParams.state!,
nonce: tokenParams.nonce!,
ignoreSignature: tokenParams.ignoreSignature!,
acrValues: tokenParams.acrValues,
requestUri: tokenParams?.requestUri,
clientAssertion: tokenParams?.clientAssertion
};
if (tokenParams.pkce === false) {
// Implicit flow or authorization_code without PKCE
return oauthMeta;
}
const pkceMeta: PKCETransactionMeta = {
...oauthMeta,
codeVerifier: tokenParams.codeVerifier!,
codeChallengeMethod: tokenParams.codeChallengeMethod!,
codeChallenge: tokenParams.codeChallenge!,
};
return pkceMeta;
}