diff --git a/de/15.8/config/sso-oidc.rst b/de/15.8/config/sso-oidc.rst
index ff81b62d..4a2e7f02 100644
--- a/de/15.8/config/sso-oidc.rst
+++ b/de/15.8/config/sso-oidc.rst
@@ -23,7 +23,7 @@ Bei der OpenID Connect Authentifizierung fungiert |Fess| als Relying Party (RP)
.. note::
|Fess| verwendet den Authorization Code Flow. Das ID-Token wird nicht über den Browser, sondern direkt vom Token-Endpunkt über einen Backkanal (Server-zu-Server-Kommunikation) zwischen |Fess| und dem OP abgerufen.
- |Fess| dekodiert das ID-Token und entnimmt daraus Claims (z. B. ``email`` und ``groups``), um die Benutzerinformationen zusammenzustellen, führt jedoch keine kryptografische Überprüfung der JWT-Signatur durch.
+ |Fess| dekodiert das ID-Token und entnimmt daraus Claims (z. B. ``email`` und ``groups``), um die Benutzerinformationen zusammenzustellen, führt jedoch keine kryptografische Überprüfung der JWT-Signatur durch. Ebenso werden die Claims ``iss`` (Aussteller), ``aud`` (Zielgruppe) und ``exp`` (Ablauf) nicht geprüft.
Daher muss die Kommunikation mit dem Token-Endpunkt zwingend über HTTPS erfolgen; stellen Sie sicher, dass der Kommunikationsweg zwischen |Fess| und dem OP vertrauenswürdig ist.
Für die Integration mit rollenbasierter Suche siehe :doc:`security-role`.
@@ -141,7 +141,7 @@ Konfigurieren Sie die Standardgruppen und -rollen, die OIDC-authentifizierten Be
Benutzer-ID, Gruppen und Rollen werden jeweils wie folgt ermittelt:
- **Benutzer-ID**: Wird aus dem ``email``-Claim des ID-Tokens (JWT) bezogen. Daher muss der Scope in der Praxis ``email`` enthalten (kann der ``email``-Claim nicht abgerufen werden, ist kein ordnungsgemäßer Login möglich).
-- **Gruppen**: Werden aus dem ``groups``-Claim des ID-Tokens bezogen. Ist kein ``groups``-Claim vorhanden, wird der Wert von ``oic.default.groups`` verwendet.
+- **Gruppen**: Werden aus dem ``groups``-Claim des ID-Tokens bezogen. Ist kein ``groups``-Claim vorhanden, wird der Wert von ``oic.default.groups`` verwendet. Ein leeres ``groups``-Array gilt als vorhanden: ``oic.default.groups`` wird dann nicht verwendet, und der Benutzer wird als Benutzer ohne Gruppen behandelt.
- **Rollen**: Es wird stets der Wert von ``oic.default.roles`` verwendet (ein Mechanismus zur Übernahme von Rollen aus ID-Token-Claims ist nicht vorhanden).
.. note::
@@ -150,6 +150,9 @@ Benutzer-ID, Gruppen und Rollen werden jeweils wie folgt ermittelt:
Ob übergeordnete Gruppen enthalten sind, hängt daher allein von der Claim-Konfiguration des OP
ab -- anders als bei :doc:`sso-entraid`, wo |Fess| übergeordnete Gruppen über die
Microsoft Graph API auflöst.
+ Der Claim-Wert wird unverändert zur Suchberechtigung. Ist der OP so konfiguriert, dass er
+ vollständige Gruppenpfade ausgibt, lauten die Werte etwa ``/uebergeordnet/untergeordnet`` und
+ passen damit nicht zu Dokumenten, die nur mit dem reinen Gruppennamen versehen sind.
.. list-table::
:header-rows: 1
@@ -291,6 +294,11 @@ In ``app/WEB-INF/classes/log4j2.xml`` können Sie den folgenden Logger hinzufüg
+.. warning::
+ Steht dieser Logger auf DEBUG, werden die Claims des ID-Tokens (z. B. ``email`` und ``groups``)
+ in die Protokolldatei geschrieben. Setzen Sie die Protokollebene nach der Untersuchung zurück
+ und behandeln Sie die erzeugten Protokolle entsprechend.
+
Referenz
========
diff --git a/en/15.8/config/sso-oidc.rst b/en/15.8/config/sso-oidc.rst
index 0c8168de..1870e7f2 100644
--- a/en/15.8/config/sso-oidc.rst
+++ b/en/15.8/config/sso-oidc.rst
@@ -23,7 +23,7 @@ In OpenID Connect authentication, |Fess| operates as a Relying Party (RP) and co
.. note::
|Fess| uses the Authorization Code Flow. The ID Token is obtained directly from the token endpoint via a back-channel (server-to-server communication) between |Fess| and the OP, without passing through the browser.
- |Fess| decodes the ID Token and extracts claims (such as ``email`` and ``groups``) to construct user information, but does NOT cryptographically verify the JWT signature.
+ |Fess| decodes the ID Token and extracts claims (such as ``email`` and ``groups``) to construct user information, but does NOT cryptographically verify the JWT signature. It also does not validate the ``iss`` (issuer), ``aud`` (audience) or ``exp`` (expiry) claims.
For this reason, ensure that all communication with the token endpoint uses HTTPS and that the communication path between |Fess| and the OP is trusted.
For integration with role-based search, see :doc:`security-role`.
@@ -141,7 +141,7 @@ Configure the default groups and roles to assign to users authenticated via OIDC
The user ID, groups, and roles are determined as follows:
- **User ID**: Obtained from the ``email`` claim of the ID Token (JWT). For this reason, the ``email`` scope is effectively required (if the ``email`` claim cannot be obtained, login will not work correctly).
-- **Groups**: Obtained from the ``groups`` claim of the ID Token. If the ``groups`` claim is not present, the value of ``oic.default.groups`` is used.
+- **Groups**: Obtained from the ``groups`` claim of the ID Token. If the ``groups`` claim is not present, the value of ``oic.default.groups`` is used. An empty ``groups`` array counts as present, so ``oic.default.groups`` is not used and the user is treated as having no groups.
- **Roles**: Always taken from the value of ``oic.default.roles`` (there is no mechanism to obtain roles from ID Token claims).
.. note::
@@ -149,6 +149,9 @@ The user ID, groups, and roles are determined as follows:
does not expand nested (transitive) groups. Whether parent groups appear is therefore decided
entirely by the OP's claim configuration -- unlike :doc:`sso-entraid`, where |Fess| resolves
parent groups through the Microsoft Graph API.
+ The claim value becomes the search permission verbatim. A provider configured to emit full group
+ paths therefore sends values such as ``/parent/child``, and those do not match documents tagged
+ with the plain group name.
.. list-table::
:header-rows: 1
@@ -289,6 +292,11 @@ In ``app/WEB-INF/classes/log4j2.xml``, add the following logger to change the lo
+.. warning::
+ With this logger at DEBUG, the claims of the ID Token (such as ``email`` and ``groups``) are
+ written to the log file. Restore the log level once the investigation is over, and handle the
+ log output accordingly.
+
Reference
=========
diff --git a/es/15.8/config/sso-oidc.rst b/es/15.8/config/sso-oidc.rst
index 42bc075c..2115c2a2 100644
--- a/es/15.8/config/sso-oidc.rst
+++ b/es/15.8/config/sso-oidc.rst
@@ -23,7 +23,7 @@ En la autenticación OpenID Connect, |Fess| opera como Relying Party (RP) y cola
.. note::
|Fess| utiliza el flujo de código de autorización (Authorization Code Flow). El ID Token se obtiene directamente desde el endpoint de token a través de un canal de retaguardia (comunicación servidor a servidor) entre |Fess| y el OP, sin pasar por el navegador.
- |Fess| decodifica el ID Token y extrae los claims (como ``email`` y ``groups``) para construir la información del usuario, pero no realiza la verificación criptográfica de la firma JWT.
+ |Fess| decodifica el ID Token y extrae los claims (como ``email`` y ``groups``) para construir la información del usuario, pero no realiza la verificación criptográfica de la firma JWT. Tampoco valida los claims ``iss`` (emisor), ``aud`` (audiencia) ni ``exp`` (expiración).
Por este motivo, la comunicación con el endpoint de token debe realizarse siempre mediante HTTPS, y asegúrese de que la ruta de comunicación entre |Fess| y el OP sea de confianza.
Para la integración con búsqueda basada en roles, consulte :doc:`security-role`.
@@ -141,7 +141,7 @@ Configure los grupos y roles por defecto que se asignarán a los usuarios autent
El ID de usuario, los grupos y los roles se determinan de la siguiente manera:
- **ID de usuario**: se obtiene del claim ``email`` del ID Token (JWT). Por este motivo, en la práctica es necesario incluir ``email`` en el scope (si no se puede obtener el claim ``email``, el inicio de sesión no funcionará correctamente).
-- **Grupos**: se obtienen del claim ``groups`` del ID Token. Si el claim ``groups`` no existe, se utiliza el valor de ``oic.default.groups``.
+- **Grupos**: se obtienen del claim ``groups`` del ID Token. Si el claim ``groups`` no existe, se utiliza el valor de ``oic.default.groups``. Un array ``groups`` vacío se considera presente, por lo que no se utiliza ``oic.default.groups`` y el usuario se trata como si no tuviera grupos.
- **Roles**: siempre se utiliza el valor de ``oic.default.roles`` (no existe mecanismo para obtener roles desde los claims del ID Token).
.. note::
@@ -149,6 +149,9 @@ El ID de usuario, los grupos y los roles se determinan de la siguiente manera:
directorio ni expande los grupos anidados (transitivos). Por lo tanto, que aparezcan los grupos
padre depende únicamente de la configuración de claims del OP, a diferencia de
:doc:`sso-entraid`, donde |Fess| resuelve los grupos padre mediante la API de Microsoft Graph.
+ El valor del claim se convierte literalmente en el permiso de búsqueda. Si el OP está configurado
+ para emitir rutas de grupo completas, envía valores como ``/padre/hijo``, que no coinciden con los
+ documentos etiquetados solo con el nombre del grupo.
.. list-table::
:header-rows: 1
@@ -290,6 +293,11 @@ En ``app/WEB-INF/classes/log4j2.xml``, puede agregar el siguiente logger para ca
+.. warning::
+ Con este logger en DEBUG, los claims del ID Token (como ``email`` y ``groups``) se escriben en el
+ archivo de log. Restaure el nivel de log cuando termine la investigación y trate la salida del log
+ en consecuencia.
+
Referencia
==========
diff --git a/fr/15.8/config/sso-oidc.rst b/fr/15.8/config/sso-oidc.rst
index b125265c..823bb961 100644
--- a/fr/15.8/config/sso-oidc.rst
+++ b/fr/15.8/config/sso-oidc.rst
@@ -23,7 +23,7 @@ Dans l'authentification OpenID Connect, |Fess| fonctionne comme une Relying Part
.. note::
|Fess| utilise le flux de code d'autorisation (Authorization Code Flow). L'ID Token est obtenu directement depuis le endpoint de token via un canal arrière (communication serveur à serveur) entre |Fess| et l'OP, sans passer par le navigateur.
- |Fess| décode l'ID Token pour extraire les claims (``email``, ``groups``, etc.) et constituer les informations utilisateur, mais ne procède pas à la vérification cryptographique de la signature JWT.
+ |Fess| décode l'ID Token pour extraire les claims (``email``, ``groups``, etc.) et constituer les informations utilisateur, mais ne procède pas à la vérification cryptographique de la signature JWT. Il ne valide pas non plus les claims ``iss`` (émetteur), ``aud`` (audience) ni ``exp`` (expiration).
Pour cette raison, la communication avec le endpoint de token doit impérativement se faire en HTTPS, et veillez à ce que le chemin de communication entre |Fess| et l'OP soit de confiance.
Pour l'intégration avec la recherche basée sur les rôles, voir :doc:`security-role`.
@@ -141,7 +141,7 @@ Configurez les groupes et rôles par défaut à attribuer aux utilisateurs authe
L'identifiant utilisateur, les groupes et les rôles sont déterminés comme suit :
- **Identifiant utilisateur** : extrait du claim ``email`` de l'ID Token (JWT). Pour cette raison, le scope doit en pratique inclure ``email`` (si le claim ``email`` ne peut pas être obtenu, la connexion ne s'effectuera pas correctement).
-- **Groupes** : extraits du claim ``groups`` de l'ID Token. Si le claim ``groups`` est absent, la valeur de ``oic.default.groups`` est utilisée.
+- **Groupes** : extraits du claim ``groups`` de l'ID Token. Si le claim ``groups`` est absent, la valeur de ``oic.default.groups`` est utilisée. Un tableau ``groups`` vide est considéré comme présent : ``oic.default.groups`` n'est alors pas utilisé et l'utilisateur est traité comme n'ayant aucun groupe.
- **Rôles** : la valeur de ``oic.default.roles`` est toujours utilisée (il n'existe pas de mécanisme permettant d'extraire les rôles depuis les claims de l'ID Token).
.. note::
@@ -150,6 +150,9 @@ L'identifiant utilisateur, les groupes et les rôles sont déterminés comme sui
La présence des groupes parents dépend donc uniquement de la configuration des claims de l'OP,
contrairement à :doc:`sso-entraid`, où |Fess| résout les groupes parents en utilisant l'API
Microsoft Graph.
+ La valeur du claim devient telle quelle la permission de recherche. Si l'OP est configuré pour
+ émettre les chemins de groupe complets, il envoie des valeurs comme ``/parent/enfant``, qui ne
+ correspondent pas aux documents étiquetés avec le seul nom du groupe.
.. list-table::
:header-rows: 1
@@ -291,6 +294,11 @@ Dans ``app/WEB-INF/classes/log4j2.xml``, vous pouvez ajouter le logger suivant p
+.. warning::
+ Avec ce logger en DEBUG, les claims de l'ID Token (``email``, ``groups``, etc.) sont écrits dans
+ le fichier de log. Rétablissez le niveau de log une fois l'investigation terminée et traitez la
+ sortie de log en conséquence.
+
Référence
=========
diff --git a/ja/15.8/config/sso-oidc.rst b/ja/15.8/config/sso-oidc.rst
index 5fd88f0f..6b55bfd1 100644
--- a/ja/15.8/config/sso-oidc.rst
+++ b/ja/15.8/config/sso-oidc.rst
@@ -23,7 +23,7 @@ OpenID Connect認証では、|Fess| がRelying Party(RP)として動作し
.. note::
|Fess| は認可コードフロー(Authorization Code Flow)を使用します。ID Tokenは、ブラウザを経由せず、|Fess| とOPの間のバックチャネル(サーバー間通信)でトークンエンドポイントから直接取得されます。
- |Fess| はID Tokenをデコードしてクレーム(``email`` や ``groups`` など)を取り出してユーザー情報を構成しますが、JWT署名の暗号的な検証は行いません。
+ |Fess| はID Tokenをデコードしてクレーム(``email`` や ``groups`` など)を取り出してユーザー情報を構成しますが、JWT署名の暗号的な検証は行いません。\ ``iss``\ (発行者)、\ ``aud``\ (対象クライアント)、\ ``exp``\ (有効期限)の各クレームも検証しません。
このため、トークンエンドポイントとの通信は必ずHTTPSで行い、|Fess| とOPの間の通信経路が信頼できることを確認してください。
ロールベース検索との連携については、:doc:`security-role` を参照してください。
@@ -141,7 +141,7 @@ OIDCで認証されたユーザーに割り当てるデフォルトのグルー
ユーザーID・グループ・ロールは、それぞれ以下のように決定されます。
- **ユーザーID**: ID Token(JWT)の ``email`` クレームから取得されます。このため、スコープには実質的に ``email`` を含める必要があります(``email`` クレームが取得できない場合、ログインは正しく行われません)。
-- **グループ**: ID Tokenの ``groups`` クレームから取得されます。\ ``groups`` クレームが存在しない場合は ``oic.default.groups`` の値が使用されます。
+- **グループ**: ID Tokenの ``groups`` クレームから取得されます。\ ``groups`` クレームが存在しない場合は ``oic.default.groups`` の値が使用されます。\ ``groups`` クレームが空の配列で送られてきた場合は「存在する」とみなされるため、\ ``oic.default.groups`` は使用されず、グループなしとして扱われます。
- **ロール**: 常に ``oic.default.roles`` の値が使用されます(ID Tokenのクレームからロールを取得する仕組みはありません)。
.. note::
@@ -149,6 +149,8 @@ OIDCで認証されたユーザーに割り当てるデフォルトのグルー
ネストされたグループ(親グループ)の展開は行いません。
親グループが含まれるかどうかは、OP側のクレーム設定だけで決まります。
Microsoft Graph APIで親グループを解決する :doc:`sso-entraid` とは動作が異なります。
+ クレームの値はそのまま検索権限になります。OP側でグループのフルパスを出力する設定にしている場合は
+ ``/親グループ/子グループ`` のような値がそのまま権限名になり、グループ名だけを付与した文書とは一致しません。
.. list-table::
:header-rows: 1
@@ -288,6 +290,10 @@ OPの設定画面またはDiscoveryエンドポイントから以下の情報を
+.. warning::
+ このロガーをDEBUGにすると、ID Tokenのクレーム(\ ``email`` や ``groups`` など)がログファイルに出力されます。
+ 調査が終わったらログレベルを元に戻し、出力されたログの取り扱いに注意してください。
+
参考情報
========
diff --git a/ko/15.8/config/sso-oidc.rst b/ko/15.8/config/sso-oidc.rst
index 7bc77702..75b470d3 100644
--- a/ko/15.8/config/sso-oidc.rst
+++ b/ko/15.8/config/sso-oidc.rst
@@ -23,7 +23,7 @@ OpenID Connect 인증에서는 |Fess| 가 Relying Party(RP)로 동작하며,
.. note::
|Fess| 는 인가 코드 플로우(Authorization Code Flow)를 사용합니다. ID Token은 브라우저를 경유하지 않고, |Fess| 와 OP 간의 백채널(서버 간 통신)을 통해 토큰 엔드포인트에서 직접 취득됩니다.
- |Fess| 는 ID Token을 디코딩하여 클레임(``email`` 이나 ``groups`` 등)을 추출하고 사용자 정보를 구성하지만, JWT 서명의 암호적 검증은 수행하지 않습니다.
+ |Fess| 는 ID Token을 디코딩하여 클레임(``email`` 이나 ``groups`` 등)을 추출하고 사용자 정보를 구성하지만, JWT 서명의 암호적 검증은 수행하지 않습니다. ``iss``\ (발행자), ``aud``\ (대상 클라이언트), ``exp``\ (만료) 클레임도 검증하지 않습니다.
이 때문에 토큰 엔드포인트와의 통신은 반드시 HTTPS로 수행하고, |Fess| 와 OP 간의 통신 경로가 신뢰할 수 있는지 확인하십시오.
역할 기반 검색과의 연동에 대해서는 :doc:`security-role` 을 참조하십시오.
@@ -141,13 +141,15 @@ OIDC로 인증된 사용자에게 할당할 기본 그룹·역할을 설정합
사용자 ID·그룹·역할은 각각 다음과 같이 결정됩니다.
- **사용자 ID**: ID Token(JWT)의 ``email`` 클레임에서 취득됩니다. 이 때문에 스코프에는 실질적으로 ``email`` 을 포함해야 합니다(``email`` 클레임을 취득할 수 없는 경우 로그인이 올바르게 이루어지지 않습니다).
-- **그룹**: ID Token의 ``groups`` 클레임에서 취득됩니다. ``groups`` 클레임이 존재하지 않는 경우 ``oic.default.groups`` 의 값이 사용됩니다.
+- **그룹**: ID Token의 ``groups`` 클레임에서 취득됩니다. ``groups`` 클레임이 존재하지 않는 경우 ``oic.default.groups`` 의 값이 사용됩니다. ``groups`` 클레임이 빈 배열로 전달된 경우에는 존재하는 것으로 간주되므로 ``oic.default.groups`` 가 사용되지 않으며, 그룹이 없는 것으로 처리됩니다.
- **역할**: 항상 ``oic.default.roles`` 의 값이 사용됩니다(ID Token의 클레임에서 역할을 취득하는 구조는 없습니다).
.. note::
|Fess| 는 ``groups`` 클레임의 값을 그대로 사용하며, 디렉토리 조회나 중첩 그룹(상위 그룹)의
확장은 수행하지 않습니다. 상위 그룹이 포함되는지 여부는 OP 측의 클레임 설정에 따라서만
결정됩니다. Microsoft Graph API로 상위 그룹을 해결하는 :doc:`sso-entraid` 의 동작과는 다릅니다.
+ 클레임의 값은 그대로 검색 권한이 됩니다. OP 측에서 그룹의 전체 경로를 출력하도록 설정한 경우
+ ``/상위그룹/하위그룹`` 과 같은 값이 그대로 권한 이름이 되며, 그룹 이름만 부여한 문서와는 일치하지 않습니다.
.. list-table::
:header-rows: 1
@@ -287,6 +289,10 @@ OP의 설정 화면 또는 Discovery 엔드포인트에서 다음 정보를 취
+.. warning::
+ 이 로거를 DEBUG로 설정하면 ID Token의 클레임(``email`` 이나 ``groups`` 등)이 로그 파일에 출력됩니다.
+ 조사가 끝나면 로그 레벨을 원래대로 되돌리고, 출력된 로그의 취급에 주의하십시오.
+
참고 정보
=========
diff --git a/zh-cn/15.8/config/sso-oidc.rst b/zh-cn/15.8/config/sso-oidc.rst
index e20fb697..6c129d04 100644
--- a/zh-cn/15.8/config/sso-oidc.rst
+++ b/zh-cn/15.8/config/sso-oidc.rst
@@ -23,7 +23,7 @@ OpenID Connect认证的工作原理
.. note::
|Fess| 使用授权码流程(Authorization Code Flow)。ID Token不经过浏览器,而是通过 |Fess| 与OP之间的后端通道(服务器间通信)直接从令牌端点获取。
- |Fess| 通过解码ID Token来提取声明(如 ``email`` 和 ``groups``)以构建用户信息,但不对JWT签名进行密码学验证。
+ |Fess| 通过解码ID Token来提取声明(如 ``email`` 和 ``groups``)以构建用户信息,但不对JWT签名进行密码学验证。也不会校验 ``iss``\ (颁发者)、\ ``aud``\ (受众)和 ``exp``\ (过期时间)声明。
因此,与令牌端点的通信必须使用HTTPS,并请确认 |Fess| 与OP之间的通信路径是可信的。
有关基于角色的搜索集成,请参阅 :doc:`security-role`。
@@ -141,13 +141,15 @@ OpenID Connect认证的工作原理
用户ID、组和角色分别按如下方式确定:
- **用户ID**:从ID Token(JWT)的 ``email`` 声明中获取。因此,范围中实际上必须包含 ``email``\ (如果无法获取 ``email`` 声明,登录将无法正常完成)。
-- **组**:从ID Token的 ``groups`` 声明中获取。如果 ``groups`` 声明不存在,则使用 ``oic.default.groups`` 的值。
+- **组**:从ID Token的 ``groups`` 声明中获取。如果 ``groups`` 声明不存在,则使用 ``oic.default.groups`` 的值。如果 ``groups`` 声明是空数组,则视为存在,因此不会使用 ``oic.default.groups``,该用户将被视为没有任何组。
- **角色**:始终使用 ``oic.default.roles`` 的值(不存在从ID Token声明中获取角色的机制)。
.. note::
|Fess| 直接使用 ``groups`` 声明中的值,不会查询目录,也不会展开嵌套组(父组)。
因此,是否包含父组完全取决于OP侧的声明配置。
这与通过Microsoft Graph API解析父组的 :doc:`sso-entraid` 不同。
+ 声明的值会原样成为检索权限。如果OP侧配置为输出组的完整路径,
+ 则会发送 ``/父组/子组`` 这样的值并原样成为权限名称,与仅标记了组名的文档不匹配。
.. list-table::
:header-rows: 1
@@ -286,6 +288,10 @@ OP侧配置
+.. warning::
+ 将该日志记录器设置为DEBUG后,ID Token的声明(如 ``email`` 和 ``groups``)会被写入日志文件。
+ 调查结束后请将日志级别恢复原状,并谨慎处理输出的日志。
+
参考信息
========