Skip to content

Commit a3d4555

Browse files
authored
🐞 no way to use different source_claim in each of oidc providers (#359)
Parent issue: sequentech/meta#768
1 parent 57daef5 commit a3d4555

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

iam/authmethods/m_openidconnect.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,7 @@ def authenticate(self, auth_event, request, mode='authenticate'):
535535

536536
# once we have verified id_token_dict, then we can populate req with
537537
# data from the verified claims contained in id_token_dict
538-
req = populate_fields_from_source_claims(req, id_token_dict, auth_event)
538+
req = populate_fields_from_source_claims(req, id_token_dict, auth_event, provider_id)
539539
LOGGER.debug(
540540
f"populated request is {req}\n"
541541
)

iam/authmethods/utils.py

+13-1
Original file line numberDiff line numberDiff line change
@@ -1732,7 +1732,7 @@ def get_base_auth_query(auth_event, ignore_generated_code=False):
17321732
)
17331733
return q
17341734

1735-
def populate_fields_from_source_claims(req, id_token_dict, auth_event):
1735+
def populate_fields_from_source_claims(req, id_token_dict, auth_event, provider_id):
17361736
'''
17371737
once verified id_token_dict, this function populates req with data from the
17381738
verified claims contained in id_token_dict
@@ -1745,6 +1745,18 @@ def populate_fields_from_source_claims(req, id_token_dict, auth_event):
17451745
continue
17461746

17471747
source_claim = extra_field["source_claim"]
1748+
1749+
if source_claim is None:
1750+
continue
1751+
1752+
# If source_claim is a dict, get the source_claim for the provider_id
1753+
if isinstance(source_claim, dict):
1754+
if provider_id in source_claim:
1755+
source_claim = source_claim[provider_id]
1756+
else:
1757+
# Skip if provider_id not found in source_claim map
1758+
continue
1759+
17481760
if source_claim not in id_token_dict:
17491761
continue
17501762

0 commit comments

Comments
 (0)