# Synapse Mozilla SAML MXID Mapper A Synapse plugin module which allows users to choose their username when they first log in. ## Installation This plugin can be installed via [PyPi](https://pypi.org): ``` pip install matrix-synapse-saml-mozilla ``` ### Config Add the following in your Synapse config: ```yaml saml2_config: user_mapping_provider: module: "matrix_synapse_saml_mozilla.SamlMappingProvider" ``` Also, under the HTTP client `listener`, configure an `additional_resource` as per the below: ```yaml listeners: - port: type: http resources: - names: [client] additional_resources: "/_matrix/saml2/pick_username": module: "matrix_synapse_saml_mozilla.pick_username_resource" ``` ### Configuration Options Synapse allows SAML mapping providers to specify custom configuration through the `saml2_config.user_mapping_provider.config` option. Currently the following options are supported: * `use_name_id_for_remote_uid`: if set to `False`, we will use the SAML attribute mapped to `uid` to identify the remote user instead of the `NameID` from the assertion. `True` by default. * `bad_domain_file`: should point a file containing a list of domains (one per line); users who have an email address on any of these domains will be blocked from registration. * `bad_domain_list`: an alternative to `bad_domain_file` allowing the list of bad domains to be specified inline in the config. If both `bad_domain_file` and `bad_domain_list` are specified, the two lists are merged. ## Implementation notes The login flow looks something like this: ![login flow](https://raw.githubusercontent.com/matrix-org/matrix-synapse-saml-mozilla/master/doc/login_flow.svg?sanitize=true) ## Development and Testing This repository uses `tox` to run linting and tests. ### Linting Code is linted with the `flake8` tool. Run `tox -e lint` to check for linting errors in the codebase. ### Tests This repository uses `unittest` to run the tests located in the `tests` directory. They can be ran with `tox -e tests`. ### Making a release ``` git tag vX.Y python3 setup.py sdist twine upload dist/matrix-synapse-saml-mozilla-X.Y.tar.gz git push origin vX.Y ```