是否有AWS IAM命令可用,我们可以通过该命令通过传递用户的用户名&密码组合?
例如:使用这个命令
aws iam get-user --user-name test@domain.com
它返回
{
"User": {
"UserId": "AIDAJR3****VOYB2***NE",
"Path": "/",
"UserName": "test@domain.com",
"Arn": "arn:aws:iam::349578444322:user/test@domain.com",
"CreateDate": "2015-12-07T15:46:20Z"
}
}
我想要的是,我创建了一个网络应用程序,用户将在其中输入他/她的AWS用户名&登录APP的密码,那么,是否有任何命令或API可用于验证/验证用户?
目前,我认为这是不可能的。
问:是否有身份验证API来验证用户登录
没有。没有程序化的方法来验证用户登录。
https://aws.amazon.com/iam/faqs/#login_anchor
AWS管理控制台是唯一接受用户名&密码组合,以提供对AWS资源的访问。所有其他途径都涉及IAM角色或IAM用户或STS,以获得访问AWS资源的身份验证-您不能利用或AWS依赖您的自定义web应用程序的身份验证。
话虽如此,我可以想出几个替代方案,当然不是你或工作的解决方案。
-
使用Amazon.com API登录http://login.amazon.com/manageApps
-
使用不同提供商的Amazon Cognito身份验证http://docs.aws.amazon.com/cognito/devguide/identity/concepts/authentication-flow/
-
使用亚马逊目录服务-托管Active Directory。它更像是一个Microsoft Active Directory即服务,您可以使用它为您的自定义web应用程序提供身份验证,而正常运行时间和健康状况由AWS 负责
您应该能够运行IE或其他浏览器模拟器(如selenium)以编程方式登录
$account = "aws account name"
$username = "username";
$password = "somepassword";
$Url = "https://$account"+ ".signin.aws.amazon.com/console";
$ie = New-Object -com internetexplorer.application;
$ie.visible = $false;
$ie.navigate($loginUrl);
while ($ie.Busy -eq $true) { Start-Sleep -Seconds 3; }
#login
($ie.document.getElementsByName("account") | select -First 1).value = $account;
($ie.document.getElementsByName("username") |select -first 1).value = $username;
($ie.document.getElementsByName("password") |select -first 1).value = $password;
($ie.document.getElementsByClassName("css3button") |select -first 1).click();
while ($ie.Busy -eq $true) { Start-Sleep -Seconds 3; }
到目前为止,这段代码不会告诉我们登录是否成功,但您可以构建check并regex页面来获取信息。您可以用JS或C#做类似的事情