From c6f97164030eccddbaf7243ef634b4eac453a23c Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Wed, 5 Aug 2026 22:58:40 +0000 Subject: [PATCH 1/3] docs: document OAuth group claim delimiters --- deploy/authentication-setup.mdx | 28 +++++++++++++++++++++++++--- es/deploy/authentication-setup.mdx | 28 +++++++++++++++++++++++++--- fr/deploy/authentication-setup.mdx | 28 +++++++++++++++++++++++++--- zh/deploy/authentication-setup.mdx | 28 +++++++++++++++++++++++++--- 4 files changed, 100 insertions(+), 12 deletions(-) diff --git a/deploy/authentication-setup.mdx b/deploy/authentication-setup.mdx index 19ce0787ad..cc5eb321a3 100644 --- a/deploy/authentication-setup.mdx +++ b/deploy/authentication-setup.mdx @@ -116,7 +116,7 @@ You host your documentation at `docs.foo.com` and your entire team has access to * **Scopes** (optional): Permissions to request. Copy the **entire** scope string (for example, for a scope like `provider.users.docs`, copy the complete `provider.users.docs`). Use multiple scopes if you need different access levels. * **Additional authorization parameters** (optional): Additional query parameters to add to the initial authorization request. * **Token URL**: Your OAuth token exchange endpoint. - * **Info API URL** (optional): Endpoint on your server that Mintlify calls to retrieve user info. Required for group-based access control. If omitted, the OAuth flow only verifies identity. + * **Info API URL** (optional): Endpoint on your server that Mintlify calls to retrieve user info. Use this field for the Info API approach to group-based access control. You can use OAuth token claims instead. If neither is configured, the OAuth flow only verifies identity. * **Logout URL** (optional): The native logout URL for your OAuth provider. When users log out, Mintlify validates the logout redirect against this configured URL for security. The redirect only succeeds if it exactly matches the configured `logoutUrl`. If you do not configure a logout URL, users redirect to `/login`. Mintlify redirects users with a `GET` request and does not append query parameters, so include any parameters (for example, `returnTo`) directly in the URL. * **Redirect URL** (optional): The URL to redirect users to after authentication. 6. Click **Save changes**. @@ -127,8 +127,8 @@ You host your documentation at `docs.foo.com` and your entire team has access to 1. Copy the **Redirect URL** from your [authentication settings](https://app.mintlify.com/products/authentication). 2. Add the redirect URL as an authorized redirect URL for your OAuth server. - - To enable group-based access control, create an API endpoint that: + + To use the Info API approach for group-based access control, create an API endpoint that: * Responds to `GET` requests. * Accepts an `Authorization: Bearer ` header for authentication. * Returns user data in the `User` format. See [User data format](#user-data-format) for more information. @@ -139,6 +139,28 @@ You host your documentation at `docs.foo.com` and your entire team has access to +### Use groups from OAuth token claims + +If your identity provider includes group membership in the ID token or access token, you can use those claims instead of an Info API URL. This option is available for OAuth configurations that use a client secret. + +When configuring OAuth token claims for your deployment, use values like: + +```json +{ + "source": "id_token", + "groupsClaim": "groups", + "groupsDelimiter": "," +} +``` + +* `source`: Selects `id_token` or `access_token`. If you select `id_token`, include the `openid` scope in your OAuth scopes. +* `groupsClaim`: Identifies the token claim that contains groups. It defaults to `groups`. +* `groupsDelimiter`: An optional delimiter from 1 to 4 characters. Mintlify uses it only to split string claim values. + +For example, with `"groups": "general,clienta_eur"` and `groupsDelimiter` set to `","`, Mintlify uses `general` and `clienta_eur` as separate groups. Mintlify trims whitespace around each group and ignores empty segments. Without `groupsDelimiter`, the complete string is treated as one group. Array claims are always treated as one group per string item and are not split. + +Omit `groupsDelimiter` when the delimiter can be part of a group name. + ### OAuth 2.0 example You host your documentation at `docs.foo.com` and you have an existing OAuth server at `auth.foo.com` that supports the Authorization Code Flow. diff --git a/es/deploy/authentication-setup.mdx b/es/deploy/authentication-setup.mdx index 3f5030a586..5ee87a6ded 100644 --- a/es/deploy/authentication-setup.mdx +++ b/es/deploy/authentication-setup.mdx @@ -125,7 +125,7 @@ Usa esta comparación para elegir el método que se adapte a tu caso de uso. Con * **Scopes** (opcional): Permisos que se van a solicitar. Copia la cadena de scope **completa** (por ejemplo, para un scope como `provider.users.docs`, copia el `provider.users.docs` completo). Usa varios scopes si necesitas diferentes niveles de acceso. * **Additional authorization parameters** (opcional): Parámetros de consulta adicionales que se agregarán a la solicitud de autorización inicial. * **Token URL**: Tu endpoint de intercambio de tokens de OAuth. - * **Info API URL** (opcional): Endpoint en tu servidor al que Mintlify llama para obtener información del usuario. Obligatorio para el control de acceso basado en grupos. Si se omite, el flujo de OAuth solo verifica la identidad. + * **Info API URL** (opcional): Endpoint en tu servidor al que Mintlify llama para obtener información del usuario. Usa este campo para el enfoque de Info API para el control de acceso basado en grupos. También puedes usar los claims de OAuth. Si no configuras ninguno de los dos, el flujo de OAuth solo verifica la identidad. * **Logout URL** (opcional): La URL de cierre de sesión nativa de tu proveedor de OAuth. Cuando los usuarios cierran sesión, Mintlify valida la redirección de cierre de sesión frente a esta URL configurada por motivos de seguridad. La redirección solo se completa si coincide exactamente con el `logoutUrl` configurado. Si no configuras una Logout URL, los usuarios se redirigen a `/login`. Mintlify redirige a los usuarios con una solicitud `GET` y no agrega parámetros de consulta, por lo que debes incluir cualquier parámetro (por ejemplo, `returnTo`) directamente en la URL. * **Redirect URL** (opcional): La URL a la que se redirigirá a los usuarios después de la autenticación. @@ -139,8 +139,8 @@ Usa esta comparación para elegir el método que se adapte a tu caso de uso. Con 2. Agrega la Redirect URL como una URL de redirección autorizada en tu servidor OAuth. - - Para habilitar el control de acceso basado en grupos, crea un endpoint de API que: + + Para usar el enfoque de Info API para el control de acceso basado en grupos, crea un endpoint de API que: * Responda a solicitudes `GET`. * Acepte un encabezado `Authorization: Bearer ` para la autenticación. @@ -152,6 +152,28 @@ Usa esta comparación para elegir el método que se adapte a tu caso de uso. Con + ### Usa grupos de los claims del token de OAuth + + Si tu proveedor de identidad incluye la pertenencia a grupos en el token de ID o en el token de acceso, puedes usar esos claims en lugar de una URL de Info API. Esta opción está disponible para configuraciones de OAuth que usan un secreto de cliente. + + Al configurar los claims del token de OAuth para tu implementación, usa valores como estos: + + ```json + { + "source": "id_token", + "groupsClaim": "groups", + "groupsDelimiter": "," + } + ``` + + * `source`: Selecciona `id_token` o `access_token`. Si seleccionas `id_token`, incluye el scope `openid` en tus scopes de OAuth. + * `groupsClaim`: Identifica el claim del token que contiene los grupos. Su valor predeterminado es `groups`. + * `groupsDelimiter`: Delimitador opcional de 1 a 4 caracteres. Mintlify solo lo usa para dividir valores de notificación que sean cadenas. + + Por ejemplo, con `"groups": "general,clienta_eur"` y `groupsDelimiter` establecido en `","`, Mintlify usa `general` y `clienta_eur` como grupos separados. Mintlify elimina los espacios en blanco alrededor de cada grupo e ignora los segmentos vacíos. Sin `groupsDelimiter`, la cadena completa se trata como un solo grupo. Los claims que son matrices siempre se tratan como un grupo por cada elemento de cadena y no se dividen. + + Omite `groupsDelimiter` cuando el delimitador pueda formar parte del nombre de un grupo. + ### Ejemplo de OAuth 2.0 Alojas tu documentación en `docs.foo.com` y tienes un servidor OAuth existente en `auth.foo.com` que admite el flujo de código de autorización (Authorization Code Flow). diff --git a/fr/deploy/authentication-setup.mdx b/fr/deploy/authentication-setup.mdx index 9ed71495e2..61355f6e7a 100644 --- a/fr/deploy/authentication-setup.mdx +++ b/fr/deploy/authentication-setup.mdx @@ -125,7 +125,7 @@ Utilisez ce comparatif pour choisir la méthode adaptée à votre cas d'usage. C * **Scopes** (facultatif) : Autorisations à demander. Copiez la chaîne de scope **entière** (par exemple, pour un scope comme `provider.users.docs`, copiez l’intégralité de `provider.users.docs`). Utilisez plusieurs scopes si vous avez besoin de niveaux d’accès différents. * **Additional authorization parameters** (facultatif) : Paramètres de requête supplémentaires à ajouter à la requête d’autorisation initiale. * **Token URL** : Votre endpoint d’échange de jeton OAuth. - * **Info API URL** (facultatif) : Endpoint sur votre serveur que Mintlify appelle pour récupérer les informations utilisateur. Requis pour le contrôle d’accès basé sur les groupes. S’il est omis, le flux OAuth vérifie uniquement l’identité. + * **Info API URL** (facultatif) : Endpoint sur votre serveur que Mintlify appelle pour récupérer les informations utilisateur. Utilisez ce champ pour l’approche Info API du contrôle d’accès basé sur les groupes. Vous pouvez également utiliser les claims des jetons OAuth. Si aucune de ces options n’est configurée, le flux OAuth vérifie uniquement l’identité. * **Logout URL** (facultatif) : L’URL de déconnexion native de votre fournisseur OAuth. Lorsque les utilisateurs se déconnectent, Mintlify valide la redirection de déconnexion par rapport à l’URL configurée, pour des raisons de sécurité. La redirection ne réussit que si elle correspond exactement à la valeur de `logoutUrl` configurée. Si vous ne configurez pas d’URL de déconnexion, les utilisateurs sont redirigés vers `/login`. Mintlify redirige les utilisateurs avec une requête `GET` et n’ajoute aucun paramètre de requête. Incluez donc directement tous les paramètres (par exemple, `returnTo`) dans l’URL. * **Redirect URL** (facultatif) : L’URL vers laquelle rediriger les utilisateurs après l’authentification. @@ -139,8 +139,8 @@ Utilisez ce comparatif pour choisir la méthode adaptée à votre cas d'usage. C 2. Ajoutez cette URL de redirection comme URL de redirection autorisée pour votre serveur OAuth. - - Pour activer le contrôle d’accès basé sur les groupes, créez un endpoint d’API qui : + + Pour utiliser l’approche Info API du contrôle d’accès basé sur les groupes, créez un endpoint d’API qui : * Répond aux requêtes `GET`. * Accepte un en-tête `Authorization: Bearer ` pour l’authentification. @@ -152,6 +152,28 @@ Utilisez ce comparatif pour choisir la méthode adaptée à votre cas d'usage. C + ### Utiliser les groupes des claims de jeton OAuth + + Si votre fournisseur d’identité inclut l’appartenance aux groupes dans l’ID token ou l’access token, vous pouvez utiliser ces claims à la place d’une URL Info API. Cette option est disponible pour les configurations OAuth qui utilisent un secret client. + + Lors de la configuration des claims de jeton OAuth pour votre déploiement, utilisez des valeurs comme : + + ```json + { + "source": "id_token", + "groupsClaim": "groups", + "groupsDelimiter": "," + } + ``` + + * `source` : Sélectionne `id_token` ou `access_token`. Si vous sélectionnez `id_token`, incluez le scope `openid` dans vos scopes OAuth. + * `groupsClaim` : Identifie le claim du token qui contient les groupes. Sa valeur par défaut est `groups`. + * `groupsDelimiter` : Délimiteur facultatif de 1 à 4 caractères. Mintlify l’utilise uniquement pour diviser les valeurs de claim qui sont des chaînes. + + Par exemple, avec `"groups": "general,clienta_eur"` et `groupsDelimiter` défini sur `","`, Mintlify utilise `general` et `clienta_eur` comme groupes distincts. Mintlify supprime les espaces autour de chaque groupe et ignore les segments vides. Sans `groupsDelimiter`, la chaîne complète est traitée comme un seul groupe. Les claims sous forme de tableau sont toujours traités comme un groupe par élément de chaîne et ne sont pas divisés. + + Omettez `groupsDelimiter` lorsque le délimiteur peut faire partie du nom d’un groupe. + ### Exemple OAuth 2.0 Vous hébergez votre documentation sur `docs.foo.com` et vous disposez d’un serveur OAuth existant sur `auth.foo.com` qui prend en charge le flux « Authorization Code ». diff --git a/zh/deploy/authentication-setup.mdx b/zh/deploy/authentication-setup.mdx index 626bc59140..a8cc3beab2 100644 --- a/zh/deploy/authentication-setup.mdx +++ b/zh/deploy/authentication-setup.mdx @@ -125,7 +125,7 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password', 'private'] * **Scopes** (可选) :要请求的权限。复制 **完整的** scope 字符串 (例如,对于 `provider.users.docs` 这样的 scope,复制完整的 `provider.users.docs`) 。如果需要不同的访问级别,可以使用多个 scope。 * **Additional authorization parameters** (可选) :要添加到初始授权请求中的其他 query 参数。 * **Token URL**:你的 OAuth 令牌交换端点。 - * **Info API URL** (可选) :你服务器上的一个端点,Mintlify 会调用它来获取用户信息。对于基于用户组的访问控制是必填项。如果省略,OAuth 流程只会验证身份。 + * **Info API URL** (可选) :你服务器上的一个端点,Mintlify 会调用它来获取用户信息。对于基于用户组的访问控制,请使用此字段配置 Info API 方式。你也可以改用 OAuth 令牌声明。如果两者都未配置,OAuth 流程只会验证身份。 * **Logout URL** (可选) :你的 OAuth 提供方自带的登出 URL。用户登出时,Mintlify 会将登出重定向与该配置的 URL 进行校验,以确保安全性。只有当重定向地址与配置的 `logoutUrl` 完全匹配时,重定向才会成功。如果你未配置登出 URL,用户会被重定向到 `/login`。Mintlify 会使用 `GET` 请求重定向用户,并且不会追加任何 query 参数,因此请将所有参数 (例如 `returnTo`) 直接包含在 URL 中。 * **Redirect URL** (可选) :在认证完成后重定向用户的 URL。 @@ -139,8 +139,8 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password', 'private'] 2. 将该 Redirect URL 添加为 OAuth 服务器中授权的重定向 URL。 - - 为启用基于用户组的访问控制,创建一个 API 端点,该端点需满足: + + 如要使用 Info API 方式实现基于用户组的访问控制,请创建一个 API 端点,该端点需满足: * 响应 `GET` 请求。 * 接受 `Authorization: Bearer ` 头部用于认证。 @@ -152,6 +152,28 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password', 'private'] + ### 使用 OAuth 令牌声明中的用户组 + + 如果你的身份提供方在 ID 令牌或访问令牌中包含用户组信息,你可以使用这些声明来代替 Info API URL。此选项适用于使用客户端密钥的 OAuth 配置。 + + 为部署配置 OAuth 令牌声明时,可以使用以下值: + + ```json + { + "source": "id_token", + "groupsClaim": "groups", + "groupsDelimiter": "," + } + ``` + + * `source`:选择 `id_token` 或 `access_token`。如果选择 `id_token`,请在 OAuth scopes 中包含 `openid`。 + * `groupsClaim`:指定包含用户组的令牌声明。默认值为 `groups`。 + * `groupsDelimiter`:可选的分隔符,长度为 1 至 4 个字符。Mintlify 仅使用它来拆分字符串类型的声明值。 + + 例如,当 `"groups": "general,clienta_eur"` 且 `groupsDelimiter` 设置为 `","` 时,Mintlify 会将 `general` 和 `clienta_eur` 作为两个独立的用户组。Mintlify 会删除每个用户组两侧的空格,并忽略空片段。不设置 `groupsDelimiter` 时,整个字符串会被视为一个用户组。数组类型的声明始终将每个字符串元素视为一个用户组,不会进行拆分。 + + 当分隔符可能出现在用户组名称中时,请不要设置 `groupsDelimiter`。 + ### OAuth 2.0 示例 你将文档托管在 `docs.foo.com`,并且你有一个现有的 OAuth 服务器 `auth.foo.com`,它支持 Authorization Code Flow。 From d56a3991efe28f4030db82da39bec61ddee37550 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Wed, 5 Aug 2026 23:10:29 +0000 Subject: [PATCH 2/3] docs: refine localized authentication pages --- deploy/authentication-setup.mdx | 6 ++- es/deploy/authentication-setup.mdx | 64 +++++++++++++++++++++-------- fr/deploy/authentication-setup.mdx | 62 ++++++++++++++++++++-------- zh/deploy/authentication-setup.mdx | 66 ++++++++++++++++++++++-------- 4 files changed, 145 insertions(+), 53 deletions(-) diff --git a/deploy/authentication-setup.mdx b/deploy/authentication-setup.mdx index cc5eb321a3..2196e58ff0 100644 --- a/deploy/authentication-setup.mdx +++ b/deploy/authentication-setup.mdx @@ -143,7 +143,7 @@ You host your documentation at `docs.foo.com` and your entire team has access to If your identity provider includes group membership in the ID token or access token, you can use those claims instead of an Info API URL. This option is available for OAuth configurations that use a client secret. -When configuring OAuth token claims for your deployment, use values like: +When configuring OAuth token claims for your deployment, use values such as: ```json { @@ -157,7 +157,9 @@ When configuring OAuth token claims for your deployment, use values like: * `groupsClaim`: Identifies the token claim that contains groups. It defaults to `groups`. * `groupsDelimiter`: An optional delimiter from 1 to 4 characters. Mintlify uses it only to split string claim values. -For example, with `"groups": "general,clienta_eur"` and `groupsDelimiter` set to `","`, Mintlify uses `general` and `clienta_eur` as separate groups. Mintlify trims whitespace around each group and ignores empty segments. Without `groupsDelimiter`, the complete string is treated as one group. Array claims are always treated as one group per string item and are not split. +For example, with `"groups": "general,clienta_eur"` and `groupsDelimiter` set to `","`, Mintlify uses `general` and `clienta_eur` as separate groups. + +Mintlify trims whitespace around each group and ignores empty segments. Without `groupsDelimiter`, the complete string is treated as one group. Array claims are always treated as one group per string item and are not split. Omit `groupsDelimiter` when the delimiter can be part of a group name. diff --git a/es/deploy/authentication-setup.mdx b/es/deploy/authentication-setup.mdx index 5ee87a6ded..eaa7e6f123 100644 --- a/es/deploy/authentication-setup.mdx +++ b/es/deploy/authentication-setup.mdx @@ -41,11 +41,15 @@ Usa esta comparación para elegir el método que se adapte a tu caso de uso. Con La autenticación mediante contraseña proporciona únicamente control de acceso y **no** admite funciones específicas por usuario, como el control de acceso basado en grupos o el autocompletado previo del área de pruebas de la API. - ### Requisitos previos de la contraseña +
+ ### Requisitos previos de la contraseña +
* Tus requisitos de seguridad permiten compartir contraseñas entre usuarios. - ### Configuración de la contraseña +
+ ### Configuración de la contraseña +
@@ -63,7 +67,9 @@ Usa esta comparación para elegir el método que se adapte a tu caso de uso. Con - ### Ejemplo de contraseña +
+ ### Ejemplo de contraseña +
Alojas tu documentación en `docs.foo.com` y necesitas un control de acceso básico sin hacer seguimiento de usuarios individuales. Quieres evitar el acceso público sin complicar la configuración. @@ -71,11 +77,15 @@ Usa esta comparación para elegir el método que se adapte a tu caso de uso. Con - ### Requisitos previos de la autenticación privada +
+ ### Requisitos previos de la autenticación privada +
* Todas las personas que necesiten acceder a tu sitio deben ser miembros de tu organización de Mintlify. - ### Configuración de la autenticación privada +
+ ### Configuración de la autenticación privada +
@@ -94,7 +104,9 @@ Usa esta comparación para elegir el método que se adapte a tu caso de uso. Con - ### Ejemplo de autenticación privada +
+ ### Ejemplo de autenticación privada +
Alojas tu documentación en `docs.foo.com` y todo tu equipo tiene acceso a tu dashboard. Quieres restringir el acceso solo a los miembros del equipo. @@ -104,12 +116,16 @@ Usa esta comparación para elegir el método que se adapte a tu caso de uso. Con
- ### Requisitos previos de OAuth 2.0 +
+ ### Requisitos previos de OAuth 2.0 +
* Un servidor OAuth u OIDC que admita el flujo de código de autorización (Authorization Code Flow). * Capacidad para crear un endpoint de API accesible mediante tokens de acceso OAuth (opcional, para habilitar el control de acceso basado en grupos). - ### Configuración de OAuth 2.0 +
+ ### Configuración de OAuth 2.0 +
@@ -152,7 +168,9 @@ Usa esta comparación para elegir el método que se adapte a tu caso de uso. Con - ### Usa grupos de los claims del token de OAuth +
+ ### Usa los grupos incluidos en los claims del token de OAuth +
Si tu proveedor de identidad incluye la pertenencia a grupos en el token de ID o en el token de acceso, puedes usar esos claims en lugar de una URL de Info API. Esta opción está disponible para configuraciones de OAuth que usan un secreto de cliente. @@ -167,14 +185,18 @@ Usa esta comparación para elegir el método que se adapte a tu caso de uso. Con ``` * `source`: Selecciona `id_token` o `access_token`. Si seleccionas `id_token`, incluye el scope `openid` en tus scopes de OAuth. - * `groupsClaim`: Identifica el claim del token que contiene los grupos. Su valor predeterminado es `groups`. - * `groupsDelimiter`: Delimitador opcional de 1 a 4 caracteres. Mintlify solo lo usa para dividir valores de notificación que sean cadenas. + * `groupsClaim`: Identifica el claim del token que contiene los grupos. El valor predeterminado de `groupsClaim` es `groups`. + * `groupsDelimiter`: Delimitador opcional de 1 a 4 caracteres. Mintlify solo lo usa para dividir los valores de los claims que sean cadenas. - Por ejemplo, con `"groups": "general,clienta_eur"` y `groupsDelimiter` establecido en `","`, Mintlify usa `general` y `clienta_eur` como grupos separados. Mintlify elimina los espacios en blanco alrededor de cada grupo e ignora los segmentos vacíos. Sin `groupsDelimiter`, la cadena completa se trata como un solo grupo. Los claims que son matrices siempre se tratan como un grupo por cada elemento de cadena y no se dividen. + Por ejemplo, con `"groups": "general,clienta_eur"` y `groupsDelimiter` establecido en `","`, Mintlify usa `general` y `clienta_eur` como grupos separados. + + Mintlify elimina los espacios en blanco alrededor de cada grupo e ignora los segmentos vacíos. Sin `groupsDelimiter`, la cadena completa se trata como un solo grupo. Los claims que son arrays siempre se tratan como un grupo por cada elemento de cadena y no se dividen. Omite `groupsDelimiter` cuando el delimitador pueda formar parte del nombre de un grupo. - ### Ejemplo de OAuth 2.0 +
+ ### Ejemplo de OAuth 2.0 +
Alojas tu documentación en `docs.foo.com` y tienes un servidor OAuth existente en `auth.foo.com` que admite el flujo de código de autorización (Authorization Code Flow). @@ -209,12 +231,16 @@ Usa esta comparación para elegir el método que se adapte a tu caso de uso. Con
- ### Requisitos previos de JWT +
+ ### Requisitos previos de JWT +
* Un sistema de autenticación que pueda generar y firmar JWT. * Un servicio de backend que pueda crear URL de redirección. - ### Configuración de JWT +
+ ### Configuración de JWT +
@@ -239,7 +265,9 @@ Usa esta comparación para elegir el método que se adapte a tu caso de uso. Con - ### Ejemplo de JWT +
+ ### Ejemplo de JWT +
Alojas tu documentación en `docs.foo.com` con un sistema de autenticación existente en `foo.com`. Quieres ampliar tu flujo de inicio de sesión para conceder acceso a la documentación manteniéndola separada de tu dashboard (o no tienes un dashboard). @@ -313,7 +341,9 @@ Usa esta comparación para elegir el método que se adapte a tu caso de uso. Con ``` - ### Redirigir a usuarios no autenticados +
+ ### Redirigir a usuarios no autenticados +
Cuando un usuario no autenticado intenta acceder a una página protegida, la redirección a tu URL de inicio de sesión conserva el destino previsto del usuario. diff --git a/fr/deploy/authentication-setup.mdx b/fr/deploy/authentication-setup.mdx index 61355f6e7a..f88f5a1978 100644 --- a/fr/deploy/authentication-setup.mdx +++ b/fr/deploy/authentication-setup.mdx @@ -41,11 +41,15 @@ Utilisez ce comparatif pour choisir la méthode adaptée à votre cas d'usage. C L'authentification par mot de passe fournit uniquement un contrôle d'accès et ne prend **pas** en charge les fonctionnalités spécifiques aux utilisateurs comme le contrôle d'accès basé sur les groupes ou le pré-remplissage du bac à sable d’API. - ### Prérequis du mot de passe +
+ ### Prérequis du mot de passe +
* Vos exigences de sécurité autorisent le partage de mots de passe entre les utilisateurs. - ### Configuration du mot de passe +
+ ### Configuration du mot de passe +
@@ -63,7 +67,9 @@ Utilisez ce comparatif pour choisir la méthode adaptée à votre cas d'usage. C - ### Exemple de mot de passe +
+ ### Exemple de mot de passe +
Vous hébergez votre documentation sur `docs.foo.com` et vous avez besoin d'un contrôle d'accès de base sans suivi des utilisateurs individuels. Vous voulez empêcher l'accès public tout en gardant la configuration simple. @@ -71,11 +77,15 @@ Utilisez ce comparatif pour choisir la méthode adaptée à votre cas d'usage. C
- ### Prérequis de l’authentification privée +
+ ### Prérequis de l’authentification privée +
* Toutes les personnes qui doivent accéder à votre site doivent être membres de votre organisation Mintlify. - ### Configuration de l’authentification privée +
+ ### Configuration de l’authentification privée +
@@ -94,7 +104,9 @@ Utilisez ce comparatif pour choisir la méthode adaptée à votre cas d'usage. C - ### Exemple d’authentification privée +
+ ### Exemple d’authentification privée +
Vous hébergez votre documentation sur `docs.foo.com` et toute votre équipe a accès à votre Tableau de bord Mintlify. Vous souhaitez restreindre l’accès aux seuls membres de l’équipe. @@ -104,12 +116,16 @@ Utilisez ce comparatif pour choisir la méthode adaptée à votre cas d'usage. C
- ### Prérequis OAuth 2.0 +
+ ### Prérequis OAuth 2.0 +
* Un serveur OAuth ou OIDC qui prend en charge le flux Authorization Code (Authorization Code Flow). * Capacité à créer un endpoint d'API accessible via des jetons d'accès OAuth (facultatif, pour activer le contrôle d'accès basé sur les groupes). - ### Configuration OAuth 2.0 +
+ ### Configuration OAuth 2.0 +
@@ -152,11 +168,13 @@ Utilisez ce comparatif pour choisir la méthode adaptée à votre cas d'usage. C - ### Utiliser les groupes des claims de jeton OAuth +
+ ### Utiliser les groupes issus des claims des jetons OAuth +
Si votre fournisseur d’identité inclut l’appartenance aux groupes dans l’ID token ou l’access token, vous pouvez utiliser ces claims à la place d’une URL Info API. Cette option est disponible pour les configurations OAuth qui utilisent un secret client. - Lors de la configuration des claims de jeton OAuth pour votre déploiement, utilisez des valeurs comme : + Lors de la configuration des claims des jetons OAuth pour votre déploiement, utilisez des valeurs telles que : ```json { @@ -170,11 +188,15 @@ Utilisez ce comparatif pour choisir la méthode adaptée à votre cas d'usage. C * `groupsClaim` : Identifie le claim du token qui contient les groupes. Sa valeur par défaut est `groups`. * `groupsDelimiter` : Délimiteur facultatif de 1 à 4 caractères. Mintlify l’utilise uniquement pour diviser les valeurs de claim qui sont des chaînes. - Par exemple, avec `"groups": "general,clienta_eur"` et `groupsDelimiter` défini sur `","`, Mintlify utilise `general` et `clienta_eur` comme groupes distincts. Mintlify supprime les espaces autour de chaque groupe et ignore les segments vides. Sans `groupsDelimiter`, la chaîne complète est traitée comme un seul groupe. Les claims sous forme de tableau sont toujours traités comme un groupe par élément de chaîne et ne sont pas divisés. + Par exemple, avec `"groups": "general,clienta_eur"` et `groupsDelimiter` défini sur `","`, Mintlify utilise `general` et `clienta_eur` comme groupes distincts. + + Mintlify supprime les espaces autour de chaque groupe et ignore les segments vides. Sans `groupsDelimiter`, la chaîne complète est traitée comme un seul groupe. Chaque élément de type chaîne d’un claim sous forme de tableau est traité comme un groupe distinct et n’est pas divisé. Omettez `groupsDelimiter` lorsque le délimiteur peut faire partie du nom d’un groupe. - ### Exemple OAuth 2.0 +
+ ### Exemple OAuth 2.0 +
Vous hébergez votre documentation sur `docs.foo.com` et vous disposez d’un serveur OAuth existant sur `auth.foo.com` qui prend en charge le flux « Authorization Code ». @@ -209,12 +231,16 @@ Utilisez ce comparatif pour choisir la méthode adaptée à votre cas d'usage. C
- ### Prérequis JWT +
+ ### Prérequis JWT +
* Un système d'authentification capable de générer et de signer des JWT. * Un service backend capable de créer des URL de redirection. - ### Configuration JWT +
+ ### Configuration JWT +
@@ -239,7 +265,9 @@ Utilisez ce comparatif pour choisir la méthode adaptée à votre cas d'usage. C - ### Exemple JWT +
+ ### Exemple JWT +
Vous hébergez votre documentation sur `docs.foo.com` avec un système d'authentification existant sur `foo.com`. Vous voulez étendre votre flux de connexion pour accorder l'accès à la documentation tout en gardant votre documentation séparée de votre Dashboard (ou vous n'avez pas de Dashboard). @@ -313,7 +341,9 @@ Utilisez ce comparatif pour choisir la méthode adaptée à votre cas d'usage. C ``` - ### Rediriger les utilisateurs non authentifiés +
+ ### Rediriger les utilisateurs non authentifiés +
Lorsqu'un utilisateur non authentifié tente d'accéder à une page protégée, la redirection vers votre URL de connexion préserve la destination souhaitée par l'utilisateur. diff --git a/zh/deploy/authentication-setup.mdx b/zh/deploy/authentication-setup.mdx index a8cc3beab2..d79ec85404 100644 --- a/zh/deploy/authentication-setup.mdx +++ b/zh/deploy/authentication-setup.mdx @@ -1,6 +1,6 @@ --- title: "认证设置" -description: "为你的站点配置用户认证,以控制对页面和 API 参考的访问权限。将页面设为仅对你的 Mintlify 组织可见,或使用密码、OAuth 或 JWT 认证。" +description: "了解如何为 Mintlify 文档站点配置用户认证,使用密码、OAuth、JWT、Info API 或 OAuth 令牌声明控制页面和 API 参考的访问权限,并管理用户登录、公开页面、受保护页面、会话时长以及基于用户组的内容访问。查看不同认证方式的前提条件、配置步骤、用户数据格式和功能可用性。" keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password', 'private'] --- @@ -12,9 +12,9 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password', 'private'] OAuth 和 JWT 认证需要 [Enterprise 方案](https://mintlify.com/pricing?ref=authentication)。 -启用认证后,用户需先登录才能访问你的文档。 +用户必须先登录才能访问你的内容。 -启用认证后,用户必须先登录才能访问任何内容。你可以将特定页面或分组配置为公开,而将其他页面设为受保护状态。 +你可以为所有页面启用完整认证,也可以启用部分认证,将部分页面设为公开、其他页面要求认证。 认证仅适用于托管在自定义域名或 Mintlify 子域名上的站点。例如,`docs.example.com` 或 `example.mintlify.site`。使用[自定义子路径](/zh/deploy/docs-subpath)的站点**不支持**认证。例如,`example.com/docs`。 @@ -41,11 +41,15 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password', 'private'] 密码认证仅提供访问控制,**不**支持用户级功能,例如基于用户组的访问控制或 API 操作台中的预填数据。 - ### 密码前提条件 +
+ ### 密码前提条件 +
* 你的安全策略允许在多个用户之间共享密码。 - ### 密码设置 +
+ ### 密码设置 +
@@ -63,7 +67,9 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password', 'private'] - ### 密码示例 +
+ ### 密码示例 +
你将文档托管在 `docs.foo.com`,只需要基础访问控制,而不需要跟踪单个用户。你希望阻止公众访问,同时保持设置简单。 @@ -71,11 +77,15 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password', 'private']
- ### 私有认证前提条件 +
+ ### 私有认证前提条件 +
* 所有需要访问你站点的人都必须是你 Mintlify 组织的成员。 - ### 私有认证设置 +
+ ### 私有认证设置 +
@@ -94,7 +104,9 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password', 'private'] - ### 私有认证示例 +
+ ### 私有认证示例 +
你将文档托管在 `docs.foo.com`,并且整个团队都能访问你的控制台。你希望仅将访问权限限制在团队成员。 @@ -104,12 +116,16 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password', 'private']
- ### OAuth 2.0 前提条件 +
+ ### OAuth 2.0 前提条件 +
* 支持 Authorization Code Flow (授权码流程) 的 OAuth 或 OIDC 服务器。 * 能够创建可通过 OAuth 访问令牌访问的 API 端点 (可选,用于启用基于用户组的访问控制) 。 - ### OAuth 2.0 设置 +
+ ### OAuth 2.0 设置 +
@@ -152,7 +168,9 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password', 'private'] - ### 使用 OAuth 令牌声明中的用户组 +
+ ### 使用 OAuth 令牌声明中的用户组 +
如果你的身份提供方在 ID 令牌或访问令牌中包含用户组信息,你可以使用这些声明来代替 Info API URL。此选项适用于使用客户端密钥的 OAuth 配置。 @@ -170,11 +188,15 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password', 'private'] * `groupsClaim`:指定包含用户组的令牌声明。默认值为 `groups`。 * `groupsDelimiter`:可选的分隔符,长度为 1 至 4 个字符。Mintlify 仅使用它来拆分字符串类型的声明值。 - 例如,当 `"groups": "general,clienta_eur"` 且 `groupsDelimiter` 设置为 `","` 时,Mintlify 会将 `general` 和 `clienta_eur` 作为两个独立的用户组。Mintlify 会删除每个用户组两侧的空格,并忽略空片段。不设置 `groupsDelimiter` 时,整个字符串会被视为一个用户组。数组类型的声明始终将每个字符串元素视为一个用户组,不会进行拆分。 + 例如,当 `"groups": "general,clienta_eur"` 且 `groupsDelimiter` 设置为 `","` 时,Mintlify 会将 `general` 和 `clienta_eur` 作为两个独立的用户组。Mintlify 会删除每个用户组两侧的空格,并忽略空片段。 + + 不设置 `groupsDelimiter` 时,整个字符串会被视为一个用户组。数组类型的声明始终将每个字符串元素视为一个用户组,不会进行拆分。 当分隔符可能出现在用户组名称中时,请不要设置 `groupsDelimiter`。 - ### OAuth 2.0 示例 +
+ ### OAuth 2.0 示例 +
你将文档托管在 `docs.foo.com`,并且你有一个现有的 OAuth 服务器 `auth.foo.com`,它支持 Authorization Code Flow。 @@ -209,12 +231,16 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password', 'private']
- ### JWT 前提条件 +
+ ### JWT 前提条件 +
* 一个可以生成并签名 JWT 的认证系统。 * 一个可以创建重定向 URL 的后端服务。 - ### JWT 设置 +
+ ### JWT 设置 +
@@ -239,7 +265,9 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password', 'private'] - ### JWT 示例 +
+ ### JWT 示例 +
你在 `docs.foo.com` 上托管文档,并在 `foo.com` 上已有认证系统。你希望扩展登录流程,在保持文档与控制台分离的同时,为文档授予访问权限 (或者如果你没有控制台,则直接为文档授予访问权限) 。 @@ -313,7 +341,9 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password', 'private'] ``` - ### 重定向未认证用户 +
+ ### 重定向未认证用户 +
当未认证用户尝试访问受保护页面时,系统在重定向到你的登录 URL 时会保留用户的目标地址。 From 791305c35d0857109a52c5f49ebe2f555a99cba5 Mon Sep 17 00:00:00 2001 From: Ethan Palm <56270045+ethanpalm@users.noreply.github.com> Date: Thu, 6 Aug 2026 09:47:14 -0700 Subject: [PATCH 3/3] Apply suggestions from code review Co-authored-by: Ethan Palm <56270045+ethanpalm@users.noreply.github.com> --- deploy/authentication-setup.mdx | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/deploy/authentication-setup.mdx b/deploy/authentication-setup.mdx index 2196e58ff0..94f1164092 100644 --- a/deploy/authentication-setup.mdx +++ b/deploy/authentication-setup.mdx @@ -116,7 +116,7 @@ You host your documentation at `docs.foo.com` and your entire team has access to * **Scopes** (optional): Permissions to request. Copy the **entire** scope string (for example, for a scope like `provider.users.docs`, copy the complete `provider.users.docs`). Use multiple scopes if you need different access levels. * **Additional authorization parameters** (optional): Additional query parameters to add to the initial authorization request. * **Token URL**: Your OAuth token exchange endpoint. - * **Info API URL** (optional): Endpoint on your server that Mintlify calls to retrieve user info. Use this field for the Info API approach to group-based access control. You can use OAuth token claims instead. If neither is configured, the OAuth flow only verifies identity. + * **Info API URL** (optional): Endpoint on your server that Mintlify calls to retrieve user info. Use this field for group-based access control. If omitted, the OAuth flow only verifies identity. * **Logout URL** (optional): The native logout URL for your OAuth provider. When users log out, Mintlify validates the logout redirect against this configured URL for security. The redirect only succeeds if it exactly matches the configured `logoutUrl`. If you do not configure a logout URL, users redirect to `/login`. Mintlify redirects users with a `GET` request and does not append query parameters, so include any parameters (for example, `returnTo`) directly in the URL. * **Redirect URL** (optional): The URL to redirect users to after authentication. 6. Click **Save changes**. @@ -128,7 +128,7 @@ You host your documentation at `docs.foo.com` and your entire team has access to 2. Add the redirect URL as an authorized redirect URL for your OAuth server.
- To use the Info API approach for group-based access control, create an API endpoint that: + To enable group-based access control, create an API endpoint that: * Responds to `GET` requests. * Accepts an `Authorization: Bearer ` header for authentication. * Returns user data in the `User` format. See [User data format](#user-data-format) for more information. @@ -154,14 +154,13 @@ When configuring OAuth token claims for your deployment, use values such as: ``` * `source`: Selects `id_token` or `access_token`. If you select `id_token`, include the `openid` scope in your OAuth scopes. -* `groupsClaim`: Identifies the token claim that contains groups. It defaults to `groups`. -* `groupsDelimiter`: An optional delimiter from 1 to 4 characters. Mintlify uses it only to split string claim values. +* `groupsClaim`: Identifies the token claim that contains groups. Defaults to `groups`. +* `groupsDelimiter`: An optional delimiter from 1 to 4 characters. Mintlify uses it only to split string claim values. If the delimiter can be part of a group name, omit `groupsDelimiter`. -For example, with `"groups": "general,clienta_eur"` and `groupsDelimiter` set to `","`, Mintlify uses `general` and `clienta_eur` as separate groups. +For example, with `"groups": "general,client"` and `groupsDelimiter` set to `","`, Mintlify uses `general` and `client` as separate groups. -Mintlify trims whitespace around each group and ignores empty segments. Without `groupsDelimiter`, the complete string is treated as one group. Array claims are always treated as one group per string item and are not split. +Mintlify trims whitespace around each group and ignores empty segments. Without `groupsDelimiter`, the complete string is a single group. Array claims are always one group per string item and are not split. -Omit `groupsDelimiter` when the delimiter can be part of a group name. ### OAuth 2.0 example