@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
JavaScript
;
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