在我的 C# 代码中,我想使用
assumerolewithsaml
方法根据角色和主体角色生成 AWS 凭证,但我无法获取 SAMLRESPONSE
- 它返回为 null 或空白。
var inputTag = doc.DocumentNode
.Descendants("input")
.FirstOrDefault(i => i.GetAttributeValue("name", "") == "SAMLResponse");
这是完整的代码。请帮助我缺少什么,我是 AWS 方面的新手。
try
{
String samlAssertion = "";
var handler = new HttpClientHandler
{
UseDefaultCredentials = true
};
var client = new HttpClient(handler);
client.DefaultRequestHeaders.Add("User-Agent", "Edge");
var entryUrl = someurl;
var response = client.GetAsync(entryUrl).Result;
if (response.IsSuccessStatusCode)
{
Console.WriteLine("Login successful");
var content = response.Content.ReadAsStringAsync().Result;
var doc = new HtmlDocument();
doc.LoadHtml(content);
// Look for the SAMLResponse attribute of the input tag (determined by
// analyzing the debug print lines above)
var inputTag = doc.DocumentNode.Descendants("input").FirstOrDefault(i => i.GetAttributeValue("name", "") == "SAMLResponse");
if (inputTag != null)
{
samlAssertion = inputTag.GetAttributeValue("value", "");
}
}
var stsClient = new AmazonSecurityTokenServiceClient(region: RegionEndpoint.XYZ);
try
{
var token = await stsClient.AssumeRoleWithSAMLAsync(new AssumeRoleWithSAMLRequest
{
RoleArn = "arn:aws:role.developer",
PrincipalArn = "111111111:saml-provider/sso.www.xyz.com",
SAMLAssertion = samlAssertion
});
Console.WriteLine(token);
}
catch (AmazonServiceException e)
{
Console.WriteLine("Unexpected error: {0}", e.Message);
Environment.Exit(2);
}
}