Pocket ID 一個 container 自架 passkey SSO,易裝但整合有四個伏位
3C 產品

Pocket ID 一個 container 自架 passkey SSO,易裝但整合有四個伏位

圖片:via XDA Developers — https://www.xda-developers.com/ditched-keycloak-single-container-sso-integration-headaches-explained/
TechLab 編輯部(譯)·

Jellyfin、Nextcloud、Immich 接法各有麻煩

XDA 作者喺屋企 server 跑住超過 20 個服務,每次登入 Jellyfin、Nextcloud、Immich 都要處理另一組帳戶,最後揀咗 Pocket ID 集中做 SSO。佢嘅賣點幾清楚:官方建議用一個 Docker container 部署,以 OpenID Connect 做認證,登入就淨係靠 passkey。少咗 Keycloak 嗰堆 realm、流程同管理選項,細規模 homelab 會易搞好多。

不過原文標題話「ditched Keycloak」,講得有少少大。作者自己交代,佢一路嫌 Keycloak 太重,未見有完整部署再遷移帳戶;實際情況更接近揀工具時跳過 Keycloak。Pocket ID 啱一部 NAS、幾個家人帳戶同少量 OIDC client,Keycloak 就處理複雜 federation、企業目錄同細緻驗證流程。兩套工具重疊一部分,用途同管理深度始終有段距離。

一個 container 只係容易起步

Pocket ID 官方文件要求公開網址行 HTTPS,因為 passkey 用到 WebAuthn secure context。前面通常仲有 Nginx、Caddy、Traefik、Cloudflare Tunnel 或 Pangolin;想幫本身冇 OIDC 嘅服務加登入閘口,亦要另配 OAuth2 Proxy、Tinyauth 或其他中介。換句話講,Pocket ID 本體可以得一個 container,成套安全登入鏈就未必得一個。

反向代理係第一個常見伏位。XDA 作者外面用 HTTPS,proxy 轉入 Jellyfin 時就行 HTTP,結果 Jellyfin 生成咗 http:// redirect URI,Pocket ID 因網址對唔上而拒絕登入。修正方向係畀 app 正確認到外層 protocol,同埋逐個核對 callback URL;Pocket ID 自身嘅 TRUST_PROXY 亦應只信直接連入嚟嘅 proxy IP 或網段,唔好為求方便信晒所有來源。

Pocket ID 官方頁面展示用 passkey 批准 OIDC 登入嘅畫面

圖片:Pocket ID

Jellyfin 最能睇出「支援 SSO」有幾鬆

Jellyfin 本身冇原生 OIDC,今次靠第三方 SSO 外掛接 Pocket ID。作者先撞到 Pushed Authorization Requests 錯誤,再處理 HTTPS scheme,搞掂網頁版後先發現手機同電視 app 唔識直接行呢套登入。Pocket ID 現時嘅 Jellyfin 指南同樣警告,SSO 只適用於瀏覽器,其他 app 要用 Quick Connect,再開瀏覽器以 Pocket ID 批准。

仲要留意,呢個 Jellyfin SSO 外掛嘅 GitHub repository 已喺 2026 年 5 月封存。官方 Pocket ID 指南記低嘅設定只對指定 Jellyfin 同外掛版本,PAR 選項亦可能跟版本改變,所以 XDA 作者撳過邊個 checkbox,唔代表而家照做都啱。對主要用電視 app 睇片嘅人,呢種登入流程未算真正統一,之後更新相容性亦有風險。

Pocket ID 登入頁提示用戶用 passkey 驗證身份

圖片:Pocket ID

身份 claim 對錯,可以靜靜地開多個帳戶

Nextcloud 要先裝由 Nextcloud 維護嘅 user_oidc app,唔係裝好 server 就有 SSO。現有帳戶點配對,要揀穩定嘅 claim;官方整合指南提醒,如果用戶可以自行改 username,再用 preferred_username 配對,可能連錯帳戶。較穩陣做法係用專用而且不可任意修改嘅識別值,正式轉登入方法前亦要留返管理員後備入口。

Immich 自己有 OIDC,網頁同手機 redirect 都有正式文件,不過首次登入時會先用 OIDC sub 尋找連結,未連過就按 email 對應現有帳戶。email 對唔上而 Auto Register 又開住,系統可以建立另一個空帳戶;XDA 作者見到重新 onboarding,就係呢類情況。相片冇消失,但管理員應先核對 email claim、關閉不必要嘅自動註冊,再用測試帳戶確認配對結果。

Passkey 亦要預先諗失手點算

Pocket ID 只接受 passkey,所以身份 provider 一停,接咗佢嘅服務都可能一齊入唔到。管理員至少要保留多於一個 passkey、妥善備份持久化資料同 encryption key,亦要試一次復原流程。官方容許管理員經介面或 container 指令產生短效 login code,協助用戶重新設定 passkey;呢條救生繩要喺出事前識用,亦唔應長期當普通密碼咁派。

如果你自架嘅服務本身有成熟 OIDC,Pocket ID 的確可以用幾少資源換到舒服嘅 passkey SSO。Jellyfin 呢類靠外掛、手機登入又斷開一截嘅服務,就要先接受流程未完全統一。部署前逐個列清 callback URL、帳戶配對 claim、app 支援同復原入口,實際過淨係數有幾多個 container。


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook