Add a check for duplicate IdP ids (#9184)
This commit is contained in:
parent
b5120f09f1
commit
42a8e81370
|
@ -0,0 +1 @@
|
||||||
|
Emit an error at startup if different Identity Providers are configured with the same `idp_id`.
|
|
@ -15,6 +15,7 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import string
|
import string
|
||||||
|
from collections import Counter
|
||||||
from typing import Iterable, Optional, Tuple, Type
|
from typing import Iterable, Optional, Tuple, Type
|
||||||
|
|
||||||
import attr
|
import attr
|
||||||
|
@ -43,6 +44,16 @@ class OIDCConfig(Config):
|
||||||
except DependencyException as e:
|
except DependencyException as e:
|
||||||
raise ConfigError(e.message) from 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
|
public_baseurl = self.public_baseurl
|
||||||
self.oidc_callback_url = public_baseurl + "_synapse/oidc/callback"
|
self.oidc_callback_url = public_baseurl + "_synapse/oidc/callback"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue