':param config: A saml2.config.Config instance
:param identity_cache: Where the class should store identity information
:param state_cache: Where the class should keep state information
:param virtual_organization: A specific virtual organization'

def __init__(self, config=None, identity_cache=None, state_cache=None, virtual_organization='', config_file=''):

    Entity.__init__(self, 'sp', config, config_file, virtual_organization)
    self.users = Population(identity_cache)
    self.lock = threading.Lock()
    if (state_cache is None):
        self.state = {}
    else:
        self.state = state_cache
    self.logout_requests_signed = False
    self.allow_unsolicited = False
    self.authn_requests_signed = False
    self.want_assertions_signed = False
    self.want_response_signed = False
    for foo in ['allow_unsolicited', 'authn_requests_signed', 'logout_requests_signed', 'want_assertions_signed', 'want_response_signed']:
        v = self.config.getattr(foo, 'sp')
        if ((v is True) or (v == 'true')):
            setattr(self, foo, True)
    self.artifact2response = {}
