1. Problem
In function _perform_auth, if no remote_id_name is found,
we'll get "NameError: name 'remote_id' is not defined" exception
when we first use remote_id before definition.
def _perform_auth(cls, protocol_id):
idps = PROVIDERS.federation_api.list_idps()
for idp in idps:
try:
remote_id_name = federation_utils.get_remote_id_parameter(
idp, protocol_id)
except exception.FederatedProtocolNotFound:
# no protocol for this IdP, so this can't be the IdP we're
# looking for
continue
remote_id = flask.request.environ.get(remote_id_name)
if remote_id:
break
if not remote_id:
msg = 'Missing entity ID from environment'
tr_msg = _('Missing entity ID from environment')
LOG.error(msg)
raise exception.Unauthorized(tr_msg)
2. Fix
Add remote_id definition.
https:/ /review. opendev. org/679706