Authelia与Jellyfin的OpenID Connect集成指南
前言
在现代应用架构中,身份认证是一个核心组件。Authelia作为一个开源的认证和授权服务器,提供了强大的OpenID Connect(OIDC)功能。本文将详细介绍如何将Authelia与Jellyfin媒体服务器通过OIDC协议进行集成,实现统一身份认证。
环境准备
版本要求
- Authelia版本:v4.38.17或更高
- Jellyfin版本:v10.10.6或更高
基本假设
在开始配置前,我们需要明确以下基础信息:
- Jellyfin应用根URL:
https://jellyfin.example.com/
- Authelia根URL:
https://auth.example.com/
- 客户端ID:
jellyfin
- 客户端密钥:
insecure_secret
(生产环境请使用更安全的密钥)
配置步骤
1. 安装Jellyfin SSO插件
Jellyfin本身不支持OIDC协议,需要通过SSO插件来实现:
- 登录Jellyfin管理控制台
- 导航至"插件"→"存储库"选项卡
- 添加新的插件存储库:
- 名称:
Jellyfin SSO
- URL:
https://raw.githubusercontent.com/9p4/jellyfin-plugin-sso/manifest-release/manifest.json
- 名称:
- 保存后安装SSO Authentication插件
- 安装完成后重启Jellyfin服务
2. 配置Authelia客户端
在Authelia的配置文件中添加Jellyfin作为OIDC客户端:
identity_providers:
oidc:
clients:
- client_id: 'jellyfin'
client_name: 'Jellyfin'
client_secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng'
public: false
authorization_policy: 'two_factor'
require_pkce: true
pkce_challenge_method: 'S256'
redirect_uris:
- 'https://jellyfin.example.com/sso/OID/redirect/authelia'
scopes:
- 'openid'
- 'profile'
- 'groups'
userinfo_signed_response_alg: 'none'
token_endpoint_auth_method: 'client_secret_post'
关键配置说明:
client_secret
是insecure_secret
的PBKDF2哈希值- 要求使用PKCE增强安全性
- 授权策略设置为双因素认证
- 配置了必要的OIDC作用域
3. 配置Jellyfin SSO插件
方法一:通过配置文件
创建或修改SSO-Auth.xml
文件:
<?xml version="1.0" encoding="utf-8"?>
<PluginConfiguration>
<OidConfigs>
<item>
<key>
<string>authelia</string>
</key>
<value>
<PluginConfiguration>
<OidEndpoint>https://auth.example.com</OidEndpoint>
<OidClientId>jellyfin</OidClientId>
<OidSecret>insecure_secret</OidSecret>
<Enabled>true</Enabled>
<EnableAuthorization>true</EnableAuthorization>
<AdminRoles>
<string>jellyfin-admins</string>
</AdminRoles>
<Roles>
<string>jellyfin-users</string>
</Roles>
<RoleClaim>groups</RoleClaim>
<OidScopes>
<string>groups</string>
</OidScopes>
</PluginConfiguration>
</value>
</item>
</OidConfigs>
</PluginConfiguration>
方法二:通过Web界面
- 进入Jellyfin管理控制台
- 导航至"插件"→"SSO-Auth"
- 添加新的OIDC提供者:
- 名称:
authelia
- OID端点:
https://auth.example.com
- 客户端ID:
jellyfin
- 密钥:
insecure_secret
- 启用授权:是
- 管理员角色:
jellyfin-admins
- 用户角色:
jellyfin-users
- 角色声明:
groups
- 额外作用域:
groups
- 名称:
4. 用户组映射
重要提示:Authelia中的用户组需要与Jellyfin的权限对应:
jellyfin-admins
组的用户将获得Jellyfin管理员权限jellyfin-users
组的用户将获得普通用户权限
您可以根据实际需求调整这些组名,或在Authelia中创建专门的授权策略。
测试与验证
配置完成后,可以通过以下URL测试登录: https://jellyfin.example.com/sso/OID/start/authelia
安全建议
- 生产环境中务必使用强密码替代
insecure_secret
- 考虑启用HTTPS验证
- 定期审计用户权限
- 考虑实现更细粒度的文件夹权限控制
常见问题
- 登录失败:检查重定向URI是否完全匹配
- 权限不正确:确认用户组映射关系
- 插件不工作:确保已正确重启Jellyfin服务
通过以上步骤,您已成功将Authelia与Jellyfin集成,实现了基于OpenID Connect的统一身份认证。这种集成不仅提高了安全性,还简化了用户管理流程。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考