From 790762af504355f7f629c7a87fad4058ef1a5450 Mon Sep 17 00:00:00 2001
From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com>
Date: Tue, 10 Mar 2026 16:43:03 +0000
Subject: [PATCH] Translate JWT host field requirement to es, fr, zh
Generated-By: mintlify-agent
---
es/deploy/authentication-setup.mdx | 14 ++++++++++++--
fr/deploy/authentication-setup.mdx | 18 ++++++++++++++----
zh/deploy/authentication-setup.mdx | 14 ++++++++++++--
3 files changed, 38 insertions(+), 8 deletions(-)
diff --git a/es/deploy/authentication-setup.mdx b/es/deploy/authentication-setup.mdx
index 6b917f285..d3e88ff82 100644
--- a/es/deploy/authentication-setup.mdx
+++ b/es/deploy/authentication-setup.mdx
@@ -215,11 +215,13 @@ Selecciona el método de handshake que quieres configurar.
import { Request, Response } from 'express';
const TWO_WEEKS_IN_MS = 1000 * 60 * 60 * 24 * 7 * 2;
+ const DOCS_HOST = 'docs.example.com';
const signingKey = await jose.importPKCS8(process.env.MINTLIFY_PRIVATE_KEY, 'EdDSA');
export async function handleRequest(req: Request, res: Response) {
const user = {
+ host: DOCS_HOST, // Debe coincidir con la URL de tu documentación
expiresAt: Math.floor((Date.now() + TWO_WEEKS_IN_MS) / 1000), // vencimiento de la sesión de 2 semanas
groups: res.locals.user.groups,
apiPlaygroundInputs: {
@@ -234,7 +236,7 @@ Selecciona el método de handshake que quieres configurar.
.setExpirationTime('10 s') // vencimiento del JWT de 10 segundos
.sign(signingKey);
- return res.redirect(`https://docs.foo.com/login/jwt-callback#${jwt}`);
+ return res.redirect(`https://${DOCS_HOST}/login/jwt-callback#${jwt}`);
}
```
@@ -246,11 +248,13 @@ Selecciona el método de handshake que quieres configurar.
from fastapi.responses import RedirectResponse
private_key = os.getenv(MINTLIFY_JWT_PEM_SECRET_NAME, '')
+ DOCS_HOST = 'docs.example.com'
@router.get('/auth')
async def return_mintlify_auth_status(current_user):
jwt_token = jwt.encode(
payload={
+ 'host': DOCS_HOST, # Debe coincidir con la URL de tu documentación
'exp': int((datetime.now() + timedelta(seconds=10)).timestamp()), # vencimiento del JWT de 10 segundos
'expiresAt': int((datetime.now() + timedelta(weeks=2)).timestamp()), # vencimiento de la sesión de 2 semanas
'groups': ['admin'] if current_user.is_admin else [],
@@ -264,7 +268,7 @@ Selecciona el método de handshake que quieres configurar.
algorithm='EdDSA'
)
- return RedirectResponse(url=f'https://docs.foo.com/login/jwt-callback#{jwt_token}', status_code=302)
+ return RedirectResponse(url=f'https://{DOCS_HOST}/login/jwt-callback#{jwt_token}', status_code=302)
```
@@ -397,6 +401,7 @@ Cuando utilices autenticación OAuth o JWT, tu sistema devolverá datos de usuar
```tsx Format
type User = {
+ host?: string;
expiresAt?: number;
groups?: string[];
content?: Record;
@@ -412,6 +417,7 @@ Cuando utilices autenticación OAuth o JWT, tu sistema devolverá datos de usuar
```json Ejemplo
{
+ "host": "docs.example.com",
"expiresAt": 1735689600,
"groups": ["admin", "beta-users"],
"content": {
@@ -430,6 +436,10 @@ Cuando utilices autenticación OAuth o JWT, tu sistema devolverá datos de usuar
```
+
+ **Requerido para la autenticación JWT.** El nombre de host del sitio de tu documentación. La cadena debe coincidir exactamente con el dominio donde despliegas tu documentación. Mintlify valida que el host del JWT coincida con el host que realiza la solicitud para evitar la reutilización de tokens en diferentes sitios.
+
+
Momento de expiración de la sesión en segundos desde el epoch. Cuando la hora actual supera este valor, el usuario debe volver a autenticarse.
diff --git a/fr/deploy/authentication-setup.mdx b/fr/deploy/authentication-setup.mdx
index da7c5fc8b..7b2d19396 100644
--- a/fr/deploy/authentication-setup.mdx
+++ b/fr/deploy/authentication-setup.mdx
@@ -215,11 +215,13 @@ Sélectionnez la méthode de poignée de main que vous souhaitez configurer.
import { Request, Response } from 'express';
const TWO_WEEKS_IN_MS = 1000 * 60 * 60 * 24 * 7 * 2;
+ const DOCS_HOST = 'docs.example.com';
const signingKey = await jose.importPKCS8(process.env.MINTLIFY_PRIVATE_KEY, 'EdDSA');
export async function handleRequest(req: Request, res: Response) {
const user = {
+ host: DOCS_HOST, // Doit correspondre à l'URL de votre documentation
expiresAt: Math.floor((Date.now() + TWO_WEEKS_IN_MS) / 1000), // expiration de session de 2 semaines
groups: res.locals.user.groups,
apiPlaygroundInputs: {
@@ -234,7 +236,7 @@ Sélectionnez la méthode de poignée de main que vous souhaitez configurer.
.setExpirationTime('10 s') // expiration du JWT de 10 secondes
.sign(signingKey);
- return res.redirect(`https://docs.foo.com/login/jwt-callback#${jwt}`);
+ return res.redirect(`https://${DOCS_HOST}/login/jwt-callback#${jwt}`);
}
```
@@ -246,11 +248,13 @@ Sélectionnez la méthode de poignée de main que vous souhaitez configurer.
from fastapi.responses import RedirectResponse
private_key = os.getenv(MINTLIFY_JWT_PEM_SECRET_NAME, '')
+ DOCS_HOST = 'docs.example.com'
@router.get('/auth')
async def return_mintlify_auth_status(current_user):
jwt_token = jwt.encode(
payload={
+ 'host': DOCS_HOST, # Doit correspondre à l'URL de votre documentation
'exp': int((datetime.now() + timedelta(seconds=10)).timestamp()), # expiration du JWT de 10 secondes
'expiresAt': int((datetime.now() + timedelta(weeks=2)).timestamp()), # expiration de session de 2 semaines
'groups': ['admin'] if current_user.is_admin else [],
@@ -264,7 +268,7 @@ Sélectionnez la méthode de poignée de main que vous souhaitez configurer.
algorithm='EdDSA'
)
- return RedirectResponse(url=f'https://docs.foo.com/login/jwt-callback#{jwt_token}', status_code=302)
+ return RedirectResponse(url=f'https://{DOCS_HOST}/login/jwt-callback#{jwt_token}', status_code=302)
```
@@ -397,6 +401,7 @@ Lorsque vous utilisez l’authentification OAuth ou JWT, votre système renvoie
```tsx Format
type User = {
+ host?: string;
expiresAt?: number;
groups?: string[];
content?: Record;
@@ -412,6 +417,7 @@ Lorsque vous utilisez l’authentification OAuth ou JWT, votre système renvoie
```json Example
{
+ "host": "docs.example.com",
"expiresAt": 1735689600,
"groups": ["admin", "beta-users"],
"content": {
@@ -430,10 +436,14 @@ Lorsque vous utilisez l’authentification OAuth ou JWT, votre système renvoie
```
+
+ **Requis pour l'authentification JWT.** Le nom d'hôte de votre site de documentation. La chaîne doit correspondre exactement au domaine où vous déployez votre documentation. Mintlify vérifie que l'hôte du JWT correspond à l'hôte de la requête pour empêcher la réutilisation de jetons sur différents sites.
+
+
- Heure d’expiration de la session, en secondes depuis l’époque Unix. Lorsque l’heure actuelle dépasse cette valeur, l’utilisateur doit s’authentifier de nouveau.
+ Heure d'expiration de la session, en secondes depuis l'époque Unix. Lorsque l'heure actuelle dépasse cette valeur, l'utilisateur doit s'authentifier de nouveau.
- **Pour les JWT :** cela diffère de la revendication `exp` d’un JWT, qui détermine le moment où un JWT est considéré comme invalide. Par mesure de sécurité, définissez la revendication `exp` du JWT sur une durée courte (10 secondes ou moins). Utilisez `expiresAt` pour la durée réelle de la session (de quelques heures à plusieurs semaines).
+ **Pour les JWT :** cela diffère de la revendication `exp` d'un JWT, qui détermine le moment où un JWT est considéré comme invalide. Par mesure de sécurité, définissez la revendication `exp` du JWT sur une durée courte (10 secondes ou moins). Utilisez `expiresAt` pour la durée réelle de la session (de quelques heures à plusieurs semaines).
diff --git a/zh/deploy/authentication-setup.mdx b/zh/deploy/authentication-setup.mdx
index 7d45259ce..49658412d 100644
--- a/zh/deploy/authentication-setup.mdx
+++ b/zh/deploy/authentication-setup.mdx
@@ -215,11 +215,13 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password']
import { Request, Response } from 'express';
const TWO_WEEKS_IN_MS = 1000 * 60 * 60 * 24 * 7 * 2;
+ const DOCS_HOST = 'docs.example.com';
const signingKey = await jose.importPKCS8(process.env.MINTLIFY_PRIVATE_KEY, 'EdDSA');
export async function handleRequest(req: Request, res: Response) {
const user = {
+ host: DOCS_HOST, // 必须与你的文档 URL 匹配
expiresAt: Math.floor((Date.now() + TWO_WEEKS_IN_MS) / 1000), // 2 周会话过期时间
groups: res.locals.user.groups,
apiPlaygroundInputs: {
@@ -234,7 +236,7 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password']
.setExpirationTime('10 s') // JWT 10 秒后过期
.sign(signingKey);
- return res.redirect(`https://docs.foo.com/login/jwt-callback#${jwt}`);
+ return res.redirect(`https://${DOCS_HOST}/login/jwt-callback#${jwt}`);
}
```
@@ -246,11 +248,13 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password']
from fastapi.responses import RedirectResponse
private_key = os.getenv(MINTLIFY_JWT_PEM_SECRET_NAME, '')
+ DOCS_HOST = 'docs.example.com'
@router.get('/auth')
async def return_mintlify_auth_status(current_user):
jwt_token = jwt.encode(
payload={
+ 'host': DOCS_HOST, # 必须与你的文档 URL 匹配
'exp': int((datetime.now() + timedelta(seconds=10)).timestamp()), # JWT 10 秒后过期
'expiresAt': int((datetime.now() + timedelta(weeks=2)).timestamp()), # 2 周会话过期时间
'groups': ['admin'] if current_user.is_admin else [],
@@ -264,7 +268,7 @@ keywords: ['authentication', 'auth', 'OAuth', 'JWT', 'password']
algorithm='EdDSA'
)
- return RedirectResponse(url=f'https://docs.foo.com/login/jwt-callback#{jwt_token}', status_code=302)
+ return RedirectResponse(url=f'https://{DOCS_HOST}/login/jwt-callback#{jwt_token}', status_code=302)
```
@@ -397,6 +401,7 @@ groups: ["admin"]
```tsx Format
type User = {
+ host?: string;
expiresAt?: number;
groups?: string[];
content?: Record;
@@ -412,6 +417,7 @@ groups: ["admin"]
```json Example
{
+ "host": "docs.example.com",
"expiresAt": 1735689600,
"groups": ["admin", "beta-users"],
"content": {
@@ -430,6 +436,10 @@ groups: ["admin"]
```
+
+ **JWT 认证必填。** 文档站点的主机名。该字符串必须与你部署文档的域名完全匹配。Mintlify 会验证 JWT 中的 host 与请求的 host 是否一致,以防止 token 在不同站点间被重复使用。
+
+
会话过期时间,以自 epoch 起算的秒数表示。当当前时间超过该值时,用户必须重新完成认证。