import { BaseExternalAccountClient, BaseExternalAccountClientOptions } from './baseexternalclient'; import { AuthClientOptions } from './authclient'; /** * Defines the credential source portion of the configuration for PluggableAuthClient. * *
Command is the only required field. If timeout_millis is not specified, the library will * default to a 30-second timeout. * *
* Sample credential source for Pluggable Auth Client: * { * ... * "credential_source": { * "executable": { * "command": "/path/to/get/credentials.sh --arg1=value1 --arg2=value2", * "timeout_millis": 5000, * "output_file": "/path/to/generated/cached/credentials" * } * } * } **/ export interface PluggableAuthClientOptions extends BaseExternalAccountClientOptions { credential_source: { executable: { /** * The command used to retrieve the 3rd party token. */ command: string; /** * The timeout for executable to run in milliseconds. If none is provided it * will be set to the default timeout of 30 seconds. */ timeout_millis?: number; /** * An optional output file location that will be checked for a cached response * from a previous run of the executable. */ output_file?: string; }; }; } /** * Error thrown from the executable run by PluggableAuthClient. */ export declare class ExecutableError extends Error { /** * The exit code returned by the executable. */ readonly code: string; constructor(message: string, code: string); } /** * PluggableAuthClient enables the exchange of workload identity pool external credentials for * Google access tokens by retrieving 3rd party tokens through a user supplied executable. These * scripts/executables are completely independent of the Google Cloud Auth libraries. These * credentials plug into ADC and will call the specified executable to retrieve the 3rd party token * to be exchanged for a Google access token. * *
To use these credentials, the GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES environment variable * must be set to '1'. This is for security reasons. * *
Both OIDC and SAML are supported. The executable must adhere to a specific response format * defined below. * *
The executable must print out the 3rd party token to STDOUT in JSON format. When an * output_file is specified in the credential configuration, the executable must also handle writing the * JSON response to this file. * *
* OIDC response sample: * { * "version": 1, * "success": true, * "token_type": "urn:ietf:params:oauth:token-type:id_token", * "id_token": "HEADER.PAYLOAD.SIGNATURE", * "expiration_time": 1620433341 * } * * SAML2 response sample: * { * "version": 1, * "success": true, * "token_type": "urn:ietf:params:oauth:token-type:saml2", * "saml_response": "...", * "expiration_time": 1620433341 * } * * Error response sample: * { * "version": 1, * "success": false, * "code": "401", * "message": "Error message." * } ** *
The "expiration_time" field in the JSON response is only required for successful * responses when an output file was specified in the credential configuration * *
The auth libraries will populate certain environment variables that will be accessible by the * executable, such as: GOOGLE_EXTERNAL_ACCOUNT_AUDIENCE, GOOGLE_EXTERNAL_ACCOUNT_TOKEN_TYPE, * GOOGLE_EXTERNAL_ACCOUNT_INTERACTIVE, GOOGLE_EXTERNAL_ACCOUNT_IMPERSONATED_EMAIL, and * GOOGLE_EXTERNAL_ACCOUNT_OUTPUT_FILE. * *
Please see this repositories README for a complete executable request/response specification.
*/
export declare class PluggableAuthClient extends BaseExternalAccountClient {
/**
* The command used to retrieve the third party token.
*/
private readonly command;
/**
* The timeout in milliseconds for running executable,
* set to default if none provided.
*/
private readonly timeoutMillis;
/**
* The path to file to check for cached executable response.
*/
private readonly outputFile?;
/**
* Executable and output file handler.
*/
private readonly handler;
/**
* Instantiates a PluggableAuthClient instance using the provided JSON
* object loaded from an external account credentials file.
* An error is thrown if the credential is not a valid pluggable auth credential.
* @param options The external account options object typically loaded from
* the external account JSON credential file.
* @param additionalOptions **DEPRECATED, all options are available in the
* `options` parameter.** Optional additional behavior customization options.
* These currently customize expiration threshold time and whether to retry
* on 401/403 API request errors.
*/
constructor(options: PluggableAuthClientOptions, additionalOptions?: AuthClientOptions);
/**
* Triggered when an external subject token is needed to be exchanged for a
* GCP access token via GCP STS endpoint.
* This uses the `options.credential_source` object to figure out how
* to retrieve the token using the current environment. In this case,
* this calls a user provided executable which returns the subject token.
* The logic is summarized as:
* 1. Validated that the executable is allowed to run. The
* GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES environment must be set to
* 1 for security reasons.
* 2. If an output file is specified by the user, check the file location
* for a response. If the file exists and contains a valid response,
* return the subject token from the file.
* 3. Call the provided executable and return response.
* @return A promise that resolves with the external subject token.
*/
retrieveSubjectToken(): Promise