public async Task <AlibabaCloudCredentials> GetCredentialFileAlibabaCloudCredentialAsync(CancellationToken cancellationToken) { if (null == credentialFileLocation) { credentialFileLocation = GetHomePath(); var slash = EnvironmentUtil.GetOSSlash(); var fileLocation = EnvironmentUtil.GetComposedPath(credentialFileLocation, slash); if (File.Exists(fileLocation)) { credentialFileLocation = fileLocation; } else { return(null); } } if (credentialFileLocation.Equals("")) { throw new ClientException( "Credentials file environment variable 'ALIBABA_CLOUD_CREDENTIALS_FILE' cannot be empty"); } var iniReader = new IniReader(credentialFileLocation); var sectionNameList = iniReader.GetSections(); if (null != defaultProfile.DefaultClientName) { var userDefineSectionNode = defaultProfile.DefaultClientName; var iniKeyTypeValue = iniReader.GetValue("type", userDefineSectionNode); if (iniKeyTypeValue.Equals("access_key")) { accessKeyId = iniReader.GetValue("access_key_id", userDefineSectionNode); accessKeySecret = iniReader.GetValue("access_key_secret", userDefineSectionNode); regionId = iniReader.GetValue("region_id", userDefineSectionNode); return(await GetAccessKeyCredentialAsync(cancellationToken).ConfigureAwait(false)); } if (iniKeyTypeValue.Equals("ecs_ram_role")) { roleName = iniReader.GetValue("role_name", userDefineSectionNode); regionId = iniReader.GetValue("region_id", userDefineSectionNode); return(await GetInstanceRamRoleAlibabaCloudCredentialAsync(cancellationToken).ConfigureAwait(false)); } if (iniKeyTypeValue.Equals("ram_role_arn")) { accessKeyId = iniReader.GetValue("access_key_id", userDefineSectionNode); accessKeySecret = iniReader.GetValue("access_key_secret", userDefineSectionNode); roleArn = iniReader.GetValue("role_arn", userDefineSectionNode); return(await GetRamRoleArnAlibabaCloudCredentialAsync(cancellationToken).ConfigureAwait(false)); } if (iniKeyTypeValue.Equals("rsa_key_pair")) { publicKeyId = iniReader.GetValue("public_key_id", userDefineSectionNode); privateKeyFile = iniReader.GetValue("private_key_file", userDefineSectionNode); return(await GetRsaKeyPairAlibabaCloudCredentialAsync(cancellationToken).ConfigureAwait(false)); } } else { foreach (var sectionItem in sectionNameList) { if (!sectionItem.Equals("default")) { continue; } accessKeyId = iniReader.GetValue("access_key_id", "default"); accessKeySecret = iniReader.GetValue("access_key_secret", "default"); regionId = iniReader.GetValue("region_id", "default"); return(await GetAccessKeyCredentialAsync(cancellationToken).ConfigureAwait(false)); } } return(null); }