diff options
author | Ivan Kanakarakis <ivan.kanak@gmail.com> | 2019-05-14 12:34:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-14 12:34:48 +0200 |
commit | 4e660fe05bb97093a6304dd2e44340a397d75a94 (patch) | |
tree | 3907a62a8c48b17db543cf0afcd5fd69483e2992 /src/saml2/mongo_store.py | |
parent | 20de0557af129b3ef9e9f5f82d6a67e822eb2e5f (diff) | |
parent | 70084f518537e8b82278de1b4aa1988d79498a09 (diff) | |
download | pysaml2-4e660fe05bb97093a6304dd2e44340a397d75a94.tar.gz |
Merge pull request #616 from SUNET/eduid-nameid_fixes
Check for an existing local-persistent NameID when retrieving it
Diffstat (limited to 'src/saml2/mongo_store.py')
-rw-r--r-- | src/saml2/mongo_store.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/saml2/mongo_store.py b/src/saml2/mongo_store.py index 6a8f9f45..4120e9e0 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,23 @@ class IdentMDB(IdentDB): return item[self.mdb.primary_key] return None + def match_local_id(self, userid, sp_name_qualifier, name_qualifier): + """ + Match a local persistent identifier. + + 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) |