Add a check for duplicate IdP ids (#9184)

This commit is contained in:
Richard van der Hoff 2021-01-21 13:20:58 +00:00 committed by GitHub
parent b5120f09f1
commit 42a8e81370
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 0 deletions

1
changelog.d/9184.misc Normal file
View File

@ -0,0 +1 @@
Emit an error at startup if different Identity Providers are configured with the same `idp_id`.

View File

@ -15,6 +15,7 @@
# limitations under the License.
import string
from collections import Counter
from typing import Iterable, Optional, Tuple, Type
import attr
@ -43,6 +44,16 @@ class OIDCConfig(Config):
except DependencyException as e:
raise ConfigError(e.message) from e
# check we don't have any duplicate idp_ids now. (The SSO handler will also
# check for duplicates when the REST listeners get registered, but that happens
# after synapse has forked so doesn't give nice errors.)
c = Counter([i.idp_id for i in self.oidc_providers])
for idp_id, count in c.items():
if count > 1:
raise ConfigError(
"Multiple OIDC providers have the idp_id %r." % idp_id
)
public_baseurl = self.public_baseurl
self.oidc_callback_url = public_baseurl + "_synapse/oidc/callback"