class Aws::SharedConfig

def sso_credentials_from_profile(cfg, profile)

SSOCredentials
If any of the sso_ profile values are present, attempt to construct
def sso_credentials_from_profile(cfg, profile)
  if @parsed_config &&
     (prof_config = cfg[profile]) &&
     !(prof_config.keys & SSO_CREDENTIAL_PROFILE_KEYS).empty?
    if sso_session_name = prof_config['sso_session']
      sso_session = sso_session(cfg, profile, sso_session_name)
      sso_region = sso_session['sso_region']
      sso_start_url = sso_session['sso_start_url']
      # validate sso_region and sso_start_url don't conflict if set on profile and session
      if prof_config['sso_region'] &&  prof_config['sso_region'] != sso_region
        raise ArgumentError,
              "sso-session #{sso_session_name}'s sso_region (#{sso_region}) " \
                "does not match the profile #{profile}'s sso_region (#{prof_config['sso_region']}'"
      end
      if prof_config['sso_start_url'] &&  prof_config['sso_start_url'] != sso_start_url
        raise ArgumentError,
              "sso-session #{sso_session_name}'s sso_start_url (#{sso_start_url}) " \
                "does not match the profile #{profile}'s sso_start_url (#{prof_config['sso_start_url']}'"
      end
    else
      sso_region = prof_config['sso_region']
      sso_start_url = prof_config['sso_start_url']
    end
    SSOCredentials.new(
      sso_account_id: prof_config['sso_account_id'],
      sso_role_name: prof_config['sso_role_name'],
      sso_session: prof_config['sso_session'],
      sso_region: sso_region,
      sso_start_url: sso_start_url
      )
  end
end