UNPKG

google-auth-library

Version:
115 lines (114 loc) 4.64 kB
import { GaxiosResponse } from 'gaxios'; import { Headers } from './oauth2client'; import { ClientAuthentication, OAuthClientAuthHandler } from './oauth2common'; /** * Defines the interface needed to initialize an StsCredentials instance. * The interface does not directly map to the spec and instead is converted * to be compliant with the JavaScript style guide. This is because this is * instantiated internally. * StsCredentials implement the OAuth 2.0 token exchange based on * https://tools.ietf.org/html/rfc8693. * Request options are defined in * https://tools.ietf.org/html/rfc8693#section-2.1 */ export interface StsCredentialsOptions { /** * REQUIRED. The value "urn:ietf:params:oauth:grant-type:token-exchange" * indicates that a token exchange is being performed. */ grantType: string; /** * OPTIONAL. A URI that indicates the target service or resource where the * client intends to use the requested security token. */ resource?: string; /** * OPTIONAL. The logical name of the target service where the client * intends to use the requested security token. This serves a purpose * similar to the "resource" parameter but with the client providing a * logical name for the target service. */ audience?: string; /** * OPTIONAL. A list of space-delimited, case-sensitive strings, as defined * in Section 3.3 of [RFC6749], that allow the client to specify the desired * scope of the requested security token in the context of the service or * resource where the token will be used. */ scope?: string[]; /** * OPTIONAL. An identifier, as described in Section 3 of [RFC8693], eg. * "urn:ietf:params:oauth:token-type:access_token" for the type of the * requested security token. */ requestedTokenType?: string; /** * REQUIRED. A security token that represents the identity of the party on * behalf of whom the request is being made. */ subjectToken: string; /** * REQUIRED. An identifier, as described in Section 3 of [RFC8693], that * indicates the type of the security token in the "subject_token" parameter. */ subjectTokenType: string; actingParty?: { /** * OPTIONAL. A security token that represents the identity of the acting * party. Typically, this will be the party that is authorized to use the * requested security token and act on behalf of the subject. */ actorToken: string; /** * An identifier, as described in Section 3, that indicates the type of the * security token in the "actor_token" parameter. This is REQUIRED when the * "actor_token" parameter is present in the request but MUST NOT be * included otherwise. */ actorTokenType: string; }; } /** * Defines the OAuth 2.0 token exchange successful response based on * https://tools.ietf.org/html/rfc8693#section-2.2.1 */ export interface StsSuccessfulResponse { access_token: string; issued_token_type: string; token_type: string; expires_in?: number; refresh_token?: string; scope?: string; res?: GaxiosResponse | null; } /** * Implements the OAuth 2.0 token exchange based on * https://tools.ietf.org/html/rfc8693 */ export declare class StsCredentials extends OAuthClientAuthHandler { private readonly tokenExchangeEndpoint; private transporter; /** * Initializes an STS credentials instance. * @param tokenExchangeEndpoint The token exchange endpoint. * @param clientAuthentication The client authentication credentials if * available. */ constructor(tokenExchangeEndpoint: string | URL, clientAuthentication?: ClientAuthentication); /** * 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. */ exchangeToken(stsCredentialsOptions: StsCredentialsOptions, additionalHeaders?: Headers, options?: { [key: string]: any; }): Promise<StsSuccessfulResponse>; }