async getSessionToken()

in common/lib/plugins/federated_auth/okta_credentials_provider_factory.ts [51:87]


  async getSessionToken(props: Map<string, any>): Promise<string> {
    const idpHost = this.formatIdpEndpoint(WrapperProperties.IDP_ENDPOINT.get(props));
    const idpUser = WrapperProperties.IDP_USERNAME.get(props);
    const idpPassword = WrapperProperties.IDP_PASSWORD.get(props);

    const httpsAgent = new Agent(WrapperProperties.HTTPS_AGENT_OPTIONS.get(props));

    const sessionTokenEndpoint = `${idpHost}/api/v1/authn`;

    const data = JSON.stringify({
      username: idpUser,
      password: idpPassword
    });

    const postConfig = {
      method: "post",
      headers: {
        "Content-Type": "application/json",
        Accept: "application/json"
      },
      url: sessionTokenEndpoint,
      httpsAgent,
      data
    };

    let resp;
    try {
      resp = await axios.request(postConfig);
    } catch (e: any) {
      throw new AwsWrapperError(Messages.get("OktaCredentialsProviderFactory.sessionTokenRequestFailed"));
    }
    const token = resp.data[OktaCredentialsProviderFactory.SESSION_TOKEN];
    if (!token) {
      throw new AwsWrapperError(Messages.get("OktaCredentialsProviderFactory.invalidSessionToken"));
    }
    return token;
  }