我开始使用AWS身份验证,并且似乎已经无法使用Aws :: AssumeRoleCredentials对象。
希望我什至不应该使用它。
在使用mfa令牌时,我有一个成功的方法来承担角色:
# Assume the role referenced in the profile
def assume_role(mfa_token_code = nil)
sts_client = Aws::STS::Client.new(credentials: @user_credentials, region: @user_profile.region)
@role_credentials = sts_client.assume_role(
{
role_arn: @user_profile.role_arn, # required
role_session_name: @session_name, # required
duration_seconds: @duration_seconds,
serial_number: @user_profile.mfa_serial,
token_code: mfa_token_code.to_s
}
)
end
这可以正常工作,但需要使用mfa令牌。
我认为,如果会话尚未超时,则有可能再次进行身份验证,而无需提示用户输入另一个mfa令牌,但是我正在努力寻找一种方法来进行验证。
我正在修改AssumeRoleCredentials对象,希望它是正确的对象:
def authenticate_as_application_user
begin
@role_credentials = Aws::AssumeRoleCredentials.new(
# client: Aws::STS::Client.new(credentials: @user_credentials, region: @user_profile.region),
duration_seconds: @duration_seconds,
role_arn: @user_profile.role_arn,
role_session_name: 'session-name-xxxxxxxxx'
)
rescue
puts 'Enter MFA code: '
mfa_token_code = gets.chomp
unless mfa_token_code.nil?
assume_role(mfa_token_code)
else
puts('No code supplied, aborting')
end
end
end
无论我尝试什么,此代码均无法承担错误角色:
Access denied
我从其他python工具中知道,如果我使用mfa令牌进行身份验证,然后重新运行该工具,则在原始会话超时到期之前,不会再次提示我。
我在做什么错了?
谢谢