Authelia与Jellyfin的OpenID Connect集成指南

Authelia与Jellyfin的OpenID Connect集成指南

authelia The Single Sign-On Multi-Factor portal for web apps authelia 项目地址: https://gitcode.com/gh_mirrors/au/authelia

前言

在现代应用架构中,身份认证是一个核心组件。Authelia作为一个开源的认证和授权服务器,提供了强大的OpenID Connect(OIDC)功能。本文将详细介绍如何将Authelia与Jellyfin媒体服务器通过OIDC协议进行集成,实现统一身份认证。

环境准备

版本要求

  • Authelia版本:v4.38.17或更高
  • Jellyfin版本:v10.10.6或更高

基本假设

在开始配置前,我们需要明确以下基础信息:

  1. Jellyfin应用根URL:https://jellyfin.example.com/
  2. Authelia根URL:https://auth.example.com/
  3. 客户端ID:jellyfin
  4. 客户端密钥:insecure_secret(生产环境请使用更安全的密钥)

配置步骤

1. 安装Jellyfin SSO插件

Jellyfin本身不支持OIDC协议,需要通过SSO插件来实现:

  1. 登录Jellyfin管理控制台
  2. 导航至"插件"→"存储库"选项卡
  3. 添加新的插件存储库:
    • 名称:Jellyfin SSO
    • URL:https://raw.githubusercontent.com/9p4/jellyfin-plugin-sso/manifest-release/manifest.json
  4. 保存后安装SSO Authentication插件
  5. 安装完成后重启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_secretinsecure_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界面
  1. 进入Jellyfin管理控制台
  2. 导航至"插件"→"SSO-Auth"
  3. 添加新的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

安全建议

  1. 生产环境中务必使用强密码替代insecure_secret
  2. 考虑启用HTTPS验证
  3. 定期审计用户权限
  4. 考虑实现更细粒度的文件夹权限控制

常见问题

  1. 登录失败:检查重定向URI是否完全匹配
  2. 权限不正确:确认用户组映射关系
  3. 插件不工作:确保已正确重启Jellyfin服务

通过以上步骤,您已成功将Authelia与Jellyfin集成,实现了基于OpenID Connect的统一身份认证。这种集成不仅提高了安全性,还简化了用户管理流程。

authelia The Single Sign-On Multi-Factor portal for web apps authelia 项目地址: https://gitcode.com/gh_mirrors/au/authelia

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

管翔渊Lacey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值