def store_assertion(self, assertion, to_sign): self.assertion[assertion.id] = (assertion, to_sign) key = sha1(code_binary(assertion.subject.name_id)).hexdigest() try: self.authn[key].append(assertion.authn_statement) except KeyError: self.authn[key] = [assertion.authn_statement]
def get_authn_statements(self, name_id, session_index=None, requested_context=None): """ :param name_id: :param session_index: :param requested_context: :return: """ result = [] key = sha1(code_binary(name_id)).hexdigest() try: statements = self.authn[key] except KeyError: logger.info("Unknown subject %s" % name_id) return [] for statement in statements: if session_index: if statement.session_index != session_index: continue if requested_context: if not context_match(requested_context, statement[0].authn_context): continue result.append(statement) return result
def get_assertions_by_subject(self, name_id=None, session_index=None, requested_context=None): """ :param name_id: One of name_id or key can be used to get the authn statement :param session_index: If match against a session index should be done :param requested_context: Authn statements should match a specific authn context :return: """ result = [] key = sha1(code_binary(name_id)).hexdigest() for item in self.assertion.find({"name_id_key": key}): assertion = from_dict(item["assertion"], ONTS, True) if session_index or requested_context: for statement in assertion.authn_statement: if session_index: if statement.session_index == session_index: result.append(assertion) break if requested_context: if context_match(requested_context, statement.authn_context): result.append(assertion) break else: result.append(assertion) return result
def store_assertion(self, assertion, to_sign): name_id = assertion.subject.name_id nkey = sha1(code_binary(name_id)).hexdigest() doc = { "name_id_key": nkey, "assertion_id": assertion.id, "assertion": to_dict(assertion, ONTS.values(), True), "to_sign": to_sign } _ = self.assertion.insert(doc)
def store_assertion(self, assertion, to_sign): name_id = assertion.subject.name_id nkey = sha1(code_binary(name_id)).hexdigest() doc = { "name_id_key": nkey, "assertion_id": assertion.id, "assertion": to_dict(assertion, MMODS, True), "to_sign": to_sign } _ = self.assertion.insert(doc)
def remove_authn_statements(self, name_id): logger.debug("remove authn about: %s" % name_id) nkey = sha1(code_binary(name_id)).hexdigest() del self.authn[nkey]
def remove_authn_statements(self, name_id): logger.debug("remove authn about: %s" % name_id) key = sha1(code_binary(name_id)).hexdigest() for item in self.assertion.find({"name_id_key": key}): self.assertion.remove(item["_id"])
def remove_authn_statements(self, name_id): logger.debug("remove authn about: %s", name_id) key = sha1(code_binary(name_id)).hexdigest() for item in self.assertion.find({"name_id_key": key}): self.assertion.remove(item["_id"])