Buckets:
| ; | |
| // Copyright 2021 Google LLC | |
| // | |
| // Licensed under the Apache License, Version 2.0 (the "License"); | |
| // you may not use this file except in compliance with the License. | |
| // You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, software | |
| // distributed under the License is distributed on an "AS IS" BASIS, | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| // See the License for the specific language governing permissions and | |
| // limitations under the License. | |
| Object.defineProperty(exports, "__esModule", { value: true }); | |
| exports.StsCredentials = void 0; | |
| const gaxios_1 = require("gaxios"); | |
| const authclient_1 = require("./authclient"); | |
| const oauth2common_1 = require("./oauth2common"); | |
| const util_1 = require("../util"); | |
| /** | |
| * Implements the OAuth 2.0 token exchange based on | |
| * https://tools.ietf.org/html/rfc8693 | |
| */ | |
| class StsCredentials extends oauth2common_1.OAuthClientAuthHandler { | |
| #tokenExchangeEndpoint; | |
| /** | |
| * Initializes an STS credentials instance. | |
| * | |
| * @param options The STS credentials instance options. Passing an `tokenExchangeEndpoint` directly is **@DEPRECATED**. | |
| * @param clientAuthentication **@DEPRECATED**. Provide a {@link StsCredentialsConstructionOptions `StsCredentialsConstructionOptions`} object in the first parameter instead. | |
| */ | |
| constructor(options = { | |
| tokenExchangeEndpoint: '', | |
| }, | |
| /** | |
| * @deprecated - provide a {@link StsCredentialsConstructionOptions `StsCredentialsConstructionOptions`} object in the first parameter instead | |
| */ | |
| clientAuthentication) { | |
| if (typeof options !== 'object' || options instanceof URL) { | |
| options = { | |
| tokenExchangeEndpoint: options, | |
| clientAuthentication, | |
| }; | |
| } | |
| super(options); | |
| this.#tokenExchangeEndpoint = options.tokenExchangeEndpoint; | |
| } | |
| /** | |
| * Exchanges the provided token for another type of token based on the | |
| * rfc8693 spec. | |
| * @param stsCredentialsOptions The token exchange options used to populate | |
| * the token exchange request. | |
| * @param additionalHeaders Optional additional headers to pass along the | |
| * request. | |
| * @param options Optional additional GCP-specific non-spec defined options | |
| * to send with the request. | |
| * Example: `&options=${encodeUriComponent(JSON.stringified(options))}` | |
| * @return A promise that resolves with the token exchange response containing | |
| * the requested token and its expiration time. | |
| */ | |
| async exchangeToken(stsCredentialsOptions, headers, options) { | |
| const values = { | |
| grant_type: stsCredentialsOptions.grantType, | |
| resource: stsCredentialsOptions.resource, | |
| audience: stsCredentialsOptions.audience, | |
| scope: stsCredentialsOptions.scope?.join(' '), | |
| requested_token_type: stsCredentialsOptions.requestedTokenType, | |
| subject_token: stsCredentialsOptions.subjectToken, | |
| subject_token_type: stsCredentialsOptions.subjectTokenType, | |
| actor_token: stsCredentialsOptions.actingParty?.actorToken, | |
| actor_token_type: stsCredentialsOptions.actingParty?.actorTokenType, | |
| // Non-standard GCP-specific options. | |
| options: options && JSON.stringify(options), | |
| }; | |
| const opts = { | |
| ...StsCredentials.RETRY_CONFIG, | |
| url: this.#tokenExchangeEndpoint.toString(), | |
| method: 'POST', | |
| headers, | |
| data: new URLSearchParams((0, util_1.removeUndefinedValuesInObject)(values)), | |
| responseType: 'json', | |
| }; | |
| authclient_1.AuthClient.setMethodName(opts, 'exchangeToken'); | |
| // Apply OAuth client authentication. | |
| this.applyClientAuthenticationOptions(opts); | |
| try { | |
| const response = await this.transporter.request(opts); | |
| // Successful response. | |
| const stsSuccessfulResponse = response.data; | |
| stsSuccessfulResponse.res = response; | |
| return stsSuccessfulResponse; | |
| } | |
| catch (error) { | |
| // Translate error to OAuthError. | |
| if (error instanceof gaxios_1.GaxiosError && error.response) { | |
| throw (0, oauth2common_1.getErrorFromOAuthErrorResponse)(error.response.data, | |
| // Preserve other fields from the original error. | |
| error); | |
| } | |
| // Request could fail before the server responds. | |
| throw error; | |
| } | |
| } | |
| } | |
| exports.StsCredentials = StsCredentials; | |
| //# sourceMappingURL=stscredentials.js.map |
Xet Storage Details
- Size:
- 4.74 kB
- Xet hash:
- 833113324b2c0dd10f965d7eeef27e38ef7aa0562949ecd01f15a4173b66eab5
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.