2020-12-31 11:41:01 +00:00
|
|
|
# All the Flask configuration values can be used:
|
|
|
|
# https://flask.palletsprojects.com/en/1.1.x/config/#builtin-configuration-values
|
|
|
|
|
2020-08-31 12:09:28 +00:00
|
|
|
# The flask secret key for cookies. You MUST change this.
|
2020-08-17 09:05:01 +00:00
|
|
|
SECRET_KEY = "change me before you go in production"
|
2020-08-31 12:09:28 +00:00
|
|
|
|
|
|
|
# Your organization name.
|
2020-11-05 11:18:17 +00:00
|
|
|
NAME = "Canaille"
|
2020-08-31 12:09:28 +00:00
|
|
|
|
2020-10-22 15:37:01 +00:00
|
|
|
# The interface on which canaille will be served
|
2020-10-29 12:43:53 +00:00
|
|
|
# SERVER_NAME = "auth.mydomain.tld"
|
2020-10-29 12:20:27 +00:00
|
|
|
# PREFERRED_URL_SCHEME = "https"
|
2020-10-22 15:37:01 +00:00
|
|
|
|
2020-08-31 12:09:28 +00:00
|
|
|
# You can display a logo to be recognized on login screens
|
2020-11-05 11:18:17 +00:00
|
|
|
LOGO = "/static/img/canaille-head.png"
|
|
|
|
|
|
|
|
# Your favicon. If unset the LOGO will be used.
|
|
|
|
FAVICON = "/static/img/canaille-c.png"
|
2020-08-17 09:05:01 +00:00
|
|
|
|
2021-10-28 13:24:34 +00:00
|
|
|
# The name of a theme in the 'theme' directory, or an absolute path
|
|
|
|
# to a theme. Defaults to 'default'. Theming is done with
|
|
|
|
# https://github.com/tktech/flask-themer
|
|
|
|
# THEME = "default"
|
|
|
|
|
2020-08-17 09:38:25 +00:00
|
|
|
# If unset, language is detected
|
2020-08-31 12:09:28 +00:00
|
|
|
# LANGUAGE = "en"
|
2020-08-17 09:38:25 +00:00
|
|
|
|
2020-08-31 12:09:28 +00:00
|
|
|
# Path to the RFC8414 metadata file. You should update those files
|
|
|
|
# with your production URLs.
|
2020-10-21 12:04:40 +00:00
|
|
|
OAUTH2_METADATA_FILE = "canaille/conf/oauth-authorization-server.json"
|
|
|
|
OIDC_METADATA_FILE = "canaille/conf/openid-configuration.json"
|
2020-08-25 09:15:38 +00:00
|
|
|
|
2020-09-01 15:27:56 +00:00
|
|
|
# If you have a sentry instance, you can set its dsn here:
|
|
|
|
# SENTRY_DSN = "https://examplePublicKey@o0.ingest.sentry.io/0"
|
|
|
|
|
2020-12-31 18:55:30 +00:00
|
|
|
# If this option is set to true, when a user tries to sign in with
|
2021-12-02 17:23:14 +00:00
|
|
|
# an invalid login, a message is shown indicating that the login does not
|
2020-12-31 18:55:30 +00:00
|
|
|
# exist. If this option is set to false (the default) a message is
|
2021-12-02 17:23:14 +00:00
|
|
|
# shown indicating that the password is wrong, but does not give a clue
|
2020-12-31 18:55:30 +00:00
|
|
|
# wether the login exists or not.
|
|
|
|
# HIDE_INVALID_LOGINS = false
|
|
|
|
|
2021-10-31 13:40:12 +00:00
|
|
|
[LOGGING]
|
|
|
|
# LEVEL can be one value among:
|
|
|
|
# DEBUG, INFO, WARNING, ERROR, CRITICAL
|
|
|
|
# LEVEL = "WARNING"
|
|
|
|
|
|
|
|
# The path of the log file. If not set (the default) logs are
|
|
|
|
# written in the standard error output.
|
|
|
|
# PATH = ""
|
|
|
|
|
2020-08-17 09:05:01 +00:00
|
|
|
[LDAP]
|
2020-08-18 15:39:34 +00:00
|
|
|
URI = "ldap://ldap"
|
|
|
|
ROOT_DN = "dc=mydomain,dc=tld"
|
|
|
|
BIND_DN = "cn=admin,dc=mydomain,dc=tld"
|
2020-08-17 09:05:01 +00:00
|
|
|
BIND_PW = "admin"
|
2021-08-31 13:49:59 +00:00
|
|
|
TIMEOUT =
|
2020-08-19 14:20:57 +00:00
|
|
|
|
2020-09-01 15:11:30 +00:00
|
|
|
# Where to search for users?
|
|
|
|
USER_BASE = "ou=users,dc=mydomain,dc=tld"
|
|
|
|
|
2020-08-20 08:45:33 +00:00
|
|
|
# Filter to match users on sign in. Supports a variable
|
2020-08-31 12:09:28 +00:00
|
|
|
# {login}. For sigin against either uid or mail use:
|
2020-08-20 08:45:33 +00:00
|
|
|
# USER_FILTER = "(|(uid={login})(mail={login}))"
|
2020-08-19 14:56:04 +00:00
|
|
|
USER_FILTER = "(|(uid={login})(cn={login}))"
|
2020-08-20 08:45:33 +00:00
|
|
|
|
2021-12-02 17:23:14 +00:00
|
|
|
# The object class to use for creating new users
|
2020-11-01 10:33:56 +00:00
|
|
|
USER_CLASS = "inetOrgPerson"
|
|
|
|
|
2021-12-02 17:23:14 +00:00
|
|
|
# Where to search for groups?
|
2021-06-03 13:00:11 +00:00
|
|
|
GROUP_BASE = "ou=groups"
|
2021-12-02 17:23:14 +00:00
|
|
|
|
|
|
|
# The object class to use for creating new groups
|
2021-06-03 13:00:11 +00:00
|
|
|
GROUP_CLASS = "groupOfNames"
|
2021-12-02 17:23:14 +00:00
|
|
|
|
|
|
|
# The attribute to use to identify a group
|
2021-06-03 13:00:11 +00:00
|
|
|
GROUP_NAME_ATTRIBUTE = "cn"
|
2021-12-02 17:23:14 +00:00
|
|
|
|
|
|
|
# A filter to check if a user belongs to a group
|
2021-12-06 14:40:30 +00:00
|
|
|
GROUP_USER_FILTER = "member={user.dn}"
|
2021-06-03 13:00:11 +00:00
|
|
|
|
2021-12-02 17:23:14 +00:00
|
|
|
# You can define access controls that define what users can do on canaille
|
|
|
|
# An access control consists in a FILTER to match users, a list of PERMISSIONS
|
|
|
|
# matched users will be able to perform, and fields users will be able
|
2021-12-06 23:07:32 +00:00
|
|
|
# to READ and WRITE. Users matching several filters will cumulate permissions.
|
2021-12-02 17:23:14 +00:00
|
|
|
#
|
|
|
|
# A 'FILTER' parameter that is a LDAP filter used to determine if a user
|
|
|
|
# belongs to an access control. If absent, all the users will match this
|
|
|
|
# access control. If your LDAP server has the 'memberof' overlay, you can
|
|
|
|
# filter against group membership.
|
|
|
|
# Here are some examples
|
|
|
|
# FILTER = 'uid=admin'
|
|
|
|
# FILTER = 'memberof=cn=admins,ou=groups,dc=mydomain,dc=tld'
|
|
|
|
#
|
|
|
|
# The 'PERMISSIONS' parameter that is an list of items the users in the access
|
|
|
|
# control will be able to manage. 'PERMISSIONS' is optionnal. Values can be:
|
2021-12-06 23:07:32 +00:00
|
|
|
# - "use_oidc" to allow OpenID Connect authentication
|
|
|
|
# - "manage_oidc" to allow OpenID Connect client managements
|
2021-12-02 17:23:14 +00:00
|
|
|
# - "manage_users" to allow other users management
|
|
|
|
# - "manage_groups" to allow group edition and creation
|
|
|
|
# - "delete_account" allows a user to delete his own account. If used with
|
2021-12-06 23:07:32 +00:00
|
|
|
# manage_users, the user can delete any account
|
2021-12-02 17:23:14 +00:00
|
|
|
# - "impersonate_users" to allow a user to take the identity of another user
|
|
|
|
#
|
|
|
|
# The 'READ' and 'WRITE' attributes are the LDAP attributes of the user
|
|
|
|
# object that users will be able to read and/or write.
|
|
|
|
[ACL.DEFAULT]
|
|
|
|
READ = ["uid", "groups"]
|
2021-12-06 23:07:32 +00:00
|
|
|
PERMISSIONS = ["use_oidc"]
|
2021-12-02 17:23:14 +00:00
|
|
|
WRITE = ["givenName", "sn", "userPassword", "telephoneNumber"]
|
|
|
|
|
|
|
|
[ACL.ADMIN]
|
|
|
|
FILTER = "memberof=cn=moderators,ou=groups,dc=mydomain,dc=tld"
|
|
|
|
PERMISSIONS = [
|
|
|
|
"manage_users",
|
|
|
|
"manage_groups",
|
|
|
|
"manage_oidc",
|
|
|
|
"delete_account",
|
|
|
|
"impersonate_users",
|
2020-11-26 14:29:14 +00:00
|
|
|
]
|
2021-12-06 23:07:32 +00:00
|
|
|
WRITE = ["groups"]
|
2020-11-26 14:29:14 +00:00
|
|
|
|
2020-08-31 12:09:28 +00:00
|
|
|
# The jwt configuration. You can generate a RSA keypair with:
|
2021-10-12 16:14:09 +00:00
|
|
|
# openssl genrsa -out private.pem 4096
|
2020-08-31 12:09:28 +00:00
|
|
|
# openssl rsa -in private.pem -pubout -outform PEM -out public.pem
|
2020-08-24 08:03:48 +00:00
|
|
|
[JWT]
|
2020-10-21 12:04:40 +00:00
|
|
|
PRIVATE_KEY = "canaille/conf/private.pem"
|
2021-10-12 16:14:09 +00:00
|
|
|
PUBLIC_KEY = "canaille/conf/public.pem"
|
2020-08-28 14:07:39 +00:00
|
|
|
KTY = "RSA"
|
|
|
|
ALG = "RS256"
|
2020-08-24 08:03:48 +00:00
|
|
|
EXP = 3600
|
2020-08-24 09:28:15 +00:00
|
|
|
|
|
|
|
[JWT.MAPPING]
|
2020-08-26 10:03:06 +00:00
|
|
|
# Mapping between JWT fields and LDAP attributes from your
|
2020-09-25 12:20:09 +00:00
|
|
|
# User objectClass. Default values fits inetOrgPerson.
|
2020-08-24 09:28:15 +00:00
|
|
|
SUB = "uid"
|
|
|
|
NAME = "cn"
|
|
|
|
PHONE_NUMBER = "telephoneNumber"
|
2020-09-25 12:20:09 +00:00
|
|
|
EMAIL = "mail"
|
|
|
|
GIVEN_NAME = "givenName"
|
2020-10-19 15:15:09 +00:00
|
|
|
FAMILY_NAME = "sn"
|
2020-09-25 12:20:09 +00:00
|
|
|
PREFERRED_USERNAME = "displayName"
|
|
|
|
LOCALE = "preferredLanguage"
|
2020-12-31 17:10:54 +00:00
|
|
|
PICTURE = "jpegPhoto"
|
2020-10-29 12:43:53 +00:00
|
|
|
ADDRESS = "postalAddress"
|
2020-10-22 15:37:01 +00:00
|
|
|
|
|
|
|
[SMTP]
|
|
|
|
HOST = "localhost"
|
|
|
|
PORT = 25
|
|
|
|
TLS = false
|
2021-01-06 16:19:44 +00:00
|
|
|
LOGIN = ""
|
|
|
|
PASSWORD = ""
|
2020-10-22 15:37:01 +00:00
|
|
|
FROM_ADDR = "admin@mydomain.tld"
|