概要
メディアサーバーのJellyfinでEntraID(AzureAD)を使ったSSOを設定するメモ
JellyfinはEmbyの派生でWebやDLNAからサーバー上のメディアファイルを閲覧できる。
jellyfin-plugin-sso
jellyfinでSSO(SAML/OIDC)できるプラグイン
- Jellyfinを設定する
- jellyfin-plugin-sso/README.md at main · 9p4/jellyfin-plugin-sso (github.com) に従ってJellyfin SSO Pluginを入れる
- PROVIDER_NAMEを決める
- 英数字のみ(例: entraid)
- Azureで認証用アプリの設定をする
- Microsoft Azureのアプリ登録を行う
- アプリケーション (クライアント) ID、ディレクトリ (テナント) IDを控える
- 認証->プラットフォームを追加でWebを追加し、リダイレクト先として`https://<your domain>/sso/OID/redirect/PROVIDER_NAME`を追加する
- 証明書とシークレット->クライアントシークレットからシークレットを作成し、値を控える
- ※有効期限は最大24ヶ月なので切れる前に交換する
- ※別のページに行くと値はマスクされるので控え忘れた場合は作り直す
- ダッシュボード->プラグイン->SSO-AuthからEntraIDの設定を追加する。
- 4で控えた値を埋める
- Name of OID Provider: PROVIDER_NAME
- OID Endpoint: https://login.microsoftonline.com/<ディレクトリ (テナント) ID>/v2.0
- 例: https://login.microsoftonline.com/01234567-89ab-cdef-0123-456789abcdef/v2.0
- ※Azure上のアプリケーションのエンドポイントリストでOpenID Endpointはテナント共通のhttps://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configurationと記載されているが、今回の場合依存ライブラリの都合でorganizationsをテナントIDに置き換える必要がある
- OpenID Client ID: アプリケーション (クライアント) ID
- OID Secret: クライアントシークレットの値
- 必要な設定をする
- Enabled チェックを入れる
- Enable Authorization by Plugin SSOでのアカウント登録を有効にするときチェックを入れる
- (任意) Enable All Folders/Enabled Folders/その他Enable ~ アクセスを与えたい範囲にチェックを入れる
- (重要) Do Not Validate OpenID Endpoints (Insecure) チェックを入れる
- ※ チェックを入れないと認証系(login.microsoftonline.com)とユーザー情報エンドポイントのMicrosoft Graph API(graph.microsoft.com)のドメインが違うことでInvalid扱いになり進まない
- 入力イメージ
- jellyfin-plugin-sso/README.md at main · 9p4/jellyfin-plugin-sso (github.com) に従ってログイン免責事項とカスタムCSSにSSOログインボタンを入力する
- action=”/sso/OID/start/PROVIDER_NAME” のように相対パスに書き換えると勝手が良いかもしれない
- (オプション) アカウントを紐付ける
- 紐付けるアカウントでログインする
- https://<your domain>/SSOViews/linking を開く
- +ボタンからSSOアカウントと紐付ける
余談
特にはまったのは5.aのOID Endpointと5.bのDo Not Validate OpenID Endpoints (Insecure)
当初うまく動かずauthentik経由で認証するように構成していたがエラーログを眺めていたらひらめいたのでチャレンジしたところうまくいった
This post was last modified on 2024年4月6日 12:29 PM
This website uses cookies.