UNPKG

@betha-plataforma/oauth

Version:

Biblioteca JavaScript para lidar com o fluxo do OAuth 2.0 em aplicações Web, com suporte a TypeScript.

67 lines 6.67 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CodePKCEFlow = void 0; const Helpers_1 = require("../../Helpers"); const AuthServerResponseDeserializer_1 = require("../../Parsers/AuthServerResponseDeserializer"); const Handlers_1 = require("../Handlers"); const PKCE_1 = require("../PKCE"); const Transaction_1 = require("../Transaction"); class CodePKCEFlow { constructor(api, storage) { this.authorize = (_, configs) => __awaiter(this, void 0, void 0, function* () { const authorizeUrl = yield this.getAuthorizeURL(false, configs); return Handlers_1.RedirectAuthenticationHandler.navigate(authorizeUrl); }); this.handleAuthorizeResponse = () => __awaiter(this, void 0, void 0, function* () { return this.handleBasicAuthorize(); }); this.silentAuthorize = () => __awaiter(this, void 0, void 0, function* () { const authorizeUrl = yield this.getAuthorizeURL(false); const serializedResponse = yield Handlers_1.IFrameAuthenticationHandler.navigate(authorizeUrl); return this.handleBasicAuthorize(serializedResponse); }); this.exchangeCode = (authorizeResponse, silent = false) => __awaiter(this, void 0, void 0, function* () { const transaction = this.transactionManager.getStoredTransaction(authorizeResponse.state); if (!transaction) { return Promise.reject({ error: 'invalid_state', error_description: 'application state not found', }); } return this.api.authorization.token({ code: authorizeResponse.code, code_verifier: transaction && transaction.data ? transaction.data.verifier : void 0, grant_type: 'authorization_code', }, silent); }); this.handleBasicAuthorize = (serializedResponse = Helpers_1.getQueryParams()) => __awaiter(this, void 0, void 0, function* () { const authorizeResponse = yield AuthServerResponseDeserializer_1.deserializeResponse(serializedResponse); const sessionState = yield AuthServerResponseDeserializer_1.deserializeResponse(serializedResponse); const accessToken = yield this.exchangeCode(authorizeResponse); return { accessToken, sessionState }; }); this.getAuthorizeURL = (silent = false, configs = {}) => __awaiter(this, void 0, void 0, function* () { const pair = yield PKCE_1.generateCodeChallengePair(); const transaction = this.transactionManager.startTransaction(pair); return this.api.authorization.getAuthorizeURL({ code_challenge: transaction.data.challenge, code_challenge_method: 'S256', response_type: 'code', state: transaction.state, }, silent, false, configs); }); this.api = api; this.transactionManager = new Transaction_1.TransactionManager(storage); } } exports.CodePKCEFlow = CodePKCEFlow; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29kZVBLQ0VGbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9Qcm90b2NvbC9GbG93L0NvZGVQS0NFRmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFFQSwyQ0FBK0M7QUFDL0MsaUdBQW1GO0FBR25GLDBDQUF5RjtBQUN6RixrQ0FBdUU7QUFDdkUsZ0RBQWlFO0FBR2pFLE1BQWEsWUFBWTtJQUl2QixZQUFZLEdBQVEsRUFBRSxPQUFvQjtRQUsxQixjQUFTLEdBQUcsQ0FBTyxDQUFVLEVBQUUsT0FBcUIsRUFBaUIsRUFBRTtZQUNyRixNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hFLE9BQU8sd0NBQTZCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQSxDQUFDO1FBRWMsNEJBQXVCLEdBQUcsR0FBK0IsRUFBRTtZQUN6RSxPQUFPLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3JDLENBQUMsQ0FBQSxDQUFDO1FBRWMsb0JBQWUsR0FBRyxHQUErQixFQUFFO1lBQ2pFLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2RCxNQUFNLGtCQUFrQixHQUFXLE1BQU0sc0NBQTJCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRTVGLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFBLENBQUM7UUFFYyxpQkFBWSxHQUFHLENBQzdCLGlCQUFvQyxFQUNwQyxTQUFrQixLQUFLLEVBQ08sRUFBRTtZQUNoQyxNQUFNLFdBQVcsR0FBbUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUM5RixpQkFBaUIsQ0FBQyxLQUFLLENBQ3hCLENBQUM7WUFFRixJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNoQixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUM7b0JBQ3BCLEtBQUssRUFBRSxlQUFlO29CQUN0QixpQkFBaUIsRUFBRSw2QkFBNkI7aUJBQ2pELENBQUMsQ0FBQzthQUNKO1lBRUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQ2pDO2dCQUNFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUM1QixhQUFhLEVBQUUsV0FBVyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ25GLFVBQVUsRUFBRSxvQkFBb0I7YUFDakMsRUFDRCxNQUFNLENBQ1AsQ0FBQztRQUNKLENBQUMsQ0FBQSxDQUFDO1FBRWUseUJBQW9CLEdBQUcsQ0FDdEMscUJBQTZCLHdCQUFjLEVBQUUsRUFDdkIsRUFBRTtZQUN4QixNQUFNLGlCQUFpQixHQUFzQixNQUFNLG9EQUFtQixDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDM0YsTUFBTSxZQUFZLEdBQXlCLE1BQU0sb0RBQW1CLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN6RixNQUFNLFdBQVcsR0FBd0IsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFFcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUN2QyxDQUFDLENBQUEsQ0FBQztRQUVlLG9CQUFlLEdBQUcsQ0FBTyxTQUFrQixLQUFLLEVBQUUsVUFBd0IsRUFBRSxFQUFtQixFQUFFO1lBQ2hILE1BQU0sSUFBSSxHQUFzQixNQUFNLGdDQUF5QixFQUFFLENBQUM7WUFDbEUsTUFBTSxXQUFXLEdBQW1DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVuRyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FDM0M7Z0JBQ0UsY0FBYyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUztnQkFDMUMscUJBQXFCLEVBQUUsTUFBTTtnQkFDN0IsYUFBYSxFQUFFLE1BQU07Z0JBQ3JCLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSzthQUN6QixFQUNELE1BQU0sRUFDTixLQUFLLEVBQ0wsT0FBTyxDQUNSLENBQUM7UUFDSixDQUFDLENBQUEsQ0FBQztRQXRFQSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGdDQUFrQixDQUFvQixPQUFPLENBQUMsQ0FBQztJQUMvRSxDQUFDO0NBcUVGO0FBNUVELG9DQTRFQyJ9