[OAuth2] Allow custom client_id and client_secret

This commit is contained in:
magicfelix
2026-02-24 18:14:19 +01:00
parent 610a8bc837
commit 74ad76b36d
4 changed files with 36 additions and 1 deletions

View File

@@ -1360,6 +1360,22 @@ Endpoint URL for the OAuth2 token
Default: (unset)
##### oauth2_client_id
_(>= 3.5.0)_
Client ID used to request the Auth2 token
Default: `radicale`
##### oauth2_client_secret
_(>= 3.5.0)_
Client secret used to request the Auth2 token
Default: (unset)
##### pam_service
_(>= 3.5.0)_

6
config
View File

@@ -156,6 +156,12 @@
# OAuth2 token endpoint URL
#oauth2_token_endpoint = <URL>
# OAuth2 client id
#oauth2_client_id = <client_id>
# OAuth2 client secret
#oauth2_client_secret = <client_secret>
# PAM service
#pam_serivce = radicale

View File

@@ -34,6 +34,8 @@ class Auth(auth.BaseAuth):
def __init__(self, configuration):
super().__init__(configuration)
self._endpoint = configuration.get("auth", "oauth2_token_endpoint")
self._client_id = configuration.get("auth", "oauth2_client_id")
self._client_secret = configuration.get("auth", "oauth2_client_secret")
if not self._endpoint:
logger.error("auth.oauth2_token_endpoint URL missing")
raise RuntimeError("OAuth2 token endpoint URL is required")
@@ -49,8 +51,11 @@ class Auth(auth.BaseAuth):
"username": login,
"password": password,
"grant_type": "password",
"client_id": "radicale",
"client_id": self._client_id,
}
if self._client_secret:
req_params["client_secret"] = self._client_secret
req_headers = {"Content-Type": "application/x-www-form-urlencoded"}
response = requests.post(
self._endpoint, data=req_params, headers=req_headers

View File

@@ -354,6 +354,14 @@ DEFAULT_CONFIG_SCHEMA: types.CONFIG_SCHEMA = OrderedDict([
"value": "",
"help": "OAuth2 token endpoint URL",
"type": str}),
("oauth2_client_id", {
"value": "radicale",
"help": "OAuth2 client id",
"type": str}),
("oauth2_client_secret", {
"value": "",
"help": "OAuth2 client secret",
"type": str}),
("pam_group_membership", {
"value": "",
"help": "PAM group user should be member of",