91 lines
2.9 KiB
JavaScript
91 lines
2.9 KiB
JavaScript
/*! @azure/msal-common v14.4.0 2023-11-07 */
|
|
'use strict';
|
|
import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';
|
|
import { CodeChallengeMethodValues, PromptValue } from '../utils/Constants.mjs';
|
|
import { redirectUriEmpty, invalidPromptValue, invalidClaims, pkceParamsMissing, invalidCodeChallengeMethod } from '../error/ClientConfigurationErrorCodes.mjs';
|
|
|
|
/*
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License.
|
|
*/
|
|
/**
|
|
* Validates server consumable params from the "request" objects
|
|
*/
|
|
class RequestValidator {
|
|
/**
|
|
* Utility to check if the `redirectUri` in the request is a non-null value
|
|
* @param redirectUri
|
|
*/
|
|
static validateRedirectUri(redirectUri) {
|
|
if (!redirectUri) {
|
|
throw createClientConfigurationError(redirectUriEmpty);
|
|
}
|
|
}
|
|
/**
|
|
* Utility to validate prompt sent by the user in the request
|
|
* @param prompt
|
|
*/
|
|
static validatePrompt(prompt) {
|
|
const promptValues = [];
|
|
for (const value in PromptValue) {
|
|
promptValues.push(PromptValue[value]);
|
|
}
|
|
if (promptValues.indexOf(prompt) < 0) {
|
|
throw createClientConfigurationError(invalidPromptValue);
|
|
}
|
|
}
|
|
static validateClaims(claims) {
|
|
try {
|
|
JSON.parse(claims);
|
|
}
|
|
catch (e) {
|
|
throw createClientConfigurationError(invalidClaims);
|
|
}
|
|
}
|
|
/**
|
|
* Utility to validate code_challenge and code_challenge_method
|
|
* @param codeChallenge
|
|
* @param codeChallengeMethod
|
|
*/
|
|
static validateCodeChallengeParams(codeChallenge, codeChallengeMethod) {
|
|
if (!codeChallenge || !codeChallengeMethod) {
|
|
throw createClientConfigurationError(pkceParamsMissing);
|
|
}
|
|
else {
|
|
this.validateCodeChallengeMethod(codeChallengeMethod);
|
|
}
|
|
}
|
|
/**
|
|
* Utility to validate code_challenge_method
|
|
* @param codeChallengeMethod
|
|
*/
|
|
static validateCodeChallengeMethod(codeChallengeMethod) {
|
|
if ([
|
|
CodeChallengeMethodValues.PLAIN,
|
|
CodeChallengeMethodValues.S256,
|
|
].indexOf(codeChallengeMethod) < 0) {
|
|
throw createClientConfigurationError(invalidCodeChallengeMethod);
|
|
}
|
|
}
|
|
/**
|
|
* Removes unnecessary, duplicate, and empty string query parameters from extraQueryParameters
|
|
* @param request
|
|
*/
|
|
static sanitizeEQParams(eQParams, queryParams) {
|
|
if (!eQParams) {
|
|
return {};
|
|
}
|
|
// Remove any query parameters already included in SSO params
|
|
queryParams.forEach((_value, key) => {
|
|
if (eQParams[key]) {
|
|
delete eQParams[key];
|
|
}
|
|
});
|
|
// remove empty string parameters
|
|
return Object.fromEntries(Object.entries(eQParams).filter((kv) => kv[1] !== ""));
|
|
}
|
|
}
|
|
|
|
export { RequestValidator };
|
|
//# sourceMappingURL=RequestValidator.mjs.map
|