summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFredrik Thulin <fredrik@thulin.net>2019-05-08 16:36:30 +0200
committerFredrik Thulin <fredrik@thulin.net>2019-05-08 16:36:30 +0200
commit6f65014dfb7c4ba4cb9edd6e7f0c16889e2d0e60 (patch)
tree2d82353dab87b2dd3efd876aea476273aeb909f5
parentdf9b35d7aa3f89a74a1a95ee0b96306f730d3f15 (diff)
downloadpysaml2-6f65014dfb7c4ba4cb9edd6e7f0c16889e2d0e60.tar.gz
implement match_local_id
Implement MongoDB version of function to look for an existing persistent NameId for a user.
-rw-r--r--src/saml2/mongo_store.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/saml2/mongo_store.py b/src/saml2/mongo_store.py
index 6a8f9f45..6bbaaf52 100644
--- a/src/saml2/mongo_store.py
+++ b/src/saml2/mongo_store.py
@@ -5,6 +5,8 @@ from pymongo import MongoClient
from pymongo.mongo_replica_set_client import MongoReplicaSetClient
import pymongo.uri_parser
import pymongo.errors
+from saml2.saml import NAMEID_FORMAT_PERSISTENT
+
from saml2.eptid import Eptid
from saml2.mdstore import InMemoryMetaData
from saml2.mdstore import metadata_modules
@@ -163,6 +165,20 @@ class IdentMDB(IdentDB):
return item[self.mdb.primary_key]
return None
+ def match_local_id(self, userid, sp_name_qualifier, name_qualifier):
+ """
+ Look for an existing persistent NameID matching userid,
+ sp_name_qualifier and name_qualifier.
+ """
+ filter = {"name_id.sp_name_qualifier": sp_name_qualifier,
+ "name_id.name_qualifier": name_qualifier,
+ "name_id.format": NAMEID_FORMAT_PERSISTENT,
+ }
+ res = self.mdb.get(value=userid, **filter)
+ if not res:
+ return None
+ return from_dict(res[0]["name_id"], ONTS, True)
+
def remove_remote(self, name_id):
cnid = to_dict(name_id, MMODS, True)
self.mdb.remove(name_id=cnid)