Ruby AWS SDK-使用不带mfa令牌的Aws :: AssumeRoleCredentials

时间:2018-11-15 18:34:07

标签: ruby amazon-web-services aws-sdk

我开始使用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令牌进行身份验证,然后重新运行该工具,则在原始会话超时到期之前,不会再次提示我。

我在做什么错了?

谢谢

0 个答案:

没有答案