diff --git a/src/DIRAC/Resources/IdProvider/IdProviderFactory.py b/src/DIRAC/Resources/IdProvider/IdProviderFactory.py index a165b1b681c..8641bb6d612 100644 --- a/src/DIRAC/Resources/IdProvider/IdProviderFactory.py +++ b/src/DIRAC/Resources/IdProvider/IdProviderFactory.py @@ -75,8 +75,10 @@ def getIdProvider(self, name, client_name_prefix="", **kwargs): if client_name_prefix: client_name_prefix = client_name_prefix + "_" - pDict["client_id"] = pDict[f"{client_name_prefix}client_id"] - pDict["client_secret"] = pDict[f"{client_name_prefix}client_secret"] + if f"{client_name_prefix}client_id" in pDict: + pDict["client_id"] = pDict[f"{client_name_prefix}client_id"] + if f"{client_name_prefix}client_secret" in pDict: + pDict["client_secret"] = pDict[f"{client_name_prefix}client_secret"] pDict.update(kwargs) pDict["ProviderName"] = name diff --git a/src/DIRAC/Resources/IdProvider/tests/Test_IdProviderFactory.py b/src/DIRAC/Resources/IdProvider/tests/Test_IdProviderFactory.py index 1ba13809110..848c31de2cb 100644 --- a/src/DIRAC/Resources/IdProvider/tests/Test_IdProviderFactory.py +++ b/src/DIRAC/Resources/IdProvider/tests/Test_IdProviderFactory.py @@ -63,6 +63,12 @@ client_secret = IdP_client_secret scope = openid+profile+offline_access+eduperson_entitlement } + SomeIdP3.partial + { + ProviderType = OAuth2 + issuer = https://and-another-idp.url/ + scope = openid+profile+offline_access+eduperson_entitlement + } } } """ @@ -77,6 +83,7 @@ ("SomeIdP1.2", {"OK": True}, "https://idp.url/", "IdP_client_id2", "IdP_client_secret"), ("SomeIdP2", {"OK": True}, "https://another-idp.url/", "IdP_client_id1", "IdP_client_secret"), ("SomeIdP3", {"OK": True}, "https://and-another-idp.url/", "IdP_client_id3", "IdP_client_secret"), + ("SomeIdP3.partial", {"OK": True}, "https://and-another-idp.url/", None, None), # Try to get an unknown DIRAC client ("DIRACUnknown", {"OK": False, "Message": "DIRACUnknown does not exist"}, None, None, None), ],