@azure/msal-node
Version:
Microsoft Authentication Library for Node
146 lines (133 loc) • 5.12 kB
text/typescript
/*
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
*/
import { AuthError } from "@azure/msal-common/node";
/**
* NodeAuthErrorMessage class containing string constants used by error codes and messages.
*/
export const NodeAuthErrorMessage = {
invalidLoopbackAddressType: {
code: "invalid_loopback_server_address_type",
desc: "Loopback server address is not type string. This is unexpected.",
},
unableToLoadRedirectUri: {
code: "unable_to_load_redirectUrl",
desc: "Loopback server callback was invoked without a url. This is unexpected.",
},
noAuthCodeInResponse: {
code: "no_auth_code_in_response",
desc: "No auth code found in the server response. Please check your network trace to determine what happened.",
},
noLoopbackServerExists: {
code: "no_loopback_server_exists",
desc: "No loopback server exists yet.",
},
loopbackServerAlreadyExists: {
code: "loopback_server_already_exists",
desc: "Loopback server already exists. Cannot create another.",
},
loopbackServerTimeout: {
code: "loopback_server_timeout",
desc: "Timed out waiting for auth code listener to be registered.",
},
stateNotFoundError: {
code: "state_not_found",
desc: "State not found. Please verify that the request originated from msal.",
},
thumbprintMissing: {
code: "thumbprint_missing_from_client_certificate",
desc: "Client certificate does not contain a SHA-1 or SHA-256 thumbprint.",
},
redirectUriNotSupported: {
code: "redirect_uri_not_supported",
desc: "RedirectUri is not supported in this scenario. Please remove redirectUri from the request.",
},
};
export class NodeAuthError extends AuthError {
constructor(errorCode: string, errorMessage?: string) {
super(errorCode, errorMessage);
this.name = "NodeAuthError";
}
/**
* Creates an error thrown if loopback server address is of type string.
*/
static createInvalidLoopbackAddressTypeError(): NodeAuthError {
return new NodeAuthError(
NodeAuthErrorMessage.invalidLoopbackAddressType.code,
`${NodeAuthErrorMessage.invalidLoopbackAddressType.desc}`
);
}
/**
* Creates an error thrown if the loopback server is unable to get a url.
*/
static createUnableToLoadRedirectUrlError(): NodeAuthError {
return new NodeAuthError(
NodeAuthErrorMessage.unableToLoadRedirectUri.code,
`${NodeAuthErrorMessage.unableToLoadRedirectUri.desc}`
);
}
/**
* Creates an error thrown if the server response does not contain an auth code.
*/
static createNoAuthCodeInResponseError(): NodeAuthError {
return new NodeAuthError(
NodeAuthErrorMessage.noAuthCodeInResponse.code,
`${NodeAuthErrorMessage.noAuthCodeInResponse.desc}`
);
}
/**
* Creates an error thrown if the loopback server has not been spun up yet.
*/
static createNoLoopbackServerExistsError(): NodeAuthError {
return new NodeAuthError(
NodeAuthErrorMessage.noLoopbackServerExists.code,
`${NodeAuthErrorMessage.noLoopbackServerExists.desc}`
);
}
/**
* Creates an error thrown if a loopback server already exists when attempting to create another one.
*/
static createLoopbackServerAlreadyExistsError(): NodeAuthError {
return new NodeAuthError(
NodeAuthErrorMessage.loopbackServerAlreadyExists.code,
`${NodeAuthErrorMessage.loopbackServerAlreadyExists.desc}`
);
}
/**
* Creates an error thrown if the loopback server times out registering the auth code listener.
*/
static createLoopbackServerTimeoutError(): NodeAuthError {
return new NodeAuthError(
NodeAuthErrorMessage.loopbackServerTimeout.code,
`${NodeAuthErrorMessage.loopbackServerTimeout.desc}`
);
}
/**
* Creates an error thrown when the state is not present.
*/
static createStateNotFoundError(): NodeAuthError {
return new NodeAuthError(
NodeAuthErrorMessage.stateNotFoundError.code,
NodeAuthErrorMessage.stateNotFoundError.desc
);
}
/**
* Creates an error thrown when client certificate was provided, but neither the SHA-1 or SHA-256 thumbprints were provided
*/
static createThumbprintMissingError(): NodeAuthError {
return new NodeAuthError(
NodeAuthErrorMessage.thumbprintMissing.code,
NodeAuthErrorMessage.thumbprintMissing.desc
);
}
/**
* Creates an error thrown when redirectUri is provided in an unsupported scenario
*/
static createRedirectUriNotSupportedError(): NodeAuthError {
return new NodeAuthError(
NodeAuthErrorMessage.redirectUriNotSupported.code,
NodeAuthErrorMessage.redirectUriNotSupported.desc
);
}
}