internal AccessCredentials GetAccessCredentials(string tokenFile)
        {
            this.Validate();
            Uri    url    = this.CustomEndPoint;
            string urlStr = url.Authority;

            if (url == null || string.IsNullOrWhiteSpace(urlStr))
            {
                string region = Environment.GetEnvironmentVariable("AWS_REGION");
                urlStr = (region == null)?"https://sts.amazonaws.com":"https://sts." + region + ".amazonaws.com";
                url    = new Uri(urlStr);
            }
            ClientProvider provider = new WebIdentityProvider()
                                      .WithJWTSupplier(() =>
            {
                string tokenContents = File.ReadAllText(tokenFile);
                return(new JsonWebToken(tokenContents, 0));
            })
                                      .WithSTSEndpoint(url)
                                      .WithDurationInSeconds(null)
                                      .WithPolicy(null)
                                      .WithRoleARN(Environment.GetEnvironmentVariable("AWS_ROLE_ARN"))
                                      .WithRoleSessionName(Environment.GetEnvironmentVariable("AWS_ROLE_SESSION_NAME"));

            this.Credentials = provider.GetCredentials();
            return(this.Credentials);
        }
        public override AccessCredentials GetCredentials()
        {
            this.Validate();
            Uri url = this.CustomEndPoint;

            if (this.CustomEndPoint == null)
            {
                string region = Environment.GetEnvironmentVariable("AWS_REGION");
                if (string.IsNullOrWhiteSpace(region))
                {
                    url = RequestUtil.MakeTargetURL("sts.amazonaws.com", true);
                }
                else
                {
                    url = RequestUtil.MakeTargetURL("sts." + region + ".amazonaws.com", true);
                }
            }
            ClientProvider provider = new WebIdentityProvider()
                                      .WithSTSEndpoint(url)
                                      .WithRoleAction("AssumeRoleWithWebIdentity")
                                      .WithDurationInSeconds(null)
                                      .WithPolicy(null)
                                      .WithRoleARN(Environment.GetEnvironmentVariable("AWS_ROLE_ARN"))
                                      .WithRoleSessionName(Environment.GetEnvironmentVariable("AWS_ROLE_SESSION_NAME"));

            this.Credentials = provider.GetCredentials();
            return(this.Credentials);
        }