def METHOD_NAME(self, s3_transfer_allow=False, s3_transfer_buckets=None):
    '''
    Used to get the federate user credentials
    If external s3 buckets exist they will be added to the policy.
    '''
    self._check_external_policy(s3_transfer_allow, s3_transfer_buckets)
    policy = self._get_policy()
    token = self._get_token(policy)
    credentials = {
        'session_token': token.get('Credentials', {}).get('SessionToken'),
        'access_key': token.get('Credentials', {}).get('AccessKeyId'),
        'expiration': token.get('Credentials', {}).get('Expiration').isoformat(),
        'secret_key': token.get('Credentials', {}).get('SecretAccessKey'),
        'upload_url': self._upload_url,
        'federated_user_arn': token.get('FederatedUser', {}).get('Arn'),
        'federated_user_id': token.get('FederatedUser', {}).get('FederatedUserId'),
        'request_id': token.get('ResponseMetadata', {}).get('RequestId')
    }
    return {
        'service': 's3',
        'bucket': self._bucket,
        'key': self._key,
        'upload_credentials': credentials,
    }