Authelia 与 Audiobookshelf 集成:基于 OpenID Connect 1.0 配置单点登录(SSO)实战指南 📅 发布时间:2026/9/12 1:44:04 👁 浏览次数: Authelia 与 Audiobookshelf 集成基于 OpenID Connect 1.0 配置单点登录SSO实战指南【免费下载链接】autheliaThe Single Sign-On Multi-Factor portal for web apps. OpenID Certified™ and Post-Quantum Cryptography Ready.项目地址: https://gitcode.com/GitHub_Trending/au/authelia本篇技术指南完整讲解如何在 Authelia 的 OpenID Connect 1.0 Provider 中注册 Audiobookshelf 客户端并在 Audiobookshelf 的 Web 管理界面中完成 OIDC 认证配置最终实现通过 Authelia 统一登录、统一鉴权的单点登录流程。读完本文你将掌握 Authelia 客户端注册配置中每个关键参数的含义与默认值、Audiobookshelf 侧各端点的正确填法以及 Auto Launch / Auto Register / groups 声明等进阶选项的取舍依据。适用范围与已验证版本本指南来自 Authelia 官方集成文档docs/content/integration/openid-connect/clients/audiobookshelf/index.md其支持级别为社区支持community以下组合经过了官方集成验证Autheliav4.39.0audiobookshelfv2.26.3需要说明的是该集成文档中的版本号仅代表验证时的版本使用时请以当前实际部署版本为准。同时Authelia 作为 OpenID Connect 1.0 Provider 的能力介绍可参见 OpenID Connect 1.0 集成指南。开始之前务必阅读的重要注意事项在动手配置 OIDC 注册客户端之前有几条来自官方通用短代码docs/layouts/_shortcodes/oidc-common.html的通用约束需要先了解关于client_id的要求client_id必须是每个客户端唯一的值本指南中使用的audiobookshelf仅为便于阅读和演示生产环境不应使用应通过随机生成器生成见下文只能包含 RFC3986 Unreserved Characters即A-Z、a-z、0-9、-、.、_、~避免部分依赖方在编码凭据时出错长度不得超过 100 个字符。关于client_secret的要求本指南中使用的insecure_secret仅为演示生产环境绝对不要使用在 Authelia 配置中client_secret可以明文存储但该行为已被弃用未来不保证继续支持强烈建议以哈希形式存储详见下文生成方式当 secret 以哈希形式存储时若哈希工作因子过高可能导致客户端请求超时可参考 如何生成客户端标识符与密钥FAQ 中的工作因子调优章节。关于配置示例的说明本文给出的 Authelia YAML 配置仅包含客户端注册部分你必须同时按照 OpenID Connect 1.0 Provider 配置指南 完成 Provider 级必需配置并且该示例只展示了注册客户端全部可选配置中的一小部分建议通读 OpenID Connect 1.0 客户端配置指南 以了解全部选项及其影响。集成前提假设本示例基于以下假设下文配置均以这些值为准实际部署时请替换为你的域名应用根 URLhttps://audiobookshelf.example.com/该选项决定了重定向 URI 的格式即https://audiobookshelf.example.com/login如果修改了此值必须同步更新 Authelia 侧的 redirect URIAuthelia 根 URLhttps://auth.example.com/Client IDaudiobookshelfClient Secretinsecure_secret生成安全的 Client ID 与 Client Secret生产环境建议使用 Authelia 自带的 CLI 工具生成随机值与密码哈希对应实现见 internal/commands/crypto_hash.go。在 Docker 部署下命令前加上docker run --rm authelia/authelia:latest即可。生成 72 位、仅含 RFC3986 未保留字符的随机 Client IDauthelia crypto rand --length 72 --charset rfc3986生成随机 72 位 Client Secret并同时输出可用 PBKDF2-SHA512 哈希值存入 Authelia 配置明文值用于配置 Audiobookshelfauthelia crypto hash generate pbkdf2 --variant sha512 --random --random.length 72 --random.charset rfc3986从 internal/commands/crypto_hash.go 的源码可以看到PBKDF2 命令支持的--variant取值为sha1、sha224、sha256、sha384和sha512--iterations默认为空时由变体决定。若你自行指定迭代次数可通过如下命令测量当前硬件的哈希耗时避免客户端请求超时time authelia crypto hash generate pbkdf2 --variant sha512 --iterations 310000 --password insecure_password配置 Authelia注册 OpenID Connect 1.0 客户端在 Authelia 的configuration.yml中向identity_providers.oidc.clients列表追加以下配置identity_providers: oidc: clients: - client_id: audiobookshelf client_name: audiobookshelf 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://audiobookshelf.example.com/auth/openid/callback - https://audiobookshelf.example.com/auth/openid/mobile-redirect - audiobookshelf://oauth scopes: - openid - profile - groups - email response_types: - code grant_types: - authorization_code access_token_signed_response_alg: none userinfo_signed_response_alg: none token_endpoint_auth_method: client_secret_basic下面结合 OpenID Connect 1.0 客户端配置指南 与 schema 源码internal/configuration/schema/identity_providers.go逐项解释每个参数client_id/client_name客户端唯一标识与显示名称即 Audiobookshelf 侧填写的 Client IDclient_secret此处存放的是insecure_secret的 PBKDF2-SHA512 哈希值310000 次迭代明文值用于 Audiobookshelf 侧配置public: false默认值声明这是机密confidential客户端能够安全保管凭据必须在 token 端点进行客户端认证authorization_policy: two_factor默认值客户端授权策略取值为one_factor、two_factor或 Provider 中自定义的authorization_policies策略名。two_factor意味着用户必须完成两步验证才能完成本客户端的授权请求require_pkce: true强制该客户端使用 PKCEProof Key for Code ExchangeRFC 7636。如需对全部客户端生效可改用 Provider 级全局选项enforce_pkcepkce_challenge_method: S256指定 PKCE challenge 方法合法值为空串、plain与S256。设置该值会同时隐式启用require_pkceS256是官方强烈推荐的取值依赖方支持时redirect_uris该客户端合法的回调 URI 白名单区分大小写且 scheme 必须是http或https。此处配置了三个Web 端 OIDC 回调地址、移动端重定向地址以及audiobookshelf://oauth自定义 scheme用于 Audiobookshelf 移动客户端。不在列表中的任何回调都会被 Authelia 判定为不安全并拒绝scopes默认值为openid,groups,profile,email允许该客户端消费的 scope 集合各 scope 定义见 OpenID Connect 1.0 Claims 指南response_types: [code]仅允许授权码流程Authorization Code Flow。官方安全提示明确指出只推荐code这一种 response type其他类型安全性较低grant_types: [authorization_code]允许的授权类型默认即为authorization_code官方建议非必要不要改动access_token_signed_response_alg: none默认值Access Token 的签名算法。设为none表示 Access Token 为不透明令牌一旦设为非none值将按 RFC 9068 把 Access Token 编码为 JWT适用于资源服务器需要无状态校验的较重场景userinfo_signed_response_alg: none默认值Userinfo 响应签名算法。官方特别提示绝大多数客户端不支持除none以外的取值此时整个 Userinfo 响应会从 JSON 变为签名 JWTAudiobookshelf 正是这类客户端因此保持nonetoken_endpoint_auth_method: client_secret_basic机密客户端的默认值客户端在 token 端点的认证方式支持client_secret_basic、client_secret_post、client_secret_jwt、private_key_jwt与none。本示例采用 HTTP Basic 方式提交 Client ID 与 Secret。配置 Audiobookshelf启用 OpenID Connect 认证Audiobookshelf 侧只有一种配置方法即通过Web GUI完成。Web GUI 操作步骤进入Settings设置进入Authentication认证勾选OpenID Connect Authentication: Enabled然后按以下清单配置其中大部分字段可通过填写Issuer URL后点击Auto-populate自动填充只需核对值是否正确即可配置项取值Issuer URLhttps://auth.example.comAuthorize URLAuto-populatehttps://auth.example.com/api/oidc/authorizationToken URLAuto-populatehttps://auth.example.com/api/oidc/tokenUserinfo URLAuto-populatehttps://auth.example.com/api/oidc/userinfoJWKS URLAuto-populatehttps://auth.example.com/jwks.jsonLogout URLAuto-populate留空Client IDaudiobookshelfClient Secretinsecure_secretSigning AlgorithmRS256Allowed Mobile Redirect URIsaudiobookshelf://oauthSubfolder for Redirect URLsNoneButton TextLogin with AutheliaMatch existing users byMatch by usernameAuto Launch关闭DisabledAuto Register关闭Disabled上述端点路径与 Authelia 的实际实现一致可对照 OpenID Connect 1.0 集成指南中的端点实现表 核对授权端点为/api/oidc/authorization、令牌端点为/api/oidc/token、Userinfo 端点为/api/oidc/userinfo、JSON Web Key Set 为/jwks.json均以 Authelia 根 URL 为前缀。关于 Auto Launch 与 Auto Register 的取舍在完成上述配置后你可能还想启用Auto Launch与Auto Register两个特性但需要注意Auto Launch启用后用户访问 Audiobookshelf 会被自动重定向到 Authelia 进行授权无论该用户是否已拥有账号并且当用户没有账号时Audiobookshelf似乎不会向用户显示任何错误信息体验可能令人困惑Auto Register自动为首次通过 OIDC 登录的用户注册账号。如果只想让部分用户访问 Audiobookshelf官方建议保持关闭。关于 groups 声明的说明Audiobookshelf 的组声明Group Claim可以配置为groups但你必须确保 Audiobookshelf 期望的组对于你希望授予访问权限的用户是真实存在的。一旦采用该方式组的维护管理将发生在 Authelia 侧而不是 Audiobookshelf 侧。常见问题与故障排查客户端请求超时如果client_secret以哈希形式存储且迭代次数过高客户端在 token 端点的认证会因哈希计算耗时而过慢甚至超时。可先测量本机耗时见上文time authelia crypto hash generate命令再适当降低迭代次数凭据编码问题部分客户端未按 RFC 6749 Appendix B 的要求对 Client ID / Secret 做 URL 转义在使用client_secret_basic/client_secret_post认证时会报凭据错误。规避办法是让 Client ID / Secret 只使用 RFC3986 未保留字符这正是上文生成命令使用--charset rfc3986的原因回调失败如果 Audiobookshelf 的根 URL 与 Authelia 侧redirect_uris中的回调不一致授权请求会被拒绝修改应用根 URL 时务必同步更新redirect_uris。参考文档Authelia 集成 Audiobookshelf 官方文档本文来源OpenID Connect 1.0 集成指南OpenID Connect 1.0 客户端配置指南OpenID Connect 1.0 Provider 配置指南OpenID Connect 1.0 Claims 与 Scope 定义集成常见问题FAQ生成客户端标识符/密钥与工作因子调优【免费下载链接】autheliaThe Single Sign-On Multi-Factor portal for web apps. OpenID Certified™ and Post-Quantum Cryptography Ready.项目地址: https://gitcode.com/GitHub_Trending/au/authelia创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考