feat(auth): add custom user properties for audiobookshelf

Add custom user schema in LLDAP which maps to a custom attribute in
Authelia which we then again map to a custom claim which we include in a
custom scope which audiobookshelf requests

Signed-off-by: Vegard Hagen <[email protected]>
This commit is contained in:
Vegard Hagen
2025-05-03 19:15:27 +02:00
parent e0fdbafa35
commit 1fbe9fb6bd
4 changed files with 40 additions and 11 deletions
+25 -9
View File
@@ -7,10 +7,15 @@ image:
pod:
kind: Deployment
env:
- name: TZ
value: Europe/Oslo
configMap:
default_2fa_method: totp
theme: dark
log:
level: info
identity_validation:
reset_password:
@@ -25,8 +30,7 @@ configMap:
session:
encryption_key: { secret_name: crypto }
cookies:
- subdomain: authelia
domain: stonegarden.dev
- domain: stonegarden.dev
storage:
encryption_key: { secret_name: crypto }
@@ -59,6 +63,11 @@ configMap:
additional_groups_dn: ou=groups
user: UID=authelia,OU=people,DC=stonegarden,DC=dev
password: { secret_name: lldap-auth }
attributes:
extra:
audiobookshelf_groups:
multi_valued: true
value_type: string
identity_providers:
oidc:
@@ -80,11 +89,17 @@ configMap:
allowed_origins_from_client_redirect_uris: true
endpoints: [ userinfo, authorization, token, revocation, introspection ]
claims_policies:
audiobookshelf:
custom_claims:
audiobookshelf: { attribute: audiobookshelf_groups }
# https://www.authelia.com/integration/openid-connect/openid-connect-1.0-claims/#restore-functionality-prior-to-claims-parameter
default:
id_token: [ groups, email, email_verified, alt_emails, preferred_username, name ]
id_token: [ email, email_verified, alt_emails, name, preferred_username, groups ]
username_email:
id_token: [ email, email_verified, alt_emails, preferred_username, name ]
id_token: [ email, email_verified, alt_emails, name, preferred_username ]
scopes:
audiobookshelf:
claims: [ audiobookshelf ]
clients:
- client_id: argocd
client_secret: { path: /secrets/client-argocd/client_secret.txt }
@@ -95,7 +110,7 @@ configMap:
redirect_uris:
- https://argocd.stonegarden.dev/auth/callback
- https://argocd.stonegarden.dev/applications
scopes: [ openid, groups, email, profile, offline_access ]
scopes: [ openid, email, profile, offline_access, groups ]
userinfo_signed_response_alg: none
id_token_signed_response_alg: ES256
access_token_signed_response_alg: ES256
@@ -106,7 +121,7 @@ configMap:
authorization_policy: two_factor
pre_configured_consent_duration: 1 month
redirect_uris: [ http://localhost:8085/auth/callback ]
scopes: [ openid, groups, email, profile, offline_access ]
scopes: [ openid, email, profile, offline_access, groups ]
id_token_signed_response_alg: ES256
access_token_signed_response_alg: ES256
revocation_endpoint_auth_method: none
@@ -117,14 +132,15 @@ configMap:
client_secret: { path: /secrets/client-audiobookshelf/client_secret.txt }
client_name: Audiobookshelf
public: false
authorization_policy: two_factor
authorization_policy: one_factor
claims_policy: audiobookshelf
pre_configured_consent_duration: 1 month
require_pkce: true
redirect_uris:
- https://abs.stonegarden.dev/audiobookshelf/auth/openid/callback
- https://abs.stonegarden.dev/audiobookshelf/auth/openid/mobile-redirect
- audiobookshelf://oauth
scopes: [ openid, groups, email, profile, offline_access ]
scopes: [ openid, email, profile, offline_access, audiobookshelf ]
id_token_signed_response_alg: ES256
access_token_signed_response_alg: ES256
@@ -136,7 +152,7 @@ configMap:
pre_configured_consent_duration: 1 month
require_pkce: true
redirect_uris: [ http://localhost:8000, http://localhost:18000 ]
scopes: [ openid, groups, email, profile, offline_access ]
scopes: [ openid, email, profile, offline_access, groups ]
revocation_endpoint_auth_method: none
introspection_endpoint_auth_method: none
pushed_authorization_request_endpoint_auth_method: none
+11
View File
@@ -44,6 +44,9 @@ spec:
- name: groups
mountPath: /bootstrap/group-configs
readOnly: true
- name: user-schemas
mountPath: /bootstrap/user-schemas
readOnly: true
- name: users
mountPath: /bootstrap/user-configs
readOnly: true
@@ -58,6 +61,14 @@ spec:
items:
- key: groups.json
path: groups.json
- name: user-schemas
projected:
sources:
- secret:
name: lldap-config
items:
- key: user-schemas.json
path: user-schemas.json
- name: users
projected:
sources:
+1
View File
@@ -15,6 +15,7 @@ configMapGenerator:
- LLDAP_LDAPS_OPTIONS__ENABLED="true"
- LLDAP_LDAPS_OPTIONS__CERT_FILE="/cert/tls.crt"
- LLDAP_LDAPS_OPTIONS__KEY_FILE="/cert/tls.key"
- RUST_LOG=warn
- name: bootstrap-env
namespace: lldap
literals:
+3 -2
View File
@@ -5,8 +5,9 @@ metadata:
namespace: lldap
spec:
encryptedData:
groups.json: AgDUmewa9DDYcF9FZbXrIS9eG/LuadHhAXrFuI6TE/ZwZxaIRo9STLGCy8m9DATOk4x0EJJur4FS8HFHCooEGM5IiSLuFWRyzGkpCW2Ef9VrmMdINDn9vQVOM2SohlQa6JiQtuU2LBWq+bKV8vCGxf/xCX2YywhYVYjAmKBzMYfELtBwODxQMJmAohNNOFlgToj7tVq3m37jlT9Yf2KvhDHnBf27/jJNWN/Ow0AWBboE06Z0aogBVQxO1o1b1lzTmvNzPaEt/ohgefJu8s8uosSQFGCzgkFcdaIb8tTv6RpHzC4BnXxBZ+kwGSwkz3ZNuAJPjGumfhPdaewgi5hwQsHFxyXwkFELllsHSosQwE16aGc6GM1ZtWEhSxfGST9uXheyz3uutKzGcMluZZld2Df+OSuYDpZ7ciuJw9XsrxcwehlI4REQRBIW1P2/AwNb7PohmG5Ip0/s7oURBYjI2km3lmcraT2Ezuve0eEgfbk8Mi9oJP2LQANUplQR5x/weX26j2aFKfp5MotwKzYj5pLVhRWnAFZIv2eIAgSDyG/6vP8AGkDOFRCLFCUOsl55+pNT+pGDFb9Wl23AQXc0i5aUpzk1tO7XDkLc/Y3XZG5oZRaGEgxXVJ4ivs4Kls1klf7Niu49xpaz30YZmd1VI9VCYM2KzOitPa1QJ/qv5PtuaqDbh5D2osIOkt3sNi+NLt0DoZObwOOngQNw16OQqb4ZC7GCEcwOPn0xBNxD/OlG+08TVWDdLt/oXiYaUYJvXwilXA3ebilTggagQeGlZkUWxYoun88VozbGVgmjm3y0p7kk6tAE5OfwCCPCHcG4xvw=
users.json: AgBMEMM2F22mBcj/Nc8CjRuyG61BOE2UMK0BaxYt4ExXEsvfPYlok2S3hVrNtBGxO2qI4XVmGqsJdis/4Vk7vOTht/zj3WFmyuMAvseTNaWJxkaRX4DR1A3Esy14zzwr63UXThC5wAkUDCAsr9l+/PirCNPZH5ecPAtF69MwI+yettENu1kzBZx7QnLgPcoNcVfAExoj92LZWgots0l+wQJTXeICS+jIRh6bkLsIAin5D1K+/VBe2q+5ODMfcoaa9TnBqzceiMIpEi0FxWAqH6B3qs2hz1xdvzmlmvvq3crYGZEpLnHGN+mhaJiA7rpwkIsHSU77bE7endp/gSCaGqhm4PJiNa9/FKk24kvfdp7zIoco/fmT/kgJajZ9mKPeZKYmjycDikB5rIzo7x+90v8ZG0Y1QAb2PmWdA4EUxD3wD8hm2cmR4Z/nJo9P3438A2kMHxC88Cdu7C/HpUxoBeq3njMYcWEFzQNSbqD4OUtBzY4KqmK5frf78w77hUJFs77uJ4SzbfwqZgH+c4h7BOPmGQjAWOdzazWyNR4NcfAqBTrNL/CMisl/vdXVlqvStkUJMBK95lMj4QW7li5E6W5T/DvqYbaRe8hjDf8qyj5aFvZHTx31uta/GdFRF/qWcv8uhbkF6mz/rlt9nQR9HL6ewZhhmvHtN1E+RGywkV5q5EJ9Xpk5Dl6euq1wG3fdmiK9gGL8Xjw/SvA7ePIP1c9LmcopY8UR8LZkmtnyiYVnGHYnSockr0Zgq/lxgNRJd+8lRx2yk8493IWAW9HuvQ/Fz7fnslgQ8vRtn6WG1o+a0yJNCk6NSxsO5eGFGJkO7MtR7T28snf50BkUXpvnop5Vx+Dg2paz6esRR8sRhmanPnZSCK6bsoqguWeL2txwtXoobfwUkufLMTX8+xA+mtvAsKd7VU+gmrEi7Bq42GKNn3ycwHs/2iQjZxBDwwDo2/U2p/i6EcClcQ0OmkyKwQu7vPMZEAQDn/b7uPpxifEQALaXAAK1SCb89Y7C6Yx2B39fAgi/2SPhEy5UVSNvK6aKB99IaHAomLZhpXihEoInFyS1ZQGctD9ParfsPxSDcPB2DfC6bVQDOTPxhctlaNmMfGczapOCIfhM9dtiX7biku2e1+nLnQ8ucHrUa9BqSSf8cQfDKiEnV0jGnl6B9fTDmVTqpfMN77Bu5V0O5fyUvrQgmbgI8SXkBMYAYl9HmXBWNtxIEheSKivOLnOJ+MOKK39lCKOELj96RpiJcbMskBlQ2ZZwj5D7UuyuJ9/YRtZ2tl+XTAmpfJ3kZCqqSgAudMFjLTdGawihPYi/6G9d02b+zaoQFaWZmGr7VvqhQn4iF3rLO/deCG9kLVhtXK5c1HielVktKz29vlUVHHikEFQaylvjjMXyHan1B1PCb/dUjgWxFJWaikOqlrkN1ceNV96fkM7dsxtlrcLF0VJIISfRqoWR7knuH309Yo5t59CeySSy1chYc6bmGCiqIr7JBIRik+araFKRLp7kAE41k1Wcqz5ZlpafdT1FW5mWN3O4rq+L2MMawgc2Qkx8efEFGa9ykK20vu5oCVb8P5FPRuRTDCRxgLvXwTsQq6ZKzRJyYxhmV4Vi9gBfIqSu/tVZVAYApZbfAsMXgRu0DPVSB+KcioKyM+IzSlWIdocRr4YULRTtsNgba7QgBGqKkU3ydzf1jlC3Q07U52iNyTNwomqhPjWUHKnO6WL5sHrv232fkq6FUuQz/TOOl2ydZN9D997Nzep9js5iEtCJ3+4e3QKs
groups.json: AgBusPp+JogVCThv5sFjSlTLt3j4+tOW8R50dVDUjniEGw2jVECXGgLLBcOdGOb1MPdGT968xANnoGVfAJN+TREpum//8R9IjN5uwpdEgPQOm9vOlbZd1AW9S9N1sFgVJgtJTbGZfJF7EFiQKNoVOG6FyRreTQe5PeKaCE6yWYx9j18WBqDpoJotW3Axz/Hd7TzcpnCwdbb2doeay5neAWZxCXXhTQQB6eBfWBhO+cB4IayVNO5bjjT3Nr0vd4OIO9IUE8JuY673sBrJKdlGBYORydUMDPuymu1dMZGMMw231fZZpf6vfSGEoIn97MCY6cFoLrvQ0BaPD4RKZTQ+Zw1zOxJh1ZqLB5/8+EwmxT9HLyQVE4rUDg1YSrElgySLHugOLsJOjwGOjGtWqrDxXsQAm4gg8L+UClR8zKzf3h+mb5mjdHs7vRPCBWU5ULohSOmy8XRjcqjhxPNyD3B/sR7cqDuM/kkGeETH+s3iH/6deB9pdpucsGPPpN8XrPapFuUQxyewH+gZ9TQxMVTpGBM1G+KUjpfGRDkKVjDwkB55Rss/PNgu8eN5Ap/HREVHz2G/RCC0CcJrNmY58U7Xj367vjYckPIY5LsWcYXv9pIBvibv+ER9IR9woO96Llb5dLgFoDpRLbYGq3FN47eczaLs0zAToCUm25IAi0NaosDNyhlNygsYkmy12KalNVJWNCNq2t2D094QNSPM/WJbElEQkG8xfNBLDFH6hrf3EpBBqBZMrK//GMd/jKlkPy/IXHi2BT11N6bpOTQpSR94yLE2oy/OnYs5ALWB+T4OWsaKXr6NGdTYdV/q6EDtj0VSVg==
user-schemas.json: AgBPy3B8gv5u7U50GJ/rQDpXHtO0PuNmNnCq94Hv77kbEKQzk0s0awq/IpC+i/VSNqMtkh0CLMtaoiqtxGWQa7IOYb4FpXtxcrJ8Iw7OBiQqAL9cAdUXZ6eWvrj9EZLwdL0p6H/jpG7XZt8b7xhz90Z9hEM5P54gnyMmR22gS5roAA2mpBJNu68jdAki4xHUdatdMcOAPB4zPJI+KVDAvOCVlBI900v3ZDDIViUKy6FVVp22DD/OBu9IxNz8FBdEZiQgfqr+0kwLrFJzV3fSaa5o0w73ADZrCoOiNbOLRzLEjhAq7yYz6E1rvFlaEAr+4QBylSelPW6nrgGYRHLiGTaT4Fhj2C6isA0xDB1f7HckhQUWPGjdSx2a1Fbg0hqZAeVMxYNxJuYbcMgipjcDCSAjSF9BCF6OMiO5AJxuh7/eVbPcTFu1DT1s1P0yIMpLk7oHKJnJpf9IZFMp6TKmpQLLcfDE4msRjDdZN16lHHcEgrUdeeG3fh9fqDAIr9eC0vNTvbOXEjXppO/vp6Dg+wbqdIgoZLBCpCTne3e8ouAgvkp6baoVThgRAccL/r96CvG1aFgSScLpkcllNuD3CqMQiVePCzIxykUDNPyBdKosgLMNAewQ9joSU6iyHanUPH/37vGSPbSymEzC5zGgjYPf6Sv/jIdFqFQ1IXoQPLZNJU/ubu7a7BipuPGMD7+8uRmYjKAj5BmiNO/NO4KdpIAsDUT89T2b5SKocO8YllGxBfQ2nzVvsXjA5DqxrT1f8bfiVfHuiPCTGJMig+VeRfVge+EDvMityUDmYlmJc4dDz8nJpqMt792UgfLMPAv6kd2MKAGUbLiruhe7rt+pN6toIjl2nexLAw+uHduvtUOI9r17XWmoEefj8eiOCIS1TwPRQA==
users.json: AgBtgt8GwrFZqfXnFRHFrOJKxKqfeQILI7GhQ6akRMHBwX6mpdtoCUr4Kg7gY/bMeSlF/vVJMVkSTAK446CvDeeIjOZ8t7y33o4dvcPyBSUF61+QRHsgxEGfEkOHpAvlQEp+UFtRcMvBmQt5Ld7oH5aMaRAGVQ+0kTEOPJ6XLyD2FcKPUaHEULMX3RzSeVFONCSgq34vecv4986dWZnV8sRRhReuzRbaRZojca/zNxVCR3E2Ol4nFnmPqwE6TPOQ6ruSH4WlXQHeQWSxmTmGwy/Rm/vrXMMuqtCjTx6Kdtqkbdo1q9DdYeybdxcey7hddFo8lvFTn6OvL8HJXASeJt7gs+aT0gyrz0csEJjluEu5eVwYoVkfeESDzOpt4LZhFieuZYWTVd3+CG0Y/YY+vCVpNz8sqKfVcKO7SKH8q4Xs4TB0XOuaSFzrJWSqSG1JKC1AAxyZfAveF/f2L8qdD7mR8oYCkmuVtW6kbnb6c7S981MH7TPrC6HFfptOKV119nVve6bN+rXtGiwEfVlF0XQDTCECKAWgaAhFYJJAj1nA8RG7Uoh8yQ965woybU86pNf6VzSTUi1DSlUpOPPPCZ8br3RoHuqoB1yj6fxZIdNJj48tKGlJ6TDUbAI0XdGou7b3HBfZxUkVLS9En9qHdB0fjvDbh55uBsWavJbaxUP2hWytmC62jqXYCFzIQrUAPiveXnXIXPAUWqeuCZmYDRtiQtanfRjtxEppKuAozDofiycil2fqd7lr2NeAFI1IT1SOUO/ctafYLggJ59+DYh0ovoBGe1wnCceDHV/XGGzWZiuT4HkIoc2DyrDeZ2CC+RxXVzFAWZ0rt8+U7MjkkIhsCYAApBc8lnPh7AcbfxJftLvPmTJZt72enD9QoDhuGbdK/aPm6xC2yMCSqWV4EOi17k2SkXfZE/eo9kRVHE8IIKgdvcrCmqnhtLaMmK/VO5D7GJBu7V8fcJMavVhiHn7E6sbsThgNWDZa6Pi3jlYJqM39XN2uEjmXajoUPh/u03yWdE8eEMPWVhogtoREG9YJ7rPtzd2NLry7SPZIfKS5KVoq9LCQSS50/AcC3kH+Bo88NXIlXimcJxfgX8ASOdQFfdmdCT9uVwEWTOIcUWPhMI4VoeD/KrlmKJB+E5DbC5ZFAC7RO2WEJGBFuGgoqKSn7udWZFFRR+BJn9FKdNJ1tZGQ0aHXDMs6NmnecZmnxFb1npJRToaqBAJHxQ7WoLqhaEHNJqF1/ixlqMV3NokDZ/mthHr+664P1Nt1mtxokumCWuhZu5lVfU5z06CrUqnSFRpC8qfkW2lD6pd3GsLR1CVipcwcSGmlrVUQJIS5hfYo5BA50DT7gJbUNnX5DCuaP6EwvOnOlr8npdmjNsIp2wfvXwGaoKQwwB5Qr5AovvK5kHTuxId0t2ls28vU0CrGvX06AIzukNVJMsTUtHdkVp7sNvdvRBSWbERQBtYGPUIgnT14rjxc9wl7/4VP4NgiLXZ6e9A8U1PTyOwVLXRYfu6KizuFCC7rYFerK7bqN9tRwII6oWSq0vX0rrr3dUsOfTxyKnnp9Trey/K81EwLSx6eEAPwQwkDo2+nvgI0N/qEv4OcIJQ4i0+i/rhwQH/mN7JSIXFe+CESdr+3YRhqOKXiL2KlAp8ZShpsLDbGQ8wjO47gmcT6leCalHs351NgQLcGBzlieFI8Bldewxwj0ES/WKxKC04yXvDUtdFd3JCgZcuRu20J15yDeeSl9sH5kwobjBzosHcLO1H2A4c+XQs8BOpqcpRLUVrW7ON7AuUpgyyPxLgUTGccTPN91aEwcmPfpx+NvQYgcMwfH5Abfe2bRLSxFqKzyMJXlAzwZCI7ly8DE3r+EHBGYpo8lGQqmKXO2K7Zaum7QpkzkHq9KDz5XWTYFGltirsjo4bG3kMGeiwKsPbZcWa4enIeNqVOy+D533k+AUMzWO6cy41KtpI/9Ioc/lNd8eVi7Fuecs/ZjL7p5HhVLoo0a4YpHeQAUANUEoNdtbn9oc5Ob1DzbAwloYfkksrTl1n+jBusdmdniRfus+LzltaRQvXg9to2lYKGoIZY76qCMliJAJLdnebmGXUKVdbCW1rq+E9uX8Q8wAs0WKAQZl0o0C1GFffOmteqdPh2YK+UGcs3xr5wsk8LSF1L9oWnWvahWcSRrXRw5SC3Gda5DJnoohcHuYc=
template:
metadata:
name: lldap-config