aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar otaconix <stefanhetzwaantje@gmail.com> 2023-06-30 12:58:20 +0200
committerGravatar GitHub <noreply@github.com> 2023-06-30 12:58:20 +0200
commitfc579bd2bc5406abcaa9f8dfffe4232a2e256116 (patch)
tree69f043fd6df4eabbd0719d81c3f0ba2ae23efbe4
parentee195354d96e698a521cf9584e2f4e85190dc5ef (diff)
Allow choosing the OIDC remote user claim and scopes to request from the identity provider (#5481)
* Allow choosing the OIDC remote user claim and scopes to request from the identity provider * Added comment to explain how checking whether an environment variable is set is done * Use apostrophe's instead of single quotes for verb contractions in docs * Move variables used for checking presence of environment variables inside IfDefine block
-rw-r--r--Docker/FreshRSS.Apache.conf21
-rw-r--r--docs/en/admins/16_OpenID-Connect.md2
2 files changed, 21 insertions, 2 deletions
diff --git a/Docker/FreshRSS.Apache.conf b/Docker/FreshRSS.Apache.conf
index e5576ac8f..0f9b8e3fa 100644
--- a/Docker/FreshRSS.Apache.conf
+++ b/Docker/FreshRSS.Apache.conf
@@ -15,6 +15,11 @@ TraceEnable Off
Error "The auth_openidc_module is not available. Install it or unset environment variable OIDC_ENABLED."
</IfModule>
+ # Workaround to be able to check whether an environment variable is set
+ # See: https://serverfault.com/questions/1022233/using-ifdefine-with-environment-variables/1022234#1022234
+ Define VStart "${"
+ Define VEnd "}"
+
OIDCProviderMetadataURL ${OIDC_PROVIDER_METADATA_URL}
OIDCClientID ${OIDC_CLIENT_ID}
OIDCClientSecret ${OIDC_CLIENT_SECRET}
@@ -22,8 +27,20 @@ TraceEnable Off
OIDCRedirectURI /i/oidc/
OIDCCryptoPassphrase ${OIDC_CLIENT_CRYPTO_KEY}
- OIDCRemoteUserClaim preferred_username
- OIDCScope "openid"
+ Define "Test_${OIDC_REMOTE_USER_CLAIM}"
+ <IfDefine Test_${VStart}OIDC_REMOTE_USER_CLAIM${VEnd}>
+ OIDCRemoteUserClaim preferred_username
+ </IfDefine>
+ <IfDefine !Test_${VStart}OIDC_REMOTE_USER_CLAIM${VEnd}>
+ OIDCRemoteUserClaim "${OIDC_REMOTE_USER_CLAIM}"
+ </IfDefine>
+ Define "Test_${OIDC_SCOPES}"
+ <IfDefine Test_${VStart}OIDC_SCOPES${VEnd}>
+ OIDCScope openid
+ </IfDefine>
+ <IfDefine !Test_${VStart}OIDC_SCOPES${VEnd}>
+ OIDCScope "${OIDC_SCOPES}"
+ </IfDefine>
OIDCRefreshAccessTokenBeforeExpiry 30
</IfDefine>
diff --git a/docs/en/admins/16_OpenID-Connect.md b/docs/en/admins/16_OpenID-Connect.md
index 16adb4532..287aa21ef 100644
--- a/docs/en/admins/16_OpenID-Connect.md
+++ b/docs/en/admins/16_OpenID-Connect.md
@@ -20,6 +20,8 @@ OIDC support in Docker is activated by the presence of a non-empty non-zero `OID
* `OIDC_CLIENT_ID`: The OIDC client id from your issuer.
* `OIDC_CLIENT_SECRET`: The OIDC client secret issuer.
* `OIDC_CLIENT_CRYPTO_KEY`: An opaque key used for internal encryption.
+* `OIDC_REMOTE_USER_CLAIM`: The claim to use as the username within FreshRSS. Defaults to `preferred_username`. Depending on what you choose here, and your identity provider, you’ll need to adjust the scopes you request so that this claim will be accessible. Refer to your identity provider’s documentation.
+* `OIDC_SCOPES`: The OIDC scopes to request. Defaults to `openid`. As mentioned previously, make sure the scopes you pick contain whatever `OIDC_REMOTE_USER_CLAIM` you chose.
You may add additional custom configuration in a new `./FreshRSS/p/i/.htaccess` file.