Error classes and handler for Oauth 2.0 spec errors, patterned after the well-known http-errors lib.
Install the module with: npm install @interop/oauth2-errors
import {InvalidClient} from '@interop/oauth2-errors';
// or
const OauthErrors = require('@interop/oauth2-errors');
Follows the Oauth 2.0 Spec for errors, see here. All errors have HTTP response status code of 400, except as noted.
InvalidClient
- invalid_client (HTTP 401)InvalidGrant
- invalid_grantInvalidRequest
- invalid_requestInvalidScope
- invalid_scopeUnauthorizedClient
- unauthorized_clientUnauthorizedGrantType
- unauthorized_grant_type
And Authorization Errors:
AccessDenied
- access_denied (HTTP 403)UnsupportedResponseType
- unsupported_response_typeServerError
- server_error (HTTP 500)TemporarilyUnavailable
- temporarily_unavailable (HTTP 503)
Extension errors from (RFC6750) OAuth 2.0 Bearer Token Usage
InvalidToken
- invalid_token (HTTP 401)InsufficientScope
- insufficient_scope (HTTP 403)
Each error is a class, so can be instantiated by calling new
.
const invalidGrantError = new OauthErrors.InvalidGrant()
Each class can optionally take a params
argument with 2 optional properties:
description
- error_descriptionuri
- error_uri
const invalidRequestError = new OauthErrors.InvalidRequest({
description: 'more description this bad request',
uri: 'https://mydomain.com/invalid_request'
})
-
toString
- Creates a JSON string with the following properties:
error
error_description
- [optional]error_uri
- [optional]
- Creates a JSON string with the following properties:
-
respond
- ExpressJS convenience response handler
- Takes the ExpressJS
response
as the sole argument
const OauthErrors = require('@interop/oauth2-errors');
...
// Using the respond convenience fn
function authorize(req, res, next) {
if (invalidClient()) {
const invalidClientErr = new OauthErrors.InvalidClient()
return invalidClientErr.respond(res)
}
}
- v2.0.0 - Expand
statusCode
of various errors beyond 400 - Sep 23, 2020 - v1.0.0 - Initial Release - April 13, 2018
- v1.0.1 - Update compilation - April 13, 2018
- v1.0.2 - Improve tests - April 13, 2018
- v1.0.3 - Add authorization errors - April 14, 2018
Copyright (c) 2018 Richard Lucas. Licensed under the MIT license.