6.4 KiB
title | description | summary | date | draft | images | weight | toc | support | seo | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Jellyfin | Integrating Jellyfin with the Authelia OpenID Connect 1.0 Provider. | 2024-04-12T21:54:41+10:00 | false | 620 | true |
|
|
Tested Versions
{{% oidc-common %}}
Assumptions
This example makes the following assumptions:
- Application Root URL:
https://jellyfin.{{< sitevar name="domain" nojs="example.com" >}}/
- Authelia Root URL:
https://{{< sitevar name="subdomain-authelia" nojs="auth" >}}.{{< sitevar name="domain" nojs="example.com" >}}/
- Client ID:
jellyfin
- Client Secret:
insecure_secret
Some of the values presented in this guide can automatically be replaced with documentation variables.
{{< sitevar-preferences >}}
Configuration
Authelia
The following YAML configuration is an example Authelia client configuration for use with Jellyfin which will operate with the application example:
identity_providers:
oidc:
## The other portions of the mandatory OpenID Connect 1.0 configuration go here.
## See: https://www.authelia.com/c/oidc
clients:
- client_id: 'jellyfin'
client_name: 'Jellyfin'
client_secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'.
public: false
authorization_policy: 'two_factor'
require_pkce: true
pkce_challenge_method: 'S256'
redirect_uris:
- 'https://jellyfin.{{< sitevar name="domain" nojs="example.com" >}}/sso/OID/redirect/authelia'
scopes:
- 'openid'
- 'profile'
- 'groups'
userinfo_signed_response_alg: 'none'
token_endpoint_auth_method: 'client_secret_post'
Application
{{< callout context="caution" title="Important Note" icon="outline/alert-triangle" >}}
This configuration assumes Jellyfin administrators are part of the jellyfin-admins
group, and
Jellyfin users are part of the jellyfin-users
group. Depending on your specific group configuration, you will have
to adapt the AdminRoles
and Roles
nodes respectively. Alternatively you may elect to create a new authorization
policy in provider authorization policies then utilize that policy as the client authorization policy.
{{< /callout >}}
To configure Jellyfin to utilize Authelia as an OpenID Connect 1.0 Provider:
-
Visit the Jellyfin Administration Dashboard.
-
Visit the
Plugins
section. -
Visit the
Repositories
tab. -
Click the
+
to add a repository. -
Enter the following details:
- Repository Name:
Jellyfin SSO
- Repository URL:
https://raw.githubusercontent.com/9p4/jellyfin-plugin-sso/manifest-release/manifest.json
- Repository Name:
-
Click
Save
. -
Click
Ok
to confirm the repository installation. -
Visit the
Catalog
tab. -
Select
SSO Authentication
from theAuthentication
section. -
Click
Install
. -
Click
Ok
to confirm the plugin installation. -
Once installed restart Jellyfin.
-
Complete steps 1 and 2 again.
-
Click the
SSO-Auth
plugin. -
Add a provider with the following settings:
-
Name of the OID Provider:
Authelia
-
OID Endpoint:
https://{{< sitevar name="subdomain-authelia" nojs="auth" >}}.{{< sitevar name="domain" nojs="example.com" >}}
-
OpenID Client ID:
jellyfin
-
OID Secret:
insecure_secret
-
Enabled: Checked
-
Enable Authorization by Plugin: Checked
-
Enable All Folders: Checked
-
Roles:
jellyfin-users
-
Admin Roles:
jellyfin-admins
-
Role Claim:
groups
-
Request Additional Scopes:
groups
-
Set default username claim:
preferred_username
-
-
All other options may remain unchecked or unconfigured.
-
Click
Save
.
Alternatively you can utilize the following configuration XML:
<?xml version="1.0" encoding="utf-8"?>
<PluginConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SamlConfigs />
<OidConfigs>
<item>
<key>
<string>authelia</string>
</key>
<value>
<PluginConfiguration>
<OidEndpoint>https://{{< sitevar name="subdomain-authelia" nojs="auth" >}}.{{< sitevar name="domain" nojs="example.com" >}}</OidEndpoint>
<OidClientId>jellyfin</OidClientId>
<OidSecret>insecure_secret</OidSecret>
<Enabled>true</Enabled>
<EnableAuthorization>true</EnableAuthorization>
<EnableAllFolders>true</EnableAllFolders>
<EnabledFolders />
<AdminRoles>
<string>admins</string>
</AdminRoles>
<Roles>
<string>users</string>
</Roles>
<EnableFolderRoles>false</EnableFolderRoles>
<EnableLiveTvRoles>false</EnableLiveTvRoles>
<EnableLiveTv>false</EnableLiveTv>
<EnableLiveTvManagement>false</EnableLiveTvManagement>
<LiveTvRoles />
<LiveTvManagementRoles />
<FolderRoleMappings />
<RoleClaim>groups</RoleClaim>
<OidScopes>
<string>groups</string>
</OidScopes>
<CanonicalLinks></CanonicalLinks>
<DisableHttps>false</DisableHttps>
<DoNotValidateEndpoints>false</DoNotValidateEndpoints>
<DoNotValidateIssuerName>false</DoNotValidateIssuerName>
</PluginConfiguration>
</value>
</item>
</OidConfigs>
</PluginConfiguration>
See Also
- Jellyfin SSO Plugin Repository