aliyun-net-credentials/Provider/StaticSTSCredentialsProvider.cs (76 lines of code) (raw):
using System.Threading.Tasks;
using Aliyun.Credentials.Models;
using Aliyun.Credentials.Utils;
namespace Aliyun.Credentials.Provider
{
/// <summary>
/// Create a temporary security credential by applying Temporary Security Credentials (TSC) through the Security Token Service (STS).
/// </summary>
internal class StaticSTSCredentialsProvider : IAlibabaCloudCredentialsProvider
{
private readonly string accessKeyId;
private readonly string accessKeySecret;
private readonly string securityToken;
public StaticSTSCredentialsProvider(Config config)
{
securityToken = ParameterHelper.ValidateEnvNotEmpty(config.SecurityToken, "ALIBABA_CLOUD_SECURITY_TOKEN", "SecurityToken", "SecurityToken must not be null or empty.");
accessKeyId = ParameterHelper.ValidateEnvNotEmpty(config.AccessKeyId, "ALIBABA_CLOUD_ACCESS_KEY_ID", "AccessKeyId", "AccessKeyId must not be null or empty.");
accessKeySecret = ParameterHelper.ValidateEnvNotEmpty(config.AccessKeySecret, "ALIBABA_CLOUD_ACCESS_KEY_SECRET", "AccessKeySecret", "AccessKeySecret must not be null or empty.");
}
public StaticSTSCredentialsProvider(Builder builder)
{
this.securityToken = ParameterHelper.ValidateEnvNotEmpty(builder.securityToken, "ALIBABA_CLOUD_SECURITY_TOKEN", "SecurityToken", "SecurityToken must not be null or empty.");
this.accessKeyId = ParameterHelper.ValidateEnvNotEmpty(builder.accessKeyId, "ALIBABA_CLOUD_ACCESS_KEY_ID", "AccessKeyId", "AccessKeyId must not be null or empty.");
this.accessKeySecret = ParameterHelper.ValidateEnvNotEmpty(builder.accessKeySecret, "ALIBABA_CLOUD_ACCESS_KEY_SECRET", "AccessKeySecret", "AccessKeySecret must not be null or empty.");
}
public class Builder
{
internal string securityToken;
internal string accessKeyId;
internal string accessKeySecret;
public Builder AccessKeyId(string accessKeyId)
{
this.accessKeyId = accessKeyId;
return this;
}
public Builder AccessKeySecret(string accessKeySecret)
{
this.accessKeySecret = accessKeySecret;
return this;
}
public Builder SecurityToken(string securityToken)
{
this.securityToken = securityToken;
return this;
}
public StaticSTSCredentialsProvider Build()
{
return new StaticSTSCredentialsProvider(this);
}
}
public CredentialModel GetCredentials()
{
return new CredentialModel
{
AccessKeyId = accessKeyId,
AccessKeySecret = accessKeySecret,
SecurityToken = securityToken,
ProviderName = GetProviderName()
};
}
public Task<CredentialModel> GetCredentialsAsync()
{
return Task.Run(() =>
{
return new CredentialModel
{
AccessKeyId = accessKeyId,
AccessKeySecret = accessKeySecret,
SecurityToken = securityToken,
ProviderName = GetProviderName()
};
});
}
public string GetProviderName()
{
return AuthConstant.StaticSts;
}
}
}