前言

這篇文章主要是紀錄在使用 jellyfin-plugin-sso 時踩到的小雷,不是完整的教學文章

環境

  • Keycloak
  • Jellyfin

使用的是 OIDC 方式。

Role Claims

由於在文件中有提到:

roles: array of strings. This validates the SAML response against the Role attribute. If a user has any of these roles, then the user is authenticated. Leave blank to disable role checking.

所以我有設定 Roles 限制。

使用的是 KeyCloak 的 Client Role (Clients->[YOUR_OID]->Roles)

不過插件卻怎樣都抓不到這個 Token 裡面應該有提供的 Roles 列表(在 roleClaim 設定 Path)。

看了半小時才發現,他檢查的是 ID Token 而不是 Access Token。

因此需要在 KeyCloak 中加一個 Mapper (Clients->[YOUR_OID]->Mappers)

  • Client ID: 選好
  • Multivalued: ON
  • Token Claim Name: 跟 roleClaim 一樣就可以了,我用的是 jellyfin_roles
  • Claim JSON Type: String
  • Add to ID token: ON
  • Add to access token: OFF
  • Add to userinfo: OFF

這樣 Jellyfin 應該就抓得到 Roles 了。