From f06ee57e6b52e4d1ee26f099e0f1abc495557414 Mon Sep 17 00:00:00 2001
From: wangsijie <5717882+wangsijie@users.noreply.github.com>
Date: Sat, 14 Feb 2026 02:32:52 +0000
Subject: [PATCH] chore: update translations and generated content
---
.../fragments/_scope-claim-list.md | 4 +-
.../current/developers/README.mdx | 21 ++-
.../current/developers/audit-logs/README.mdx | 14 +-
.../developers/custom-id-token/README.mdx | 81 +++++++++
.../developers/custom-token-claims/README.mdx | 26 +--
.../custom-token-claims/common-use-cases.mdx | 20 +--
.../custom-token-claims/create-script.mdx | 42 ++---
.../developers/sdk-conventions/README.mdx | 26 +--
.../current/developers/signing-keys.mdx | 24 +--
.../current/developers/user-impersonation.mdx | 55 +++---
.../current/developers/webhooks/README.mdx | 38 ++---
.../account-settings/README.mdx | 69 +++++---
.../account-settings/by-account-center-ui.mdx | 152 +++++++++++++++++
.../current/introduction/README.mdx | 16 +-
.../fragments/_scope-claim-list.md | 96 ++++++-----
.../fragments/_scopes-and-claims.mdx | 12 +-
.../current/developers/README.mdx | 25 ++-
.../current/developers/audit-logs/README.mdx | 12 +-
.../developers/custom-id-token/README.mdx | 81 +++++++++
.../developers/custom-token-claims/README.mdx | 10 +-
.../custom-token-claims/common-use-cases.mdx | 16 +-
.../custom-token-claims/create-script.mdx | 44 ++---
.../developers/sdk-conventions/README.mdx | 24 +--
.../current/developers/signing-keys.mdx | 20 +--
.../current/developers/user-impersonation.mdx | 26 +--
.../current/developers/webhooks/README.mdx | 28 ++--
.../account-settings/README.mdx | 69 +++++---
.../account-settings/by-account-center-ui.mdx | 154 +++++++++++++++++
.../current/introduction/README.mdx | 10 +-
.../fragments/_scope-claim-list.md | 96 ++++++-----
.../fragments/_scopes-and-claims.mdx | 10 +-
.../current/developers/README.mdx | 19 ++-
.../current/developers/audit-logs/README.mdx | 14 +-
.../developers/custom-id-token/README.mdx | 81 +++++++++
.../developers/custom-token-claims/README.mdx | 12 +-
.../custom-token-claims/common-use-cases.mdx | 18 +-
.../custom-token-claims/create-script.mdx | 50 +++---
.../developers/sdk-conventions/README.mdx | 12 +-
.../current/developers/signing-keys.mdx | 26 +--
.../current/developers/user-impersonation.mdx | 22 +--
.../current/developers/webhooks/README.mdx | 34 ++--
.../account-settings/README.mdx | 67 +++++---
.../account-settings/by-account-center-ui.mdx | 156 ++++++++++++++++++
.../current/introduction/README.mdx | 10 +-
.../fragments/_scope-claim-list.md | 90 +++++-----
.../fragments/_scopes-and-claims.mdx | 12 +-
.../current/developers/README.mdx | 29 ++--
.../current/developers/audit-logs/README.mdx | 25 +--
.../developers/custom-id-token/README.mdx | 81 +++++++++
.../developers/custom-token-claims/README.mdx | 20 +--
.../custom-token-claims/common-use-cases.mdx | 28 ++--
.../custom-token-claims/create-script.mdx | 78 ++++-----
.../developers/sdk-conventions/README.mdx | 14 +-
.../current/developers/signing-keys.mdx | 28 ++--
.../current/developers/user-impersonation.mdx | 66 ++++----
.../current/developers/webhooks/README.mdx | 34 ++--
.../account-settings/README.mdx | 75 ++++++---
.../account-settings/by-account-center-ui.mdx | 149 +++++++++++++++++
.../current/introduction/README.mdx | 20 ++-
.../fragments/_scope-claim-list.md | 95 ++++++-----
.../fragments/_scopes-and-claims.mdx | 12 +-
.../current/developers/README.mdx | 21 ++-
.../current/developers/audit-logs/README.mdx | 14 +-
.../developers/custom-id-token/README.mdx | 81 +++++++++
.../developers/custom-token-claims/README.mdx | 31 ++--
.../custom-token-claims/common-use-cases.mdx | 22 +--
.../custom-token-claims/create-script.mdx | 102 ++++++------
.../developers/sdk-conventions/README.mdx | 30 ++--
.../current/developers/signing-keys.mdx | 30 ++--
.../current/developers/user-impersonation.mdx | 72 ++++----
.../current/developers/webhooks/README.mdx | 32 ++--
.../account-settings/README.mdx | 67 +++++---
.../account-settings/by-account-center-ui.mdx | 148 +++++++++++++++++
.../current/introduction/README.mdx | 20 ++-
.../fragments/_scope-claim-list.md | 98 +++++------
.../fragments/_scopes-and-claims.mdx | 14 +-
.../current/developers/README.mdx | 21 ++-
.../current/developers/audit-logs/README.mdx | 8 +-
.../developers/custom-id-token/README.mdx | 81 +++++++++
.../developers/custom-token-claims/README.mdx | 20 +--
.../custom-token-claims/common-use-cases.mdx | 18 +-
.../custom-token-claims/create-script.mdx | 40 ++---
.../developers/sdk-conventions/README.mdx | 20 +--
.../current/developers/signing-keys.mdx | 12 +-
.../current/developers/user-impersonation.mdx | 52 +++---
.../current/developers/webhooks/README.mdx | 24 +--
.../account-settings/README.mdx | 65 +++++---
.../account-settings/by-account-center-ui.mdx | 152 +++++++++++++++++
.../current/introduction/README.mdx | 12 +-
.../fragments/_scope-claim-list.md | 92 ++++++-----
.../fragments/_scopes-and-claims.mdx | 12 +-
.../current/developers/README.mdx | 31 ++--
.../current/developers/audit-logs/README.mdx | 22 +--
.../developers/custom-id-token/README.mdx | 81 +++++++++
.../developers/custom-token-claims/README.mdx | 29 ++--
.../custom-token-claims/common-use-cases.mdx | 20 +--
.../custom-token-claims/create-script.mdx | 76 ++++-----
.../developers/sdk-conventions/README.mdx | 8 +-
.../current/developers/signing-keys.mdx | 38 ++---
.../current/developers/user-impersonation.mdx | 74 ++++-----
.../current/developers/webhooks/README.mdx | 44 ++---
.../account-settings/README.mdx | 67 +++++---
.../account-settings/by-account-center-ui.mdx | 152 +++++++++++++++++
.../current/introduction/README.mdx | 24 +--
.../fragments/_scope-claim-list.md | 98 +++++------
.../fragments/_scopes-and-claims.mdx | 10 +-
.../current/developers/README.mdx | 25 ++-
.../current/developers/audit-logs/README.mdx | 12 +-
.../developers/custom-id-token/README.mdx | 81 +++++++++
.../developers/custom-token-claims/README.mdx | 30 ++--
.../custom-token-claims/common-use-cases.mdx | 32 ++--
.../custom-token-claims/create-script.mdx | 64 +++----
.../developers/sdk-conventions/README.mdx | 16 +-
.../current/developers/signing-keys.mdx | 30 ++--
.../current/developers/user-impersonation.mdx | 70 ++++----
.../current/developers/webhooks/README.mdx | 26 +--
.../account-settings/README.mdx | 62 +++++--
.../account-settings/by-account-center-ui.mdx | 152 +++++++++++++++++
.../current/introduction/README.mdx | 20 ++-
.../fragments/_scope-claim-list.md | 92 ++++++-----
.../fragments/_scopes-and-claims.mdx | 10 +-
.../current/developers/README.mdx | 23 ++-
.../current/developers/audit-logs/README.mdx | 14 +-
.../developers/custom-id-token/README.mdx | 81 +++++++++
.../developers/custom-token-claims/README.mdx | 34 ++--
.../custom-token-claims/common-use-cases.mdx | 30 ++--
.../custom-token-claims/create-script.mdx | 80 ++++-----
.../developers/sdk-conventions/README.mdx | 37 +++--
.../current/developers/signing-keys.mdx | 28 ++--
.../current/developers/user-impersonation.mdx | 62 +++----
.../current/developers/webhooks/README.mdx | 40 ++---
.../account-settings/README.mdx | 72 +++++---
.../account-settings/by-account-center-ui.mdx | 152 +++++++++++++++++
.../current/introduction/README.mdx | 14 +-
.../fragments/_scope-claim-list.md | 94 ++++++-----
.../fragments/_scopes-and-claims.mdx | 10 +-
136 files changed, 4452 insertions(+), 1924 deletions(-)
create mode 100644 i18n/de/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
create mode 100644 i18n/de/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
create mode 100644 i18n/es/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
create mode 100644 i18n/es/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
create mode 100644 i18n/fr/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
create mode 100644 i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
create mode 100644 i18n/ko/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
create mode 100644 i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
create mode 100644 i18n/pt-BR/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
create mode 100644 i18n/th/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
create mode 100644 i18n/th/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
create mode 100644 i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
create mode 100644 i18n/zh-CN/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
create mode 100644 i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
create mode 100644 i18n/zh-TW/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
diff --git a/docs/quick-starts/fragments/_scope-claim-list.md b/docs/quick-starts/fragments/_scope-claim-list.md
index e329a54b7fd..7e17f98c8fb 100644
--- a/docs/quick-starts/fragments/_scope-claim-list.md
+++ b/docs/quick-starts/fragments/_scope-claim-list.md
@@ -1,6 +1,6 @@
Here's the list of supported scopes and the corresponding claims:
-### Standard OIDC scopes
+### Standard OIDC scopes {#standard-oidc-scopes}
**`openid`** (default)
@@ -46,7 +46,7 @@ Please refer to the [OpenID Connect Core 1.0](https://openid.net/specs/openid-co
Scopes marked with **(default)** are always requested by the Logto SDK. Claims under standard OIDC scopes are always included in the ID token when the corresponding scope is requested — they cannot be turned off.
:::
-### Extended scopes
+### Extended scopes {#extended-scopes}
The following scopes are extended by Logto and will return claims through the [userinfo endpoint](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo). These claims can also be configured to be included directly in the ID token through Console > Custom JWT. See [Custom ID token](/developers/custom-id-token) for more details.
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/developers/README.mdx b/i18n/de/docusaurus-plugin-content-docs/current/developers/README.mdx
index 5e7c90c031b..ebbf1b92d28 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/developers/README.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/developers/README.mdx
@@ -1,6 +1,6 @@
# Entwickler
-Logto ist ein [Identity and Access Management (IAM)](https://auth.wiki/iam) Dienst, der auf den [OAuth 2](https://auth.wiki/oauth-2.0) und [OIDC](https://auth.wiki/openid-connect) Protokollen basiert. IAM-Dienste wie Logto dienen häufig als Grundlage für andere Webdienste; verschiedene Autorisierungszustände innerhalb dieser Webdienste werden direkt von Logto beeinflusst.
+Logto ist ein [Identity and Access Management (IAM)](https://auth.wiki/iam)-Dienst, der auf den Protokollen [OAuth 2](https://auth.wiki/oauth-2.0) und [OIDC](https://auth.wiki/openid-connect) basiert. IAM-Dienste wie Logto dienen häufig als Grundlage für andere Webdienste; verschiedene Autorisierungszustände innerhalb dieser Webdienste werden direkt von Logto beeinflusst.
Um unseren Nutzern Komfort zu bieten, stellt Logto eine Reihe häufig genutzter Entwicklerfunktionen bereit.
@@ -19,9 +19,18 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
items={[
{
type: 'link',
- label: 'Benutzerdefinierte Token-Ansprüche (Custom token claims)',
+ label: 'Benutzerdefiniertes Zugangstoken (Custom access token)',
href: '/developers/custom-token-claims',
- description: 'Erweitere die Möglichkeiten der Zugangskontrolle, indem zusätzliche Ansprüche angehängt werden, was dabei helfen kann, ABAC zu erreichen oder die Token-Ausgabe abzulehnen.',
+ description: 'Verwende benutzerdefinierte Skripte, um zusätzliche Ansprüche (claims) an Zugangstokens anzuhängen, ABAC zu ermöglichen oder die Token-Ausstellung abzulehnen.',
+ customProps: {
+ icon: ,
+ }
+ },
+ {
+ type: 'link',
+ label: 'Benutzerdefiniertes ID-Token (Custom ID token)',
+ href: '/developers/custom-id-token',
+ description: 'Steuere, welche erweiterten Ansprüche (claims) in ID-Tokens enthalten sind, gemäß der OIDC-Spezifikation.',
customProps: {
icon: ,
}
@@ -30,7 +39,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: 'Benutzermimikry (User impersonation)',
href: '/developers/user-impersonation',
- description: 'Erlaube autorisierten Benutzern, vorübergehend im Namen von Endbenutzern zu handeln – nützlich für Fehlerbehebung, Kundensupport und administrative Aufgaben.',
+ description: 'Erlaube autorisierten Benutzern, vorübergehend im Namen von Endbenutzern zu handeln – nützlich für Fehlersuche, Kundensupport und administrative Aufgaben.',
customProps: {
icon: ,
}
@@ -48,7 +57,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: 'Signaturschlüssel (Signing keys)',
href: '/developers/signing-keys',
- description: 'Stellt einen systemweiten Signaturschlüssel bereit, der über den Passwort-Tresor die Authentifizierungsdienste sicherer macht.',
+ description: 'Stellt einen systemweiten Signaturschlüssel bereit, der über den Passwort-Tresor verwaltet wird und den Authentifizierungsdienst sicherer macht.',
customProps: {
icon: ,
}
@@ -64,7 +73,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
},
{
type: 'link',
- label: 'Prüfprotokolle (Audit logs)',
+ label: 'Audit-Logs (Audit logs)',
href: '/developers/audit-logs',
description: 'Zeichnet benutzerauthentifizierungsbezogene Aktivitäten auf, um das Debugging und die Analyse von Benutzeraktivitäten zu erleichtern.',
customProps: {
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx b/i18n/de/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
index 4120b765066..06bf9273cf1 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
@@ -1,5 +1,5 @@
---
-sidebar_position: 6
+sidebar_position: 7
---
# Audit-Logs
@@ -8,17 +8,17 @@ Das Audit-Log von Logto ermöglicht es dir, Benutzeraktivitäten und Ereignisse
## Alle Logs anzeigen \{#view-all-logs}
-Navigiere zu Konsole > Audit-Logs. Logto erfasst und organisiert Authentifizierungsereignisse in einer Tabelle. Es werden der Ereignisname, Benutzer, Anwendung und Zeitstempel protokolliert. Du kannst die Ergebnisse eingrenzen, indem du nach Ereignisname und Anwendungsname filterst. Durch Klicken auf ein bestimmtes Ereignis erhältst du weitere Details.
+Navigiere zu Konsole > Audit-Logs. Logto erfasst und organisiert Authentifizierungsereignisse in einer Tabelle. Es werden der Ereignisname, der Benutzer, die Anwendung und der Zeitstempel protokolliert. Du kannst die Ergebnisse eingrenzen, indem du nach Ereignisname und Anwendungsname filterst. Durch Klicken auf ein bestimmtes Ereignis erhältst du weitere Details.
:::warning
-Audit-Logs enthalten nur Protokolle, die während des Authentifizierungsprozesses des Benutzers auftreten. Protokolle von Management API-Operationen werden nicht aufgezeichnet.
+Audit-Logs enthalten nur Protokolle, die während des Authentifizierungsprozesses des Benutzers auftreten; Protokolle von Management API-Operationen werden nicht aufgezeichnet.
:::
## Benutzeraktivität auf Mandantenebene erfassen \{#capture-user-activity-at-the-tenant-level}
Die Logs von Logto bieten umfassende Details und gewährleisten so eine einfache Nachverfolgung und Kundensicherheit. Sie erfassen und protokollieren folgende Informationen:
-- Ereignistyp (eine vollständige Liste der Audit-Log-Ereignisse findest du [hier](/developers/audit-logs/event-types))
+- Art des Ereignisses (eine vollständige Liste der Audit-Log-Ereignisse findest du [hier](/developers/audit-logs/event-types))
- Beteiligte Anwendung
- IP-Adresse
- Beteiligter Benutzer
@@ -26,19 +26,19 @@ Die Logs von Logto bieten umfassende Details und gewährleisten so eine einfache
- Zeitstempel
- User-Agent
-Durch die Aufbewahrung dieser Ereignisprotokolle können Organisationen potenzielle Sicherheitsrisiken effektiv erkennen und umgehend Maßnahmen ergreifen, um unbefugten Systemzugriff zu verhindern.
+Durch die Aufzeichnung dieser Ereignisse können Organisationen potenzielle Sicherheitsrisiken effektiv erkennen und umgehend Maßnahmen ergreifen, um unbefugten Systemzugriff zu verhindern.
## Detaillierte Analyse auf Benutzerebene durchführen \{#perform-a-detailed-analysis-at-the-user-level}
-Administratoren können eine detaillierte Analyse der Logs durchführen, die mit bestimmten Benutzern verknüpft sind, und so umfassende Untersuchungen zu bestimmten Ereignissen ermöglichen. Die Navigation ist einfach und benutzerfreundlich.
+Administratoren können eine detaillierte Analyse der Logs durchführen, die mit bestimmten Benutzern verknüpft sind, und so umfassende Untersuchungen zu bestimmten Ereignissen ermöglichen. Die Navigation ist dabei einfach und benutzerfreundlich.
Um benutzerspezifische Logs einzusehen, folge diesen Schritten:
1. Navigiere zu Konsole > Benutzerverwaltung.
2. Wähle den gewünschten Benutzer aus und gehe zur Detailseite.
-3. Klicke auf „Benutzer-Logs“. Die angezeigte Tabelle zeigt ausschließlich Log-Ereignisse, die von diesem bestimmten Benutzer durchgeführt und ausgelöst wurden.
+3. Klicke auf „Benutzer-Logs“. Die angezeigte Tabelle zeigt ausschließlich Log-Ereignisse an, die von diesem bestimmten Benutzer durchgeführt und ausgelöst wurden.
B{Angeforderte Berechtigungen}
+ B --> C[Standard-OIDC-Berechtigungen]
+ B --> D[Erweiterte Berechtigungen]
+ C --> E[Standardansprüche im ID-Token enthalten]
+ D --> F{Umschalter in der Konsole aktiviert?}
+ F -->|Ja| G[Erweiterte Ansprüche im ID-Token enthalten]
+ F -->|Nein| H[Ansprüche nicht enthalten]
+```
+
+## Standard-OIDC-Ansprüche \{#standard-oidc-claims}
+
+Standardansprüche werden vollständig durch die OIDC-Spezifikation geregelt. Ihre Aufnahme in den ID-Token hängt ausschließlich von den Berechtigungen ab, die deine Anwendung während der Authentifizierung anfordert. Logto bietet keine Möglichkeit, einzelne Standardansprüche zu deaktivieren oder selektiv auszuschließen.
+
+Die folgende Tabelle zeigt die Zuordnung zwischen Standardberechtigungen und den entsprechenden Ansprüchen:
+
+| Scope | Claims |
+| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `openid` | `sub` |
+| `profile` | `name`, `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `picture`, `website`, `gender`, `birthdate`, `zoneinfo`, `locale`, `updated_at` |
+| `email` | `email`, `email_verified` |
+| `phone` | `phone_number`, `phone_number_verified` |
+| `address` | `address` |
+
+Beispiel: Wenn deine Anwendung die Berechtigungen `openid profile email` anfordert, enthält der ID-Token alle Ansprüche aus den Scopes `openid`, `profile` und `email`.
+
+## Erweiterte Ansprüche \{#extended-claims}
+
+Über die Standard-OIDC-Ansprüche hinaus erweitert Logto zusätzliche Ansprüche, die identitätsspezifische Informationen für das Logto-Ökosystem enthalten. Diese erweiterten Ansprüche folgen einem **Dual-Bedingungsmodell**, um im ID-Token enthalten zu sein:
+
+1. **Bedingung Berechtigung**: Die Anwendung muss während der Authentifizierung die entsprechende Berechtigung anfordern.
+2. **Umschalter in der Konsole**: Der Administrator muss die Aufnahme des Anspruchs in den ID-Token über die Logto-Konsole aktivieren.
+
+Beide Bedingungen müssen gleichzeitig erfüllt sein. Die Berechtigung dient als Zugriffsdeklaration auf Protokollebene, während der Umschalter die Sichtbarkeitskontrolle auf Produktebene übernimmt — ihre Verantwortlichkeiten sind klar und nicht austauschbar.
+
+### Verfügbare erweiterte Berechtigungen und Ansprüche \{#available-extended-scopes-and-claims}
+
+| Scope | Claims | Beschreibung | Standardmäßig enthalten |
+| ------------------------------------ | ------------------------------ | ---------------------------------------------------- | ----------------------- |
+| `custom_data` | `custom_data` | Benutzerdefinierte Daten auf dem Benutzerobjekt | |
+| `identities` | `identities`, `sso_identities` | Verknüpfte soziale und SSO-Identitäten des Benutzers | |
+| `roles` | `roles` | Zugewiesene Rollen des Benutzers | ✅ |
+| `urn:logto:scope:organizations` | `organizations` | Organisations-IDs des Benutzers | ✅ |
+| `urn:logto:scope:organizations` | `organization_data` | Organisationsdaten des Benutzers | |
+| `urn:logto:scope:organization_roles` | `organization_roles` | Organisationsrollen-Zuweisungen des Benutzers | ✅ |
+
+### Konfiguration in der Logto-Konsole \{#configure-in-logto-console}
+
+So aktivierst du erweiterte Ansprüche im ID-Token:
+
+1. Navigiere zu Konsole > Benutzerdefiniertes JWT.
+2. Aktiviere die Umschalter für die Ansprüche, die du im ID-Token aufnehmen möchtest.
+3. Stelle sicher, dass deine Anwendung während der Authentifizierung die entsprechenden Berechtigungen anfordert.
+
+## Verwandte Ressourcen \{#related-resources}
+
+Benutzerdefiniertes Zugangstoken
+
+
+ OpenID Connect Core – ID-Token
+
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx b/i18n/de/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
index e9db204580e..9e3a1171673 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
@@ -2,26 +2,26 @@
sidebar_position: 2
---
-# Benutzerdefinierte Token-Ansprüche
+# Benutzerdefiniertes Zugangstoken
-Logto bietet die Flexibilität, benutzerdefinierte Ansprüche innerhalb von Zugangstokens (JWT / Opaker Token) hinzuzufügen. Mit dieser Funktion kannst du zusätzliche Informationen für deine Geschäftslogik einfügen, die alle sicher in den Tokens übertragen und im Fall von opaken Tokens per Introspektion abgerufen werden können.
+Logto bietet die Flexibilität, benutzerdefinierte Ansprüche (Claims) innerhalb von Zugangstokens (JWT / Opaker Token) hinzuzufügen. Mit dieser Funktion kannst du zusätzliche Informationen für deine Geschäftslogik einfügen, die alle sicher in den Tokens übertragen und im Fall von opaken Tokens über die Introspektion abrufbar sind.
## Einführung \{#introduction}
-[Zugangstokens (Access tokens)](https://auth.wiki/access-token) spielen eine entscheidende Rolle im Authentifizierungs- und Autorisierungsprozess, da sie die Identitätsinformationen und Berechtigungen des Subjekts enthalten und zwischen dem [Logto-Server](/concepts/core-service) (dient als Auth-Server oder Identitätsanbieter, IdP), deinem Webdienst-Server (Ressourcenanbieter) und Client-Anwendungen (Clients) weitergegeben werden.
+[Zugangstokens (Access tokens)](https://auth.wiki/access-token) spielen eine entscheidende Rolle im Authentifizierungs- und Autorisierungsprozess, da sie die Identitätsinformationen und Berechtigungen des Subjekts enthalten und zwischen dem [Logto-Server](/concepts/core-service) (fungiert als Auth-Server oder Identitätsanbieter, IdP), deinem Webdienst-Server (Ressourcenanbieter) und den Client-Anwendungen (Clients) weitergegeben werden.
-[Token-Ansprüche (Token claims)](https://auth.wiki/claim) sind die Schlüssel-Wert-Paare, die Informationen über eine Entität oder das Token selbst bereitstellen. Die Ansprüche können Benutzerinformationen, Token-Ablaufzeit, Berechtigungen und andere Metadaten enthalten, die für den Authentifizierungs- und Autorisierungsprozess relevant sind.
+[Token-Ansprüche (Token claims)](https://auth.wiki/claim) sind die Schlüssel-Wert-Paare, die Informationen über eine Entität oder das Token selbst bereitstellen. Die Ansprüche können Benutzerinformationen, Ablaufzeit des Tokens, Berechtigungen und andere Metadaten enthalten, die für den Authentifizierungs- (link zu auth.wiki) und Autorisierungsprozess (link zu auth.wiki) relevant sind.
Es gibt zwei Arten von Zugangstokens in Logto:
-- **JSON Web Token:** [JSON Web Token (JWT)](https://auth.wiki/jwt) ist ein beliebtes Format, das Ansprüche so kodiert, dass sie sowohl sicher als auch für Clients lesbar sind. Übliche Ansprüche wie `sub`, `iss`, `aud` usw. werden gemäß dem OAuth 2.0-Protokoll verwendet (siehe [diesen Link](https://datatracker.ietf.org/doc/html/rfc7519#section-4) für weitere Details). JWTs ermöglichen es den Verbrauchern, direkt auf Ansprüche zuzugreifen, ohne zusätzliche Validierungsschritte. In Logto werden Zugangstokens standardmäßig im JWT-Format ausgegeben, wenn ein Client Autorisierungsanfragen für bestimmte Ressourcen oder Organisationen initiiert.
-- **Opaker Token (Opaque token):** Ein [opaker Token](http://localhost:3000/concepts/opaque-token) ist nicht eigenständig und erfordert immer einen zusätzlichen Validierungsschritt über den [Token-Introspektions-Endpoint](https://auth.wiki/token-introspection). Trotz ihres nicht transparenten Formats können opake Tokens helfen, Ansprüche zu erhalten und sicher zwischen Parteien übertragen zu werden. Token-Ansprüche werden sicher im Logto-Server gespeichert und von den Client-Anwendungen über den Token-Introspektions-Endpoint abgerufen. Zugangstokens werden im opaken Format ausgegeben, wenn keine spezifische Ressource oder Organisation in der Autorisierungsanfrage enthalten ist. Diese Tokens werden hauptsächlich für den Zugriff auf den OIDC-`userinfo`-Endpoint und andere allgemeine Zwecke verwendet.
+- **JSON Web Token:** [JSON Web Token (JWT)](https://auth.wiki/jwt) ist ein beliebtes Format, das Ansprüche auf eine Weise kodiert, die sowohl sicher als auch für Clients lesbar ist. Übliche Ansprüche wie `sub`, `iss`, `aud` usw. werden gemäß dem OAuth 2.0-Protokoll verwendet (siehe [diesen Link](https://datatracker.ietf.org/doc/html/rfc7519#section-4) für weitere Details). JWTs ermöglichen es den Verbrauchern, direkt auf Ansprüche zuzugreifen, ohne zusätzliche Validierungsschritte. In Logto werden Zugangstokens standardmäßig im JWT-Format ausgegeben, wenn ein Client Autorisierungsanfragen für bestimmte Ressourcen oder Organisationen initiiert.
+- **Opaker Token (Opaque token):** Ein [opaker Token](http://localhost:3000/concepts/opaque-token) ist nicht eigenständig und erfordert immer einen zusätzlichen Validierungsschritt über den [Token-Introspektions-Endpoint](https://auth.wiki/token-introspection). Trotz ihres undurchsichtigen Formats können opake Tokens helfen, Ansprüche zu erhalten und sicher zwischen Parteien übertragen zu werden. Token-Ansprüche werden sicher im Logto-Server gespeichert und von den Client-Anwendungen über den Token-Introspektions-Endpoint abgerufen. Zugangstokens werden im opaken Format ausgegeben, wenn in der Autorisierungsanfrage keine spezifische Ressource oder Organisation enthalten ist. Diese Tokens werden hauptsächlich für den Zugriff auf den OIDC-`userinfo`-Endpoint und andere allgemeine Zwecke verwendet.
-In vielen Fällen reichen Standardansprüche nicht aus, um die spezifischen Anforderungen deiner Anwendungen zu erfüllen, egal ob du JWT oder opake Tokens verwendest. Um dem zu begegnen, bietet Logto die Flexibilität, benutzerdefinierte Ansprüche innerhalb von Zugangstokens hinzuzufügen. Mit dieser Funktion kannst du zusätzliche Informationen für deine Geschäftslogik einfügen, die alle sicher in den Tokens übertragen und im Fall von opaken Tokens per Introspektion abgerufen werden können.
+In vielen Fällen reichen Standardansprüche nicht aus, um die spezifischen Anforderungen deiner Anwendungen zu erfüllen, egal ob du JWT oder opake Tokens verwendest. Um dem zu begegnen, bietet Logto die Flexibilität, benutzerdefinierte Ansprüche innerhalb von Zugangstokens hinzuzufügen. Mit dieser Funktion kannst du zusätzliche Informationen für deine Geschäftslogik einfügen, die alle sicher in den Tokens übertragen und im Fall von opaken Tokens über die Introspektion abrufbar sind.
## Wie funktionieren benutzerdefinierte Token-Ansprüche? \{#how-do-custom-token-claims-work}
-Logto ermöglicht es dir, benutzerdefinierte Ansprüche in das `access token` über eine Callback-Funktion `getCustomJwtClaims` einzufügen. Du kannst deine eigene Implementierung der Funktion `getCustomJwtClaims` bereitstellen, um ein Objekt mit benutzerdefinierten Ansprüchen zurückzugeben. Der Rückgabewert wird mit der ursprünglichen Token-Nutzlast zusammengeführt und signiert, um das endgültige Zugangstoken zu generieren.
+Logto ermöglicht es dir, benutzerdefinierte Ansprüche in das `Zugangstoken` über eine Callback-Funktion `getCustomJwtClaims` einzufügen. Du kannst deine eigene Implementierung der Funktion `getCustomJwtClaims` bereitstellen, um ein Objekt mit benutzerdefinierten Ansprüchen zurückzugeben. Der Rückgabewert wird mit der ursprünglichen Token-Payload zusammengeführt und signiert, um das endgültige Zugangstoken zu generieren.
```mermaid
sequenceDiagram
@@ -32,15 +32,15 @@ sequenceDiagram
autonumber
U ->> IdP: Authentifizierungsanfrage (mit Zugangsdaten)
activate IdP
- IdP-->>IdP: Zugangsdaten validieren &
rohe Zugangstoken-Nutzlast generieren
+ IdP-->>IdP: Zugangsdaten validieren &
rohe Zugangstoken-Payload generieren
rect var(--mermaid-rect-fill)
note over IdP: Benutzerdefinierte Token-Ansprüche
IdP->>IdP: Benutzerdefiniertes Token-Ansprüche-Skript ausführen (`getCustomJwtClaims`) &
zusätzliche Token-Ansprüche erhalten
end
- IdP-->>IdP: Rohe Zugangstoken-Nutzlast und zusätzliche Token-Ansprüche zusammenführen
- IdP-->>IdP: Nutzlast signieren & verschlüsseln, um Zugangstoken zu erhalten
+ IdP-->>IdP: Rohe Zugangstoken-Payload und zusätzliche Token-Ansprüche zusammenführen
+ IdP-->>IdP: Payload signieren & verschlüsseln, um Zugangstoken zu erhalten
deactivate IdP
- IdP-->>U: JWT-Format Zugangstoken ausstellen
+ IdP-->>U: JWT-Format Zugangstoken ausgeben
par Dienst über API abrufen
U->>SP: Dienstanfrage (mit JWT-Zugangstoken)
SP-->>U: Dienstantwort
@@ -48,7 +48,7 @@ sequenceDiagram
```
:::warning
-Logto-eigene Token-Ansprüche können NICHT überschrieben oder verändert werden. Benutzerdefinierte Ansprüche werden dem Token als zusätzliche Ansprüche hinzugefügt. Falls benutzerdefinierte Ansprüche mit den eingebauten Ansprüchen kollidieren, werden diese benutzerdefinierten Ansprüche ignoriert.
+Logto-eigene Token-Ansprüche können NICHT überschrieben oder verändert werden. Benutzerdefinierte Ansprüche werden dem Token als zusätzliche Ansprüche hinzugefügt. Falls benutzerdefinierte Ansprüche mit den eingebauten Ansprüchen in Konflikt stehen, werden diese benutzerdefinierten Ansprüche ignoriert.
:::
## Verwandte Ressourcen \{#related-resources}
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx b/i18n/de/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
index b1c22592a0e..47e11d09743 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
@@ -1,36 +1,36 @@
---
id: common-use-cases
-title: Häufige Anwendungsfälle (Common use cases)
-sidebar_label: Häufige Anwendungsfälle (Common use cases)
+title: Häufige Anwendungsfälle
+sidebar_label: Häufige Anwendungsfälle
sidebar_position: 2
---
-# Häufige Anwendungsfälle (Common use cases)
+# Häufige Anwendungsfälle
-In diesem Abschnitt geben wir einige Beispiele, um dir Szenarien zu zeigen, in denen [benutzerdefinierte Token-Ansprüche](/developers/custom-token-claims) nützlich sein können, und bieten dir einige Referenzen. So kannst du, wenn du auf Schwierigkeiten im Zugriffsmanagement stößt, prüfen, ob benutzerdefinierte Token-Ansprüche dir Vorteile bringen können.
+In diesem Abschnitt geben wir einige Beispiele, um dir zu zeigen, in welchen Szenarien [benutzerdefinierte Zugangstoken-Ansprüche](/developers/custom-token-claims) nützlich sein können, und bieten dir einige Referenzen. So kannst du, wenn du auf Schwierigkeiten im Zugriffsmanagement stößt, beurteilen, ob benutzerdefinierte Zugangstoken-Ansprüche dir Vorteile bringen können.
## Attributbasierte Zugangskontrolle (ABAC) ermöglichen \{#make-attribute-based-access-control-abac-possible}
-[Attributbasierte Zugangskontrolle (ABAC)](https://auth.wiki/abac) ist ein Zugriffssteuerungsmodell, das Attribute (wie Benutzerrollen, Ressourceneigenschaften und Umweltbedingungen) verwendet, um Zugriffsentscheidungen zu treffen. Es ist eine flexible und dynamische Methode, um den Zugriff auf geschützte Ressourcen zu verwalten.
+[Attributbasierte Zugangskontrolle (ABAC)](https://auth.wiki/abac) ist ein Zugriffsmodell, das Attribute (wie Benutzerrollen, Ressourceneigenschaften und Umweltbedingungen) verwendet, um Zugriffsentscheidungen zu treffen. Es ist eine flexible und dynamische Methode, um den Zugriff auf geschützte Ressourcen zu verwalten.
Angenommen, du entwickelst eine App, und die Veröffentlichung der App ist in zwei Phasen unterteilt: öffentliche Beta und offizieller Start. Auch nach dem offiziellen Start der App möchtest du, dass alte Benutzer, die an der öffentlichen Beta teilgenommen haben, weiterhin die kostenpflichtigen Funktionen nutzen können.
-Nach dem offiziellen Start der App verwendest du die [rollenbasierte Zugangskontrolle (RBAC)](/authorization/role-based-access-control) von Logto, um die Nutzung der kostenpflichtigen Funktionen zu steuern. Um einfach zu prüfen, ob ein Benutzer die App bereits während der öffentlichen Beta-Phase genutzt hat, kannst du die Methode `getCustomJwtClaims()` verwenden, um einen Anspruch `createdAt` im Token-Payload hinzuzufügen.
+Nach dem offiziellen Start der App verwendest du die [rollenbasierte Zugangskontrolle (RBAC)](/authorization/role-based-access-control) von Logto, um den Zugriff auf kostenpflichtige Funktionen zu steuern. Um einfach zu überprüfen, ob ein Benutzer die App bereits während der öffentlichen Beta genutzt hat, kannst du die Methode `getCustomJwtClaims()` verwenden, um einen Anspruch `createdAt` im Token-Payload hinzuzufügen.
Wenn du dann die Zugangskontrolle in deinen geschützten APIs durchführst, musst du Zugangstokens zulassen, die eine der folgenden Bedingungen erfüllen:
-1. Im RBAC-Kontext die Berechtigung für den Zugriff auf kostenpflichtige Ressourcen besitzen.
-2. Das Feld `createdAt` ist früher als das Ende der öffentlichen Beta-Phase.
+1. Im RBAC-Kontext die Berechtigung zum Zugriff auf kostenpflichtige Ressourcen besitzen.
+2. Das Feld `createdAt` ist früher als das Enddatum der öffentlichen Beta-Phase.
Ohne die Funktion für benutzerdefinierte Token-Ansprüche müsste beim Überprüfen der Berechtigungen für die [Autorisierung (Authorization)](/authorization) die Logto Management API aufgerufen werden, um zu prüfen, ob der Benutzer mit dem aktuellen Zugangstoken die Berechtigungen für die von einer bestimmten API-Ressource geforderte Rolle besitzt.
-In einem ähnlichen Szenario, angenommen, deine App zeigt Geburtstagswünsche auf der Anmeldeseite an, wenn der Geburtstag des Benutzers bevorsteht. Du kannst benutzerdefinierte Token-Ansprüche verwenden, um ein Geburtstagsfeld zum [Token-Payload](/user-management/personal-access-token#example-token-exchange) hinzuzufügen, das verwendet werden kann, um zu bestimmen, ob eine bestimmte Nachricht angezeigt werden soll.
+In einem ähnlichen Szenario, angenommen, deine App zeigt Geburtstagsgrüße auf der Anmeldeseite an, wenn der Geburtstag des Benutzers bevorsteht. Du kannst benutzerdefinierte Token-Ansprüche verwenden, um ein Geburtstagsfeld zum [Token-Payload](/user-management/personal-access-token#example-token-exchange) hinzuzufügen, das verwendet werden kann, um zu bestimmen, ob eine bestimmte Nachricht angezeigt werden soll.
## Token-Ausstellung manuell blockieren \{#manually-block-token-issuance}
Angenommen, Joe betreibt ein Online-Spiel und verwendet Logto als [Identity and Access Management (IAM)](https://auth.wiki/iam)-System.
-Nehmen wir an, dieses Spiel erfordert Aufladungen, um Spielzeit zu kaufen. Joe speichert das Guthaben jedes Benutzers in seinem Spielservice und zieht kontinuierlich vom Guthaben ab, während die Spielzeit abläuft. Joe möchte die Spieler zum Ausloggen zwingen, wenn ihr Kontostand aufgebraucht ist, um sie zum Aufladen zu motivieren.
+Nehmen wir an, dieses Spiel erfordert Aufladungen, um Spielzeit zu kaufen. Joe speichert das Guthaben jedes Benutzers in seinem Spielservice und zieht kontinuierlich vom Guthaben ab, während Spielzeit verbraucht wird. Joe möchte die Spieler zum Ausloggen zwingen, wenn ihr Kontostand aufgebraucht ist, um sie zum Aufladen zu motivieren.
An dieser Stelle kann Joe ebenfalls die Funktion für benutzerdefinierte Token-Ansprüche von Logto nutzen, um dies zu erreichen:
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx b/i18n/de/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
index aea86c688d7..c1a5c8c9f89 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
@@ -1,11 +1,11 @@
---
id: create-script
-title: Erstelle ein benutzerdefiniertes Token-Claims-Skript
-sidebar_label: Erstelle ein benutzerdefiniertes Token-Claims-Skript
+title: Erstelle ein benutzerdefiniertes Zugangstoken-Skript
+sidebar_label: Erstelle ein benutzerdefiniertes Zugangstoken-Skript
sidebar_position: 3
---
-# Erstelle ein benutzerdefiniertes Token-Claims-Skript
+# Erstelle ein benutzerdefiniertes Zugangstoken-Skript
Um [benutzerdefinierte Ansprüche](/developers/custom-token-claims) zum [Zugangstoken (Access token)](https://auth.wiki/access-token) hinzuzufügen, musst du ein Skript bereitstellen, das ein Objekt mit diesen Ansprüchen zurückgibt. Das Skript sollte als `JavaScript`-Funktion geschrieben werden, die ein Objekt mit den benutzerdefinierten Ansprüchen zurückgibt.
@@ -17,7 +17,7 @@ Um [benutzerdefinierte Ansprüche](/developers/custom-token-claims) zum [Zugangs
Verschiedene Typen von Zugangstokens können unterschiedliche Token-Payload-Kontexte haben. Du kannst die Token-Ansprüche für jeden Typ von Zugangstoken separat anpassen.
- Wähle den Typ des Zugangstokens aus, für den du die Token-Ansprüche anpassen möchtest, und klicke auf die Schaltfläche **Benutzerdefinierte Ansprüche hinzufügen**, um ein neues Skript zu erstellen.
+ Wähle einen beliebigen Typ von Zugangstoken aus, für den du die Token-Ansprüche anpassen möchtest, und klicke auf die Schaltfläche **Benutzerdefinierte Ansprüche hinzufügen**, um ein neues Skript zu erstellen.
:::note
Die Funktion für benutzerdefinierte Token-Ansprüche ist nur verfügbar für:
@@ -29,16 +29,16 @@ Die Funktion für benutzerdefinierte Token-Ansprüche ist nur verfügbar für:
## Implementiere die Funktion `getCustomJwtClaims()` \{#implement-getcustomjwtclaims-function}
-Auf der **Benutzerdefiniertes JWT**-Detailseite findest du den Skripteditor, um dein benutzerdefiniertes Token-Claims-Skript zu schreiben. Das Skript sollte eine `JavaScript`-Funktion sein, die ein Objekt mit benutzerdefinierten Ansprüchen zurückgibt.
+Auf der **Benutzerdefiniertes JWT**-Detailseite findest du den Skript-Editor, um dein benutzerdefiniertes Token-Ansprüche-Skript zu schreiben. Das Skript sollte eine `JavaScript`-Funktion sein, die ein Objekt mit benutzerdefinierten Ansprüchen zurückgibt.
-## Schritt 1: Skript bearbeiten \{#step-1-edit-the-script}
+## Schritt 1: Bearbeite das Skript \{#step-1-edit-the-script}
-Nutze den Code-Editor auf der linken Seite, um das Skript zu bearbeiten. Eine Standardfunktion `getCustomJwtClaims` mit einem leeren Objekt als Rückgabewert ist bereits vorgegeben. Du kannst die Funktion anpassen, um ein Objekt mit deinen eigenen benutzerdefinierten Ansprüchen zurückzugeben.
+Nutze den Code-Editor auf der linken Seite, um das Skript zu bearbeiten. Eine Standardfunktion `getCustomJwtClaims` mit einer leeren Objekt-Rückgabe ist bereits für dich vorbereitet. Du kannst die Funktion anpassen, um ein Objekt mit deinen eigenen benutzerdefinierten Ansprüchen zurückzugeben.
```jsx
const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
@@ -46,7 +46,7 @@ const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
};
```
-Dieser Editor verwendet den JavaScript Language Server, um grundlegendes Syntax-Highlighting, Code-Vervollständigung und Fehlerüberprüfung bereitzustellen. Die Eingabeparameter sind gut typisiert und im jsDoc-Stil dokumentiert. Du kannst die IntelliSense-Funktion des Editors nutzen, um korrekt auf die Eigenschaften des Eingabeobjekts zuzugreifen. Die detaillierten Parameterdefinitionen findest du auf der rechten Seite der Seite.
+Dieser Editor verwendet den JavaScript Language Server, um grundlegende Syntaxhervorhebung, Codevervollständigung und Fehlerüberprüfung bereitzustellen. Die Eingabeparameter sind gut typisiert und im jsDoc-Stil dokumentiert. Du kannst die IntelliSense-Funktion des Editors nutzen, um korrekt auf die Eigenschaften des Eingabeobjekts zuzugreifen. Detaillierte Parameterdefinitionen findest du auf der rechten Seite der Seite.
:::note
Diese Funktion wird als Modul exportiert. Stelle sicher, dass der Funktionsname `getCustomJwtClaims` bleibt, damit das Modul die Funktion korrekt exportieren kann.
@@ -60,7 +60,7 @@ Die Funktion `getCustomJwtClaims` nimmt ein Objekt als Eingabeparameter entgegen
Das Token-Payload-Objekt. Dieses Objekt enthält die ursprünglichen Token-Ansprüche und Metadaten, auf die du im Skript zugreifen kannst.
-Die detaillierte Typdefinition des Token-Payload-Objekts und des Benutzerdaten-Objekts findest du auf der rechten Seite der Seite. Die IntelliSense-Funktion des Editors hilft dir ebenfalls, auf diese Eigenschaften des Eingabeobjekts korrekt zuzugreifen.
+Die detaillierte Typdefinition des Token-Payload-Objekts und des Benutzerdaten-Objekts findest du auf der rechten Seite der Seite. Die IntelliSense-Funktion des Editors hilft dir ebenfalls, korrekt auf diese Eigenschaften des Eingabeobjekts zuzugreifen.
- Benutzer-Zugangstoken-Datenobjekt
| Eigenschaft | Beschreibung | Typ |
@@ -88,11 +88,11 @@ Die detaillierte Typdefinition des Token-Payload-Objekts und des Benutzerdaten-O
Das Kontextobjekt enthält die Benutzerdaten und Grant-Daten, die für den aktuellen Autorisierungsprozess relevant sind.
- **Benutzerdaten-Objekt**
- Für Benutzer-Zugangstoken stellt Logto zusätzlichen Benutzerdaten-Kontext zur Verfügung. Das Benutzerdaten-Objekt enthält alle Benutzerdaten und Organisationsmitgliedschaften, die du benötigst, um die benutzerdefinierten Ansprüche zu setzen. Siehe [Benutzer](/user-management/user-data) und [Organisationen](/organizations/organization-management#organization-data-structure) für weitere Details.
+ Für Benutzer-Zugangstoken stellt Logto zusätzlichen Benutzerdaten-Kontext zur Verfügung. Das Benutzerdaten-Objekt enthält alle Benutzerdaten des Profils und Organisationsmitgliedschaften, die du benötigst, um die benutzerdefinierten Ansprüche zu setzen. Siehe [Benutzer](/user-management/user-data) und [Organisationen](/organizations/organization-management#organization-data-structure) für weitere Details.
- **Grant-Daten-Objekt**
- Für Benutzer-Zugangstoken, die durch Benutzermimikry (User impersonation) Token-Austausch gewährt wurden, stellt Logto zusätzlichen Grant-Daten-Kontext zur Verfügung. Das Grant-Daten-Objekt enthält den benutzerdefinierten Kontext aus dem Subjekt-Token. Siehe [Benutzermimikry](/developers/user-impersonation) für weitere Details.
+ Für Benutzer-Zugangstoken, die durch Benutzermimikry (User impersonation) ausgestellt wurden, stellt Logto zusätzlichen Grant-Daten-Kontext zur Verfügung. Das Grant-Daten-Objekt enthält den benutzerdefinierten Kontext aus dem Subjekt-Token. Siehe [Benutzermimikry](/developers/user-impersonation) für weitere Details.
- **Benutzerinteraktionsdaten-Objekt**
- Für ein gegebenes Benutzer-Zugangstoken kann es Fälle geben, in denen du auf die Interaktionsdetails des Benutzers für die aktuelle Autorisierungssitzung zugreifen musst. Zum Beispiel könntest du die Enterprise SSO-Identität des Benutzers abrufen, die für die Anmeldung verwendet wurde. Dieses Benutzerinteraktionsdaten-Objekt enthält die zuletzt vom Benutzer übermittelten Interaktionsdaten, einschließlich:
+ Für ein gegebenes Benutzer-Zugangstoken kann es Fälle geben, in denen du auf die Interaktionsdetails des Benutzers für die aktuelle Autorisierungssitzung zugreifen musst. Zum Beispiel musst du möglicherweise die Enterprise SSO-Identität des Benutzers abrufen, die für die Anmeldung verwendet wurde. Dieses Benutzerinteraktionsdaten-Objekt enthält die zuletzt vom Benutzer übermittelten Interaktionsdaten, einschließlich:
| Eigenschaft | Beschreibung | Typ |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
@@ -227,7 +227,7 @@ Das Kontextobjekt enthält die Benutzerdaten und Grant-Daten, die für den aktue
:::note
Es kann mehrere Verifizierungsdatensätze im Benutzerinteraktionsdaten-Objekt geben, insbesondere wenn der Benutzer mehrere Anmelde- oder Registrierungsprozesse durchlaufen hat.
- Zum Beispiel: Der Benutzer hat sich mit einem `Social`-Verifizierungsdatensatz angemeldet, dann eine neue E-Mail-Adresse über einen `EmailVerificationCode`-Verifizierungsdatensatz gebunden und anschließend den MFA-Status mit einem `Totp`-Verifizierungsdatensatz verifiziert. In diesem Fall musst du alle Verifizierungsdatensätze entsprechend in deinem Skript behandeln.
+ Z. B. hat sich der Benutzer mit einem `Social`-Verifizierungsdatensatz angemeldet, dann eine neue E-Mail-Adresse über einen `EmailVerificationCode`-Verifizierungsdatensatz gebunden und anschließend den MFA-Status mit einem `Totp`-Verifizierungsdatensatz verifiziert. In diesem Fall musst du alle Verifizierungsdatensätze entsprechend in deinem Skript behandeln.
Jeder Typ von Verifizierungsdatensatz ist nur einmal im Benutzerinteraktionsdaten-Objekt vorhanden.
:::
@@ -240,13 +240,13 @@ Alle hier festgelegten Umgebungsvariablen stehen im Skript zur Verfügung. Verwe
### api \{#api}
-Das `api`-Objekt stellt eine Reihe von Hilfsfunktionen bereit, die du in deinem Skript für zusätzliche Zugangskontrolle über den Token-Ausgabeprozess verwenden kannst. Das `api`-Objekt enthält die folgenden Funktionen:
+Das `api`-Objekt stellt eine Reihe von Hilfsfunktionen bereit, die du in deinem Skript für zusätzliche Zugangskontrolle über den Token-Ausstellungsprozess verwenden kannst. Das `api`-Objekt enthält die folgenden Funktionen:
```jsx
api.denyAccess(message?: string): void
```
-Die Funktion `api.denyAccess()` ermöglicht es dir, den Token-Ausgabeprozess mit einer benutzerdefinierten Nachricht zu verweigern. Du kannst diese Funktion verwenden, um zusätzliche Zugriffsvalidierungen über den Token-Ausgabeprozess durchzusetzen.
+Die Funktion `api.denyAccess()` ermöglicht es dir, den Token-Ausstellungsprozess mit einer benutzerdefinierten Nachricht zu verweigern. Du kannst diese Funktion verwenden, um zusätzliche Zugriffsvalidierungen über den Token-Ausstellungsprozess durchzusetzen.
## Schritt 3: Externe Daten abrufen \{#step-3-fetch-external-data}
@@ -269,24 +269,24 @@ const getCustomJwtClaims = async ({ environmentVariables }) => {
```
:::note
-Beachte, dass das Abrufen externer Daten zu einer Verzögerung beim Token-Ausgabeprozess führen kann. Stelle sicher, dass die externe API zuverlässig und schnell genug ist, um deine Anforderungen zu erfüllen.
+Beachte, dass das Abrufen externer Daten zu einer Verzögerung beim Token-Ausstellungsprozess führen kann. Stelle sicher, dass die externe API zuverlässig und schnell genug ist, um deine Anforderungen zu erfüllen.
Außerdem gilt:
-- Behandle Fehler und Timeouts in deinem Skript ordnungsgemäß, um zu vermeiden, dass der Token-Ausgabeprozess blockiert wird.
+- Behandle Fehler und Zeitüberschreitungen in deinem Skript ordnungsgemäß, um zu vermeiden, dass der Token-Ausstellungsprozess blockiert wird.
- Verwende geeignete Autorisierungs-Header, um deine externe API vor unbefugtem Zugriff zu schützen.
:::
-## Schritt 4: Skript testen \{#step-4-test-the-script}
+## Schritt 4: Teste das Skript \{#step-4-test-the-script}
-Stelle sicher, dass du dein Skript vor dem Speichern testest. Klicke auf den Tab **Testkontext** auf der rechten Seite der Seite, um das Mock-Token-Payload und den Benutzerdaten-Kontext für Tests zu bearbeiten.
+Stelle sicher, dass du dein Skript testest, bevor du es speicherst. Klicke auf den Tab **Testkontext** auf der rechten Seite der Seite, um das Mock-Token-Payload und den Benutzerdaten-Kontext zum Testen zu bearbeiten.
Klicke auf **Test ausführen** in der rechten oberen Ecke des Editors, um das Skript mit den Mock-Daten auszuführen. Die Ausgabe des Skripts wird im **Testergebnis**-Drawer angezeigt.
:::note
-Das Testergebnis ist die Ausgabe der Funktion `getCustomJwtClaims` mit den von dir festgelegten Mock-Daten („zusätzliche Token-Ansprüche“, die nach Abschluss von Schritt 3 im [Ablaufdiagramm](/developers/custom-token-claims/#how-do-custom-token-claims-work) erhalten wurden). Die tatsächliche Token-Payload und der Benutzerdaten-Kontext werden unterschiedlich sein, wenn das Skript im Token-Ausgabeprozess ausgeführt wird.
+Das Testergebnis ist die Ausgabe der Funktion `getCustomJwtClaims` mit den von dir festgelegten Mock-Daten („zusätzliche Token-Ansprüche“, die nach Abschluss von Schritt 3 im [Ablaufdiagramm](/developers/custom-token-claims/#how-do-custom-token-claims-work) erhalten wurden). Die tatsächliche Token-Payload und der Benutzerdaten-Kontext werden unterschiedlich sein, wenn das Skript im Token-Ausstellungsprozess ausgeführt wird.
:::
-Klicke auf die Schaltfläche **Erstellen**, um das Skript zu speichern. Das benutzerdefinierte Token-Claims-Skript wird gespeichert und im Zugangstoken-Ausgabeprozess angewendet.
+Klicke auf die Schaltfläche **Erstellen**, um das Skript zu speichern. Das Skript für benutzerdefinierte Token-Ansprüche wird gespeichert und im Zugangstoken-Ausstellungsprozess angewendet.
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx b/i18n/de/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
index b429f2885d7..2b038492a29 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
@@ -1,36 +1,36 @@
---
id: sdk-conventions
-title: Platform SDK-Konventionen
-sidebar_label: Platform SDK-Konventionen
-sidebar_position: 7
+title: Plattform-SDK-Konventionen
+sidebar_label: Plattform-SDK-Konventionen
+sidebar_position: 8
---
-# Platform SDK-Konventionen
+# Plattform-SDK-Konventionen
Logto bietet einen sehr leistungsstarken und flexiblen Web-Authentifizierungsdienst.
-In der praktischen Nutzung der Logto-Dienste ist es oft notwendig, dass Entwickler das Logto SDK in ihre eigenen Client-Anwendungen integrieren, um den Anmeldestatus der Benutzer, Berechtigungen und mehr zu verwalten.
+Im praktischen Einsatz der Logto-Dienste ist es für Entwickler oft aus Gründen der Bequemlichkeit notwendig, das Logto SDK in ihre eigenen Client-Anwendungen zu integrieren, um den Anmeldestatus der Benutzer, Berechtigungen und mehr zu verwalten.
-Du findest SDKs für alle von Logto unterstützten Programmiersprachen / Frameworks [hier](/quick-starts).
+SDKs für alle von Logto unterstützten Programmiersprachen / Frameworks findest du [hier](/quick-starts).
-Falls du kein passendes SDK findest, gibt es hier eine Konvention, die du befolgen kannst, um das SDK für deine gewünschte Programmiersprache zu implementieren, was die Nutzung der Logto-Dienste erleichtert.
+Falls du das gewünschte SDK nicht findest, gibt es hier eine Konvention, der du folgen kannst, um das SDK für deine gewünschte Programmiersprache zu implementieren und so die Nutzung der Logto-Dienste zu erleichtern.
-Diese Konvention enthält drei Hauptteile:
+Diese Konvention besteht aus drei Hauptteilen:
Designstrategie
-Core SDK-Konvention
-Platform SDK-Konvention
+Core-SDK-Konvention
+Plattform-SDK-Konvention
## Verwandte Ressourcen \{#related-resources}
- Implementiere ein einfaches clientseitiges OIDC SDK
+ Implementierung eines einfachen clientseitigen OIDC SDK
- Erstelle ein Node.js-basiertes Framework SDK für Logto in Minuten
+ Entwicklung eines Node.js-basierten Framework-SDKs für Logto in wenigen Minuten
- Erstelle ein Web-SDK für Logto in Minuten
+ Entwicklung eines Web-SDKs für Logto in wenigen Minuten
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx b/i18n/de/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
index d960c88031d..5ba63c39ca0 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
@@ -2,14 +2,14 @@
id: signing-keys
title: Signaturschlüssel
sidebar_label: Signaturschlüssel
-sidebar_position: 4
+sidebar_position: 5
---
# Signaturschlüssel
-Logto [OIDC-Signaturschlüssel](https://auth.wiki/signing-key), auch bekannt als "OIDC-Private Keys" und "OIDC-Cookie-Keys", sind die Signaturschlüssel, die verwendet werden, um JWTs ([Zugangstokens](https://auth.wiki/access-token) und [ID-Tokens](https://auth.wiki/id-token)) sowie Browser-Cookies in Logto [Anmeldesitzungen](/end-user-flows/sign-out#sign-in-session) zu signieren. Diese Signaturschlüssel werden beim Initialisieren der Logto-Datenbank ([Open-Source](/logto-oss)) oder beim Erstellen eines neuen Mandanten ([Cloud](/logto-cloud)) generiert und können über die [CLI](/logto-oss/using-cli) (Open-Source), Management APIs oder die Console UI verwaltet werden.
+Logto [OIDC-Signaturschlüssel](https://auth.wiki/signing-key), auch bekannt als „OIDC-Private Keys“ und „OIDC-Cookie-Keys“, sind die Signaturschlüssel, die verwendet werden, um JWTs ([Zugangstokens](https://auth.wiki/access-token) und [ID-Tokens](https://auth.wiki/id-token)) sowie Browser-Cookies in Logto [Anmeldesitzungen](/end-user-flows/sign-out#sign-in-session) zu signieren. Diese Signaturschlüssel werden beim Initialisieren der Logto-Datenbank ([Open-Source](/logto-oss)) oder beim Erstellen eines neuen Mandanten ([Cloud](/logto-cloud)) generiert und können über die [CLI](/logto-oss/using-cli) (Open-Source), Management APIs oder die Console UI verwaltet werden.
-Standardmäßig verwendet Logto den Elliptische-Kurven-Algorithmus (EC), um digitale Signaturen zu erzeugen. Da Benutzer jedoch häufig JWT-Signaturen überprüfen müssen und viele ältere Tools den EC-Algorithmus nicht unterstützen (sondern nur RSA), haben wir die Möglichkeit implementiert, private Schlüssel zu rotieren und den Signaturalgorithmus auszuwählen (einschließlich sowohl RSA als auch EC). Dies stellt die Kompatibilität mit Diensten sicher, die veraltete Signaturüberprüfungstools verwenden.
+Standardmäßig verwendet Logto den Elliptische-Kurven-Algorithmus (EC), um digitale Signaturen zu erzeugen. Da Benutzer jedoch häufig JWT-Signaturen verifizieren müssen und viele ältere Tools den EC-Algorithmus nicht unterstützen (sondern nur RSA), haben wir die Möglichkeit implementiert, private Schlüssel zu rotieren und den Signaturalgorithmus auszuwählen (einschließlich sowohl RSA als auch EC). Dies stellt die Kompatibilität mit Diensten sicher, die veraltete Signaturprüfungs-Tools verwenden.
:::note
Theoretisch sollten Signaturschlüssel nicht kompromittiert werden und haben keine Ablaufzeit, was bedeutet, dass sie nicht rotiert werden müssen. Dennoch kann das regelmäßige Rotieren des Signaturschlüssels nach einer bestimmten Zeit die Sicherheit erhöhen.
@@ -18,16 +18,16 @@ Theoretisch sollten Signaturschlüssel nicht kompromittiert werden und haben kei
## Wie funktioniert das? \{#how-it-works}
- **OIDC-Private Key**
- Beim Initialisieren einer Logto-Instanz wird automatisch ein Schlüsselpaar aus öffentlichem und privatem Schlüssel generiert und im zugrunde liegenden OIDC-Provider registriert. Wenn Logto ein neues JWT (Zugangstoken oder ID-Token) ausstellt, wird das Token mit dem privaten Schlüssel signiert. Gleichzeitig kann jede Client-Anwendung, die ein JWT erhält, den zugehörigen öffentlichen Schlüssel verwenden, um die Signatur des Tokens zu überprüfen und sicherzustellen, dass das Token nicht von Dritten manipuliert wurde. Der private Schlüssel ist auf dem Logto-Server geschützt. Der öffentliche Schlüssel hingegen ist, wie der Name schon sagt, für jeden zugänglich und kann über die `/oidc/jwks`-Schnittstelle des OIDC-Endpunkts abgerufen werden. Ein Signaturschlüssel-Algorithmus kann beim Generieren des privaten Schlüssels angegeben werden, und Logto verwendet standardmäßig den EC (Elliptische Kurve) Algorithmus. Die Administratoren können den Standardalgorithmus durch Rotieren der privaten Schlüssel auf RSA (Rivest-Shamir-Adleman) ändern.
+ Beim Initialisieren einer Logto-Instanz wird automatisch ein Schlüsselpaar aus öffentlichem und privatem Schlüssel generiert und im zugrunde liegenden OIDC-Provider registriert. Wenn Logto ein neues JWT (Zugangstoken oder ID-Token) ausstellt, wird das Token mit dem privaten Schlüssel signiert. Gleichzeitig kann jede Client-Anwendung, die ein JWT erhält, den zugehörigen öffentlichen Schlüssel verwenden, um die Signatur des Tokens zu überprüfen und so sicherzustellen, dass das Token nicht von Dritten manipuliert wurde. Der private Schlüssel ist auf dem Logto-Server geschützt. Der öffentliche Schlüssel hingegen ist, wie der Name schon sagt, für jeden zugänglich und kann über die `/oidc/jwks`-Schnittstelle des OIDC-Endpunkts abgerufen werden. Ein Signaturschlüssel-Algorithmus kann beim Generieren des privaten Schlüssels angegeben werden, und Logto verwendet standardmäßig den EC (Elliptische Kurve) Algorithmus. Die Administratoren können den Standardalgorithmus durch Rotieren der privaten Schlüssel auf RSA (Rivest-Shamir-Adleman) ändern.
- **OIDC-Cookie-Key**
- Wenn ein Benutzer einen Anmelde- oder Registrierungsprozess startet, wird auf dem Server eine "OIDC-Sitzung" sowie eine Reihe von Browser-Cookies erstellt. Mit diesen Cookies kann der Browser die Logto Experience API nutzen, um im Namen des Benutzers eine Reihe von Interaktionen durchzuführen, wie z. B. Anmeldung, Registrierung und Passwort zurücksetzen. Im Gegensatz zu JWTs werden die Cookies jedoch nur von Logto OIDC selbst signiert und überprüft, asymmetrische Kryptografie ist nicht erforderlich. Daher gibt es keine zugehörigen öffentlichen Schlüssel für Cookie-Signaturschlüssel und auch keine asymmetrischen Verschlüsselungsalgorithmen.
+ Wenn ein Benutzer einen Anmelde- oder Registrierungsprozess startet, wird auf dem Server eine „OIDC-Sitzung“ sowie eine Reihe von Browser-Cookies erstellt. Mit diesen Cookies kann der Browser die Logto Experience API nutzen, um im Namen des Benutzers eine Reihe von Interaktionen durchzuführen, wie z. B. Anmeldung, Registrierung und Passwort zurücksetzen. Im Gegensatz zu JWTs werden die Cookies jedoch nur von Logto OIDC selbst signiert und überprüft, asymmetrische Kryptografie ist nicht erforderlich. Daher gibt es keine zugehörigen öffentlichen Schlüssel für Cookie-Signaturschlüssel und auch keine asymmetrischen Verschlüsselungsalgorithmen.
## Signaturschlüssel über die Console UI rotieren \{#rotate-signing-keys-from-console-ui}
-Logto bietet die Funktion "Signaturschlüssel-Rotation", mit der du einen neuen OIDC-Private Key und Cookie-Key in deinem Mandanten erstellen kannst.
+Logto bietet die Funktion „Signaturschlüssel-Rotation“, mit der du einen neuen OIDC-Private Key und Cookie Key in deinem Mandanten erstellen kannst.
1. Navigiere zu Console > Signaturschlüssel. Dort kannst du sowohl OIDC-Private Keys als auch OIDC-Cookie-Keys verwalten.
-2. Um den Signaturschlüssel zu rotieren, klicke auf die Schaltfläche "Private Keys rotieren" oder "Cookie Keys rotieren". Beim Rotieren der privaten Schlüssel hast du die Möglichkeit, den Signaturalgorithmus zu ändern.
+2. Um den Signaturschlüssel zu rotieren, klicke auf die Schaltfläche „Private Keys rotieren“ oder „Cookie Keys rotieren“. Beim Rotieren der privaten Schlüssel hast du die Möglichkeit, den Signaturalgorithmus zu ändern.
3. Du findest eine Tabelle, die alle verwendeten Signaturschlüssel auflistet. Hinweis: Du kannst den vorherigen Schlüssel löschen, aber nicht den aktuellen.
| Status | Beschreibung |
@@ -38,14 +38,14 @@ Logto bietet die Funktion "Signaturschlüssel-Rotation", mit der du einen neuen
Bitte beachte, dass die Rotation die folgenden drei Aktionen umfasst:
1. **Erstellen eines neuen Signaturschlüssels**: Dadurch müssen alle deine **Anwendungen** und **APIs** den neuen Signaturschlüssel übernehmen.
-2. **Rotation des aktuellen Schlüssels**: Der bestehende Schlüssel wird nach der Rotation als "vorherig" gekennzeichnet und nicht mehr von neu erstellten Anwendungen und APIs verwendet. Tokens, die mit diesem Schlüssel signiert wurden, bleiben jedoch weiterhin gültig.
-3. **Entfernen des vorherigen Schlüssels**: Schlüssel mit der Kennzeichnung "vorherig" werden widerrufen und aus der Tabelle entfernt.
+2. **Rotation des aktuellen Schlüssels**: Der bestehende Schlüssel wird nach der Rotation als „vorherig“ gekennzeichnet und nicht mehr von neu erstellten Anwendungen und APIs verwendet. Tokens, die mit diesem Schlüssel signiert wurden, bleiben jedoch weiterhin gültig.
+3. **Entfernen des vorherigen Schlüssels**: Schlüssel mit dem Status „vorherig“ werden widerrufen und aus der Tabelle entfernt.
:::warning
-Rotiere niemals Signaturschlüssel hintereinander (zwei- oder mehrmals), da dies ALLE ausgestellten Tokens ungültig machen kann.
+Signaturschlüssel niemals mehrfach hintereinander rotieren (zwei- oder mehrmals), da dies ALLE ausgestellten Tokens ungültig machen kann.
-- Für OSS-Nutzer ist nach dem Rotieren des Signaturschlüssels ein Neustart der Logto-Instanz erforderlich, damit der neue Signaturschlüssel wirksam wird.
-- Für Cloud-Nutzer wird der neue Signaturschlüssel unmittelbar nach der Rotation wirksam, aber stelle sicher, dass du den Signaturschlüssel nicht mehrfach hintereinander rotierst.
+- Für OSS-Nutzer ist nach der Rotation des Signaturschlüssels ein Neustart der Logto-Instanz erforderlich, damit der neue Signaturschlüssel wirksam wird.
+- Für Cloud-Nutzer wird der neue Signaturschlüssel unmittelbar nach der Rotation wirksam, aber bitte stelle sicher, dass du den Signaturschlüssel nicht mehrfach hintereinander rotierst.
:::
## Verwandte Ressourcen \{#related-resources}
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx b/i18n/de/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
index fe07c91d823..b0adc89a902 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
@@ -2,7 +2,7 @@
id: user-impersonation
title: Benutzermimikry
sidebar_label: Benutzermimikry
-sidebar_position: 3
+sidebar_position: 4
---
import TokenExchangePrerequisites from './fragments/_token-exchange-prerequisites.mdx';
@@ -11,7 +11,7 @@ import TokenExchangePrerequisites from './fragments/_token-exchange-prerequisite
Stell dir vor, Sarah, eine Support-Ingenieurin bei TechCorp, erhält ein dringendes Ticket von Alex, einem Kunden, der keinen Zugriff auf eine kritische Ressource hat. Um das Problem effizient zu diagnostizieren und zu lösen, muss Sarah genau das sehen, was Alex im System sieht. Hier kommt die Benutzermimikry-Funktion von Logto ins Spiel.
-Benutzermimikry ermöglicht es autorisierten Benutzern wie Sarah, vorübergehend im System im Namen anderer Benutzer wie Alex zu agieren. Diese leistungsstarke Funktion ist unschätzbar für Fehlerbehebung, Kundensupport und administrative Aufgaben.
+Benutzermimikry ermöglicht es autorisierten Benutzern wie Sarah, vorübergehend im System im Namen anderer Benutzer wie Alex zu agieren. Diese leistungsstarke Funktion ist unschätzbar für die Fehlerbehebung, den Kundensupport und die Durchführung administrativer Aufgaben.
## Wie funktioniert das? \{#how-it-works}
@@ -23,25 +23,25 @@ sequenceDiagram
participant LogtoToken as Logto Token-Endpunkt
Sarah->>TechCorp: POST /api/request-impersonation
- Note over Sarah,TechCorp: Anfrage zur Mimikry von Alex
+ Note over Sarah,TechCorp: Anfrage, Alex zu imitieren
TechCorp->>Logto: POST /api/subject-tokens
Note over TechCorp,Logto: Anfrage nach Subjekt-Token für Alex
- Logto-->>TechCorp: Rückgabe des Subjekt-Tokens
- TechCorp-->>Sarah: Rückgabe des Subjekt-Tokens
+ Logto-->>TechCorp: Subjekt-Token zurückgeben
+ TechCorp-->>Sarah: Subjekt-Token zurückgeben
Sarah->>LogtoToken: POST /oidc/token
Note over Sarah,LogtoToken: Subjekt-Token gegen Zugangstoken tauschen
- LogtoToken-->>Sarah: Rückgabe des Zugangstokens
- Note over Sarah: Sarah kann nun als Alex auf Ressourcen zugreifen
+ LogtoToken-->>Sarah: Zugangstoken zurückgeben
+ Note over Sarah: Sarah kann jetzt als Alex auf Ressourcen zugreifen
```
Der Mimikry-Prozess umfasst drei Hauptschritte:
-1. Sarah beantragt die Mimikry über den Backend-Server von TechCorp
-2. Der Server von TechCorp erhält ein Subjekt-Token von Logtos Management API
+1. Sarah fordert die Mimikry über den Backend-Server von TechCorp an
+2. Der Server von TechCorp erhält ein Subjekt-Token von der Logto Management API
3. Sarahs Anwendung tauscht dieses Subjekt-Token gegen ein Zugangstoken aus
Schauen wir uns an, wie Sarah diese Funktion nutzen kann, um Alex zu helfen.
@@ -65,13 +65,13 @@ Content-Type: application/json
}
```
-In dieser API sollte das Backend ordnungsgemäße Autorisierungsprüfungen durchführen, um sicherzustellen, dass Sarah die erforderlichen Berechtigungen zur Mimikry von Alex hat.
+In dieser API sollte das Backend ordnungsgemäße Autorisierungsprüfungen durchführen, um sicherzustellen, dass Sarah die erforderlichen Berechtigungen hat, um Alex zu imitieren.
### Schritt 2: Subjekt-Token erhalten \{#step-2-obtaining-a-subject-token}
Nachdem Sarahs Anfrage validiert wurde, ruft der Server von TechCorp die [Management API](/integrate-logto/interact-with-management-api) von Logto auf, um ein Subjekt-Token zu erhalten.
-**Anfrage (TechCorps Server an Logtos Management API)**
+**Anfrage (TechCorps Server an Logto Management API)**
```bash
POST /api/subject-tokens HTTP/1.1
@@ -83,7 +83,7 @@ Content-Type: application/json
"userId": "alex123",
"context": {
"ticketId": "TECH-1234",
- "reason": "Zugriffsproblem auf Ressource",
+ "reason": "Ressourcenzugriffsproblem",
"supportEngineerId": "sarah789"
}
}
@@ -115,7 +115,7 @@ Der Server von TechCorp sollte dieses Subjekt-Token dann an Sarahs Anwendung zur
Nun tauscht Sarahs Anwendung dieses Subjekt-Token gegen ein Zugangstoken aus, das Alex repräsentiert, und gibt dabei die Ressource an, für die das Token verwendet werden soll.
-**Anfrage (Sarahs Anwendung an Logtos Token-Endpunkt)**
+**Anfrage (Sarahs Anwendung an Logto Token-Endpunkt)**
Für traditionelle Webanwendungen oder Maschine-zu-Maschine-Anwendungen mit App-Secret, gib die Zugangsdaten im `Authorization`-Header an:
@@ -163,7 +163,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
Das zurückgegebene `access_token` ist an die angegebene Ressource gebunden und kann somit nur mit der Customer Data API von TechCorp verwendet werden.
-## Anwendungsbeispiel \{#example-usage}
+## Beispielanwendung \{#example-usage}
So könnte Sarah dies in einer Node.js-Support-Anwendung nutzen:
@@ -283,16 +283,16 @@ void performImpersonation();
:::note
1. Das Subjekt-Token ist kurzlebig und nur einmal verwendbar.
-2. Das Mimikry-Zugangstoken wird nicht mit einem [Auffrischungstoken (Refresh token)](https://auth.wiki/refresh-token) geliefert. Sarah muss den Vorgang wiederholen, falls das Token abläuft, bevor sie Alex' Problem gelöst hat.
-3. Der Backend-Server von TechCorp muss ordnungsgemäße Autorisierungsprüfungen implementieren, um sicherzustellen, dass nur autorisiertes Support-Personal wie Sarah eine Mimikry anfordern kann.
+2. Das Mimikry-Zugangstoken wird nicht mit einem [Auffrischungstoken (Refresh token)](https://auth.wiki/refresh-token) geliefert. Sarah muss diesen Prozess wiederholen, falls das Token abläuft, bevor sie Alex' Problem gelöst hat.
+3. Der Backend-Server von TechCorp muss ordnungsgemäße Autorisierungsprüfungen implementieren, um sicherzustellen, dass nur autorisiertes Support-Personal wie Sarah Mimikry anfordern kann.
:::
## `act`-Anspruch \{#act-claim}
-Beim Einsatz des Token-Austausch-Flows für Mimikry kann das ausgegebene Zugangstoken einen zusätzlichen `act` (actor)-Anspruch enthalten. Dieser Anspruch repräsentiert die Identität der „handelnden Partei“ – in unserem Beispiel Sarah, die die Mimikry durchführt.
+Beim Einsatz des Token-Austausch-Flows für Mimikry kann das ausgegebene Zugangstoken einen zusätzlichen `act` (Akteur) Anspruch enthalten. Dieser Anspruch repräsentiert die Identität der „handelnden Partei“ – in unserem Beispiel Sarah, die die Mimikry durchführt.
-Um den `act`-Anspruch einzuschließen, muss Sarahs Anwendung ein `actor_token` im Token-Austausch-Request bereitstellen. Dieses Token sollte ein gültiges Zugangstoken für Sarah mit dem `openid`-Scope sein. So wird es im Token-Austausch-Request angegeben:
+Um den `act`-Anspruch einzuschließen, muss Sarahs Anwendung ein `actor_token` im Token-Austausch-Request angeben. Dieses Token sollte ein gültiges Zugangstoken für Sarah mit dem `openid`-Scope sein. So wird es im Token-Austausch-Request eingebunden:
Für traditionelle Webanwendungen oder Maschine-zu-Maschine-Anwendungen:
@@ -344,20 +344,20 @@ Wenn ein `actor_token` bereitgestellt wird, enthält das resultierende Zugangsto
}
```
-Dieser `act`-Anspruch zeigt klar an, dass Sarah (sarah789) im Namen von Alex (alex123) handelt. Der `act`-Anspruch ist nützlich für Auditing und Nachverfolgung von Mimikry-Aktionen.
+Dieser `act`-Anspruch zeigt klar an, dass Sarah (sarah789) im Namen von Alex (alex123) handelt. Der `act`-Anspruch kann für Auditing und Nachverfolgung von Mimikry-Aktionen nützlich sein.
## Token-Claims anpassen \{#customizing-token-claims}
-Logto ermöglicht es dir, [die Token-Claims anzupassen](/developers/custom-token-claims) für Mimikry-Tokens. Das ist nützlich, um zusätzlichen Kontext oder Metadaten zum Mimikry-Prozess hinzuzufügen, wie z. B. den Grund für die Mimikry oder das zugehörige Support-Ticket.
+Logto ermöglicht es dir, [die Token-Claims anzupassen](/developers/custom-token-claims) für Mimikry-Tokens. Das kann nützlich sein, um zusätzlichen Kontext oder Metadaten zum Mimikry-Prozess hinzuzufügen, wie z. B. den Grund für die Mimikry oder das zugehörige Support-Ticket.
-Wenn der Server von TechCorp ein Subjekt-Token von Logtos Management API anfordert, kann er ein `context`-Objekt angeben:
+Wenn der Server von TechCorp ein Subjekt-Token von der Logto Management API anfordert, kann er ein `context`-Objekt angeben:
```json
{
"userId": "alex123",
"context": {
"ticketId": "TECH-1234",
- "reason": "Zugriffsproblem auf Ressource",
+ "reason": "Ressourcenzugriffsproblem",
"supportEngineerId": "sarah789"
}
}
@@ -381,7 +381,7 @@ const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
};
```
-Das resultierende Zugangstoken, das Sarah erhält, könnte so aussehen:
+Das resultierende Zugangstoken, das Sarah erhält, könnte dann so aussehen:
```json
{
@@ -389,22 +389,21 @@ Das resultierende Zugangstoken, das Sarah erhält, könnte so aussehen:
"aud": "https://api.techcorp.com/customer-data",
"impersonation_context": {
"ticket_id": "TECH-1234",
- "reason": "Zugriffsproblem auf Ressource",
+ "reason": "Ressourcenzugriffsproblem",
"support_engineer": "sarah789"
}
// ... weitere Standardansprüche
}
```
-Durch die Anpassung der Zugangstoken-Claims auf diese Weise kann TechCorp wertvolle Informationen über den Mimikry-Kontext einfügen, was die Nachvollziehbarkeit und das Verständnis von Mimikry-Aktivitäten im System erleichtert.
+Durch die Anpassung der Zugangstoken-Claims auf diese Weise kann TechCorp wertvolle Informationen über den Mimikry-Kontext einbinden, was die Nachvollziehbarkeit und das Verständnis von Mimikry-Aktivitäten im System erleichtert.
:::note
-Sei vorsichtig beim Hinzufügen von benutzerdefinierten Ansprüchen zu deinen Tokens. Vermeide es, sensible Informationen einzufügen, die ein Sicherheitsrisiko darstellen könnten, falls das Token abgefangen oder geleakt wird. Die JWTs sind signiert, aber nicht verschlüsselt, daher sind die Ansprüche für jeden sichtbar, der Zugriff auf das Token hat.
+Sei vorsichtig beim Hinzufügen von benutzerdefinierten Ansprüchen zu deinen Tokens. Vermeide es, sensible Informationen einzubinden, die ein Sicherheitsrisiko darstellen könnten, falls das Token abgefangen oder geleakt wird. Die JWTs sind signiert, aber nicht verschlüsselt, daher sind die Ansprüche für jeden sichtbar, der Zugriff auf das Token hat.
:::
## Verwandte Ressourcen \{#related-resources}
- Was ist Mimikry in der Cybersicherheit und im Identitätsmanagement? Wie können KI-Agenten sie
- nutzen?
+ Was ist Mimikry in Cybersecurity und Identitätsmanagement? Wie können KI-Agenten sie nutzen?
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx b/i18n/de/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
index 70e89e51cff..36a890d5818 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
@@ -1,14 +1,14 @@
---
-sidebar_position: 5
+sidebar_position: 6
---
# Webhooks
Logto [Webhook](https://auth.wiki/webhook) bieten Echtzeit-Benachrichtigungen für verschiedene Ereignisse, einschließlich Änderungen an Benutzerkonten, Rollen, Berechtigungen, Organisationen, Organisationsrollen, Organisationsberechtigungen und [Benutzerinteraktionen](/end-user-flows).
-Wenn ein Ereignis ausgelöst wird, sendet Logto eine HTTP-Anfrage an die von dir angegebene Endpoint-URL, die detaillierte Informationen über das Ereignis enthält, wie Benutzer-ID, Benutzername, E-Mail und andere relevante Details (für mehr Informationen über die im Payload und Header enthaltenen Daten siehe [Webhook-Anfrage](/developers/webhooks/webhooks-request)). Deine Anwendung kann diese Anfrage verarbeiten und individuelle Aktionen ausführen, wie z. B. das Versenden einer E-Mail oder das Aktualisieren von Daten in einer Datenbank.
+Wenn ein Ereignis ausgelöst wird, sendet Logto eine HTTP-Anfrage an die von dir angegebene Endpoint-URL, die detaillierte Informationen über das Ereignis enthält, wie Benutzer-ID, Benutzername, E-Mail und weitere relevante Details (für mehr Informationen über die im Payload und Header enthaltenen Daten siehe [Webhook-Anfrage](/developers/webhooks/webhooks-request)). Deine Anwendung kann diese Anfrage verarbeiten und individuelle Aktionen ausführen, wie z. B. das Versenden einer E-Mail oder das Aktualisieren von Daten in einer Datenbank.
-Wir fügen kontinuierlich weitere Ereignisse basierend auf den Bedürfnissen der Nutzer hinzu. Wenn du spezifische Anforderungen für dein Unternehmen hast, lass es uns bitte wissen.
+Wir fügen kontinuierlich weitere Ereignisse basierend auf den Bedürfnissen der Nutzer hinzu. Wenn du spezielle Anforderungen für dein Unternehmen hast, lass es uns bitte wissen.
## Warum Webhook verwenden? \{#why-use-webhook}
@@ -17,19 +17,19 @@ Webhooks bieten eine Echtzeit-Kommunikation zwischen Anwendungen, eliminieren di
Hier sind einige Beispiele für häufige Webhook-Anwendungsfälle im CIAM-Bereich:
- **E-Mails versenden:** Konfiguriere einen Webhook, um eine Willkommens-E-Mail an neue Benutzer nach der Registrierung zu senden oder Administratoren zu benachrichtigen, wenn sich ein Benutzer von einem neuen Gerät oder Standort anmeldet.
-- **Benachrichtigungen senden:** Konfiguriere einen Webhook, um einen virtuellen Assistenten mit deinem CRM-System auszulösen, um Echtzeit-Kundensupport zu bieten, wenn sich Benutzer anmelden.
-- **Zusätzliche API-Aufrufe durchführen**: Konfiguriere einen Webhook, um den Benutzerzugriff zu überprüfen, indem du deren E-Mail-Domain oder IP-Adresse prüfst und dann die Logto Management API verwendest, um entsprechende Rollen mit Ressourcenberechtigungen zuzuweisen.
-- **Daten-Synchronisation:** Konfiguriere einen Webhook, um die Anwendung über Änderungen wie Sperrungen oder Löschungen von Benutzerkonten auf dem Laufenden zu halten.
-- **Berichte generieren**: Richte einen Webhook ein, um Daten zur Benutzeranmeldeaktivität zu erhalten und diese zur Erstellung von Berichten über Benutzerengagement oder Nutzungsmuster zu nutzen.
+- **Benachrichtigungen senden:** Konfiguriere einen Webhook, um einen virtuellen Assistenten mit deinem CRM-System auszulösen, um Echtzeit-Kundensupport bereitzustellen, wenn sich Benutzer anmelden.
+- **Zusätzliche API-Aufrufe durchführen:** Konfiguriere einen Webhook, um den Benutzerzugang zu überprüfen, indem die E-Mail-Domain oder IP-Adresse geprüft wird, und verwende dann die Logto Management API, um entsprechende Rollen mit Ressourcenberechtigungen zuzuweisen.
+- **Daten-Synchronisierung:** Konfiguriere einen Webhook, um die Anwendung über Änderungen wie Sperrungen oder Löschungen von Benutzerkonten auf dem Laufenden zu halten.
+- **Berichte generieren:** Richte einen Webhook ein, um Daten zur Benutzeranmeldeaktivität zu erhalten und diese zur Erstellung von Berichten über Benutzerengagement oder Nutzungsmuster zu nutzen.
## Begriffe \{#terms}
-| Item | Description |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Event | Wenn eine bestimmte Aktion ausgeführt wird, löst sie ein Hook-Ereignis mit einem bestimmten Typ aus. Z. B. sendet Logto ein PostRegister-Hook-Ereignis, wenn der Benutzer den Anmeldeprozess abgeschlossen und ein neues Konto erstellt hat. |
-| Hook | Eine einzelne oder eine Reihe von Aktionen, die an ein bestimmtes Ereignis angehängt sind. Die Aktion kann ein API-Aufruf, das Ausführen von Code-Snippets usw. sein. |
-| Webhook | Ein Subtyp von Hook, der das Aufrufen einer API mit dem Ereignis-Payload bezeichnet. |
-| Angenommen, ein Entwickler möchte eine Benachrichtigung senden, wenn sich ein Benutzer über ein neues Gerät anmeldet, kann der Entwickler einen Webhook hinzufügen, der seine Sicherheitsdienst-API zum PostSignIn-Ereignis aufruft. |
+| Item | Beschreibung |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Event | Wenn eine bestimmte Aktion ausgeführt wird, löst sie ein Hook-Ereignis mit einem bestimmten Typ aus. Z. B. sendet Logto ein PostRegister-Hook-Ereignis, wenn der Benutzer den Registrierungsprozess abgeschlossen und ein neues Konto erstellt hat. |
+| Hook | Eine einzelne oder eine Reihe von Aktionen, die an ein bestimmtes Ereignis angehängt sind. Die Aktion kann ein API-Aufruf, das Ausführen von Code-Snippets usw. sein. |
+| Webhook | Ein Subtyp von Hook, der das Aufrufen einer API mit dem Ereignis-Payload bezeichnet. |
+| Angenommen, ein Entwickler möchte eine Benachrichtigung senden, wenn sich ein Benutzer über ein neues Gerät anmeldet, kann der Entwickler einen Webhook hinzufügen, der seine Sicherheitsdienst-API beim PostSignIn-Ereignis aufruft. |
Hier ist ein Beispiel für das Aktivieren von zwei Webhooks für das `PostSignIn`-Ereignis in Logto:
@@ -43,11 +43,11 @@ graph LR
end
subgraph Service 2
- E2(Endpunkt)
+ E2(Endpoint)
end
subgraph Service 1
- E1(Endpunkt)
+ E1(Endpoint)
end
SF -->|Auslösen| PS
@@ -67,18 +67,18 @@ graph LR
-Obwohl synchrone Webhooks den Benutzeranmeldeprozess reibungsloser machen würden, unterstützen wir sie derzeit noch nicht (werden wir aber in Zukunft). Daher erfordern Szenarien, die auf synchronen Webhooks basieren, aktuell unterschiedliche Workarounds. Wenn du Fragen hast, zögere nicht, uns zu kontaktieren.
+Obwohl synchrone Webhooks den Benutzeranmeldeprozess reibungsloser machen würden, unterstützen wir sie derzeit noch nicht (wir werden dies in Zukunft tun). Daher erfordern Szenarien, die auf synchronen Webhooks basieren, aktuell verschiedene Workarounds. Wenn du Fragen hast, zögere nicht, uns zu kontaktieren.
-### Wie gehe ich mit Änderungen der Benutzerberechtigungen um? \{#how-to-deal-with-user-permission-change}
+### Wie gehe ich mit Änderungen an Benutzerberechtigungen um? \{#how-to-deal-with-user-permission-change}
-Siehe [Benutzerberechtigungsänderung verwalten](/authorization/global-api-resources/#optional-handle-user-permission-change) Anleitung.
+Siehe [Benutzerberechtigungsänderungen verwalten](/authorization/global-api-resources/#optional-handle-user-permission-change) Anleitung.
@@ -89,7 +89,7 @@ Siehe [Benutzerberechtigungsänderung verwalten](/authorization/global-api-resou
-Der Endpunkt, der Webhooks empfängt, sollte so schnell wie möglich eine 2xx-Antwort zurückgeben, um Logto mitzuteilen, dass der Webhook erfolgreich empfangen wurde. Da verschiedene Nutzer sehr unterschiedliche Verarbeitungslogiken für Webhooks haben, können übermäßig komplexe Aufgaben mehrere Sekunden dauern, was dazu führt, dass der Logto Webhook in einen Timeout läuft. Best Practice ist es, eine eigene Ereigniswarteschlange zu pflegen; nach Empfang des Logto Webhooks wird das Ereignis in die Warteschlange eingefügt und eine 2xx-Antwort an Logto zurückgegeben. Dann kann dein eigener Worker die Aufgaben in der Warteschlange Schritt für Schritt abarbeiten. Wenn der Worker auf einen Fehler stößt, sollte dieser auf deinem eigenen Server behandelt werden.
+Der Endpoint, der Webhooks empfängt, sollte so schnell wie möglich eine 2xx-Antwort zurückgeben, um Logto mitzuteilen, dass der Webhook erfolgreich empfangen wurde. Da verschiedene Nutzer sehr unterschiedliche Verarbeitungslogiken für Webhooks haben, können übermäßig komplexe Aufgaben mehrere Sekunden dauern, was dazu führt, dass der Logto Webhook ein Timeout erhält. Die beste Praxis ist, eine eigene Ereigniswarteschlange zu pflegen; nach dem Empfang des Logto Webhooks wird das Ereignis in die Warteschlange eingefügt und eine 2xx-Antwort an Logto zurückgegeben. Dann kann dein eigener Worker die Aufgaben in der Warteschlange Schritt für Schritt abarbeiten. Wenn der Worker auf einen Fehler stößt, solltest du diesen auf deinem eigenen Server behandeln.
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx b/i18n/de/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
index 63e166bf51a..1f5a28f443f 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
@@ -1,34 +1,60 @@
---
sidebar_position: 9
sidebar_custom_props:
- sublist_label: Kontoflüsse
+ sublist_label: Konto-Flows
---
import GearIcon from '@site/src/assets/gear.svg';
# Kontoeinstellungen
-Logto stellt zwei Sammlungen von Kontoeinstellungs-APIs bereit, mit denen Benutzer ihr Konto und ihre in Logto gespeicherten Profile verwalten können.
+Logto bietet mehrere Möglichkeiten, damit Benutzer ihr Konto und ihre in Logto gespeicherten Profile verwalten können.
-## Account APIs verwenden (Empfohlen) \{#use-account-apis-recommended}
+## Vorgefertigte Account Center UI verwenden (Empfohlen) \{#use-prebuilt-account-center-ui-recommended}
-Die Account APIs von Logto sind sofort einsatzbereite Frontend-Endpunkte, mit denen Endbenutzer ihre eigenen Informationen sicher anzeigen und aktualisieren können – mit integrierten Berechtigungsprüfungen. Binde sie einfach in deine Client-Anwendung ein, um eine ansprechende Self-Service-Kontoeinstellungsseite zu ermöglichen.
+Logto stellt eine vorgefertigte Account Center UI bereit, die einsatzbereite Seiten für Endbenutzer bietet, um ihre Kontoeinstellungen zu verwalten. Dies ist der schnellste Weg, Kontoverwaltung zu deiner Anwendung hinzuzufügen.
Hauptmerkmale:
-- **Einstellungen für Endbenutzer**: Benutzer verwalten ihre eigenen Anmeldekennungen und Zugangsdaten, soziale Konten, MFA-Methoden und Profildaten.
+- **Kein Entwicklungsaufwand**: Fertige Seiten, die sofort funktionieren.
+- **Konsistente Erfahrung**: Entspricht dem Look & Feel der Logto-Anmeldeerfahrung.
+- **Eingebaute Sicherheit**: Alle Verifizierungsabläufe und Sicherheitsmaßnahmen werden automatisch gehandhabt.
+- **Vollständige Funktionalität**: Unterstützt das Aktualisieren von E-Mail, Telefon, Benutzername, Passwort und MFA-Einstellungen.
+
+,
+ },
+ },
+ ]}
+/>
+
+## Account APIs verwenden \{#use-account-apis}
+
+Die Account APIs von Logto sind einsatzbereite Frontend-Endpunkte, mit denen Endbenutzer ihre eigenen Informationen sicher anzeigen und aktualisieren können – mit eingebauten Berechtigungsprüfungen. Verwende dies, wenn du eine eigene Kontoeinstellungsseite mit deinem eigenen UI erstellen möchtest.
+
+Hauptmerkmale:
+
+- **Endbenutzereinstellungen**: Benutzer verwalten ihre eigenen Anmeldekennungen und Zugangsdaten, soziale Konten, MFA-Methoden und Profildaten.
- **Clientseitige Integration**: Für die sichere, direkte Nutzung im Frontend konzipiert.
-- **Minimale Einrichtung**: Schlüsselfertige Endpunkte ohne eigenen Server erforderlich.
+- **Volle Anpassbarkeit**: Baue dein eigenes UI und nutze dabei die sicheren APIs von Logto.
- **Berechtigungssteuerung**: Aktiviere oder deaktiviere einzelne Account APIs über die Management API-Einstellungen.
,
},
@@ -38,12 +64,12 @@ Hauptmerkmale:
## Management APIs verwenden \{#use-management-apis}
-Die Management APIs bilden die zentrale Verwaltungsoberfläche von Logto und sind nur für Administratoren oder Backend-Dienste zugänglich. Sie bieten maximale Flexibilität und vollständige CRUD-Kontrolle über jedes Benutzerkonto und ermöglichen den Aufbau individueller Verwaltungstools. Wenn du ein vollständig individuelles Self-Service-Portal oder nicht standardisierte Benutzerverwaltungsfunktionen benötigst, kannst du ausgewählte Management API-Endpunkte hinter deiner eigenen „Account API“-Schicht bereitstellen und sie mit deiner eigenen Authentifizierungslogik absichern.
+Die Management APIs bilden die zentrale Administrationsschnittstelle von Logto und sind nur für Admins oder Backend-Dienste zugänglich. Sie bieten maximale Flexibilität und vollständige CRUD-Kontrolle über jedes Benutzerkonto und ermöglichen den Bau individueller Verwaltungstools. Wenn du ein vollständig individuelles Self-Service-Portal oder nicht standardisierte Benutzerverwaltungsfunktionen benötigst, kannst du ausgewählte Management API-Endpunkte hinter deiner eigenen „Account API“-Schicht bereitstellen und mit deiner eigenen Authentifizierungslogik absichern.
Hauptmerkmale:
-- **Nur für Administratoren zugänglich**: Für Entwickler und Backoffice-Systeme gedacht
-- **Vollständiger Benutzerlebenszyklus**: Konten erstellen, lesen, aktualisieren, löschen, sperren oder wiederherstellen
+- **Nur für Admins zugänglich**: Für Entwickler und Backoffice-Systeme gedacht
+- **Voller Benutzerlebenszyklus**: Konten erstellen, lesen, aktualisieren, löschen, sperren oder wiederherstellen
- **Erweiterte Operationen**: Persönliche Zugangstokens generieren, Benutzer imitieren, OAuth-Apps verbinden, Workflows anpassen.
,
},
@@ -61,13 +87,14 @@ Hauptmerkmale:
]}
/>
-## Account API vs. Management API \{#account-api-vs-management-api}
+## Vergleich der Optionen für Kontoeinstellungen \{#comparison-of-account-settings-options}
-| Merkmal | Account APIs | Management APIs |
-| --------------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ |
-| **Vorgesehener Nutzer** | Endbenutzer | Admins / Entwickler |
-| **Zugriffskontext** | Client-seitig / Frontend | Server-seitig / Backend |
-| **Berechtigungsmodell** | Aktivierung einzelner Account APIs über die Management API. | Vollständig anpassbar durch Entwickler |
-| **Unterstützte Funktionen** | Anzeigen, aktualisieren und löschen: Benutzername, E-Mail, Telefon, Passwort, soziale Konten, MFA, Profil | Alle Basisfunktionen + Konto löschen/sperren/wiederherstellen, persönliche Zugangstokens, Benutzermimikry, OAuth-Apps verbinden usw. |
-| **Einrichtungsaufwand** | Sehr gering (Plug-and-Play) | Mittel bis hoch (benötigt individuelle Implementierung) |
-| **Wann verwenden** | Um schnell eine sichere Self-Service-Kontoeinstellungsseite in deiner Client-App mit minimalem Aufwand zu starten. | Wenn Account APIs nicht ausreichen, z. B. für komplexe Löschlogik, risikoreiche Aktionen oder Backoffice-Tools. |
+| Merkmal | Vorgefertigte Account Center UI | Account APIs | Management APIs |
+| --------------------------- | ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
+| **Vorgesehener Nutzer** | Endbenutzer | Endbenutzer | Admins / Entwickler |
+| **Zugriffskontext** | Weiterleitung zu von Logto gehosteten Seiten | Client-seitig / Frontend | Server-seitig / Backend |
+| **Berechtigungsmodell** | Aktivieren / Deaktivieren von Feldern über Account Center-Einstellungen | Aktivieren / Deaktivieren einzelner Account APIs über Management API | Vollständig anpassbar durch Entwickler |
+| **Unterstützte Funktionen** | Aktualisieren: E-Mail, Telefon, Benutzername, Passwort, MFA (TOTP, Passkeys, Backup-Codes) | Anzeigen, aktualisieren und löschen: Benutzername, E-Mail, Telefon, Passwort, soziale Konten, MFA, Profil | Alle Basisfunktionen + Konto löschen / sperren / wiederherstellen, persönliche Zugangstokens, Benutzermimikry, OAuth-Apps verbinden, usw. |
+| **UI-Anpassung** | Übernimmt Branding der Anmeldeerfahrung | Volle Anpassung (eigenes UI bauen) | Volle Anpassung (eigenes UI bauen) |
+| **Einrichtungsaufwand** | Keiner (nur Link zu vorgefertigten Seiten) | Gering (APIs mit eigenem UI nutzen) | Mittel bis hoch (benötigt eigene Implementierung) |
+| **Wann verwenden** | Für den schnellsten Weg, Kontoverwaltung ohne eigene Seiten zu integrieren | Wenn du ein eigenes UI brauchst, aber die sicheren APIs von Logto nutzen möchtest | Wenn die Account APIs nicht ausreichen, z. B. für komplexe Löschlogik, risikoreiche Aktionen oder Backoffice-Tools |
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx b/i18n/de/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
new file mode 100644
index 00000000000..8af04e150ed
--- /dev/null
+++ b/i18n/de/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
@@ -0,0 +1,152 @@
+---
+description: Erfahre, wie du das vorgefertigte Account Center UI von Logto verwendest, um Nutzern die Verwaltung ihrer Konten zu ermöglichen
+sidebar_position: 2
+---
+
+# Kontoeinstellungen mit dem vorgefertigten Account Center UI
+
+## Was ist das vorgefertigte Account Center UI \{#what-is-the-prebuilt-account-center-ui}
+
+Logto stellt ein vorgefertigtes Account Center UI bereit, das gebrauchsfertige Seiten für Endnutzer bietet, um ihre Kontoeinstellungen zu verwalten. Dieses vorgefertigte UI wird von Logto gehostet und übernimmt gängige Aufgaben der Kontoverwaltung, darunter:
+
+- Aktualisierung der E-Mail-Adresse
+- Aktualisierung der Telefonnummer
+- Aktualisierung des Benutzernamens
+- Passwort festlegen oder aktualisieren
+- Verwaltung der MFA-Einstellungen (TOTP-Authenticator-App, Passkeys, Backup-Codes)
+
+Das vorgefertigte Account Center UI ist darauf ausgelegt, nahtlos mit deiner Anwendung zu funktionieren und bietet ein konsistentes Nutzererlebnis, ohne dass du eigene Seiten zur Kontoverwaltung erstellen musst.
+
+## Vorteile der Nutzung des vorgefertigten UI \{#benefits-of-using-the-prebuilt-ui}
+
+- **Kein Entwicklungsaufwand**: Gebrauchsbereite Seiten, die sofort funktionieren
+- **Konsistentes Erlebnis**: Entspricht dem Look & Feel der Logto-Anmeldeerfahrung
+- **Integrierte Sicherheit**: Alle Verifizierungsabläufe und Sicherheitsmaßnahmen werden automatisch gehandhabt
+- **Immer aktuell**: Neue Funktionen und Sicherheitsverbesserungen stehen automatisch zur Verfügung
+
+## Verfügbare Seiten \{#available-pages}
+
+Das vorgefertigte Account Center UI stellt die folgenden Seiten bereit, die alle unter dem Pfad `/account` deines Logto-Tenant-Endpunkts erreichbar sind:
+
+| Pfad | Beschreibung |
+| -------------------------------- | ------------------------------------------ |
+| `/account/email` | Primäre E-Mail-Adresse aktualisieren |
+| `/account/phone` | Primäre Telefonnummer aktualisieren |
+| `/account/username` | Benutzernamen aktualisieren |
+| `/account/password` | Passwort festlegen oder aktualisieren |
+| `/account/passkey/add` | Neuen Passkey hinzufügen (WebAuthn) |
+| `/account/passkey/manage` | Vorhandene Passkeys anzeigen und verwalten |
+| `/account/authenticator-app` | TOTP-Authenticator-App einrichten |
+| `/account/backup-codes/generate` | Neue Backup-Codes generieren |
+| `/account/backup-codes/manage` | Backup-Codes anzeigen und verwalten |
+
+Wenn dein Tenant-Endpunkt zum Beispiel `https://example.logto.app` ist, wäre die Seite zur Aktualisierung der E-Mail-Adresse unter `https://example.logto.app/account/email` erreichbar.
+
+## So verwendest du das vorgefertigte UI \{#how-to-use-the-prebuilt-ui}
+
+### Schritt 1: Account API aktivieren \{#step-1-enable-account-api}
+
+Das vorgefertigte Account Center UI basiert auf der Account API. Navigiere zu Konsole > Anmeldung & Konto > Account Center und aktiviere die Account API.
+
+Konfiguriere die Feldberechtigungen nach deinen Anforderungen:
+
+- Setze Felder auf `Edit`, damit Nutzer sie bearbeiten können
+- Setze Felder auf `ReadOnly`, wenn Nutzer sie nur ansehen dürfen
+- Setze Felder auf `Off`, um sie vollständig auszublenden
+
+### Schritt 2: Verlinke die vorgefertigten Seiten aus deiner Anwendung \{#step-2-link-to-prebuilt-pages}
+
+Um das vorgefertigte Account Center UI zu nutzen, musst du Nutzer aus deiner Anwendung auf die entsprechenden Logto-Seiten weiterleiten. Es gibt zwei Ansätze:
+
+#### Ansatz A: Direktverlinkung mit Redirect-Parameter \{#approach-a-direct-linking}
+
+Füge in deiner Anwendung Links ein, die Nutzer auf die vorgefertigten Seiten weiterleiten. Füge einen `redirect`-Query-Parameter hinzu, um Nutzer nach Abschluss der Aktion zurück zu deiner App zu bringen:
+
+```
+https://[tenant-id].logto.app/account/email?redirect=https://your-app.com/settings
+```
+
+Wenn Nutzer die Aktualisierung ihrer E-Mail abgeschlossen haben, werden sie zurück zu `https://your-app.com/settings` geleitet.
+
+#### Ansatz B: Einbettung in deinen Kontoeinstellungs-Flow \{#approach-b-embedding}
+
+Du kannst die vorgefertigten Seiten in deinen bestehenden Kontoeinstellungs-Workflow integrieren:
+
+1. Zeige auf der Kontoeinstellungsseite deiner App die aktuellen Informationen des Nutzers an
+2. Biete "Bearbeiten"- oder "Aktualisieren"-Buttons an, die auf die entsprechenden vorgefertigten Seiten verlinken
+3. Nach Abschluss der Aktion wird der Nutzer zurück zu deiner App geleitet
+
+Beispielimplementierung:
+
+```tsx
+function AccountSettings() {
+ const tenantEndpoint = 'https://example.logto.app';
+ const redirectUrl = encodeURIComponent(window.location.href);
+
+ return (
+
+
Kontoeinstellungen
+
+
+
+
+
+
+
+ );
+}
+```
+
+### Schritt 3: Erfolgs-Redirects behandeln \{#step-3-handle-success-redirects}
+
+Nachdem Nutzer eine Aktion abgeschlossen haben, werden sie zu deiner angegebenen URL mit einem optionalen `show_success`-Query-Parameter weitergeleitet. Du kannst diesen verwenden, um eine Erfolgsmeldung anzuzeigen:
+
+```tsx
+function SettingsPage() {
+ const searchParams = new URLSearchParams(window.location.search);
+ const showSuccess = searchParams.get('show_success');
+
+ return (
+
+ {showSuccess === 'email' &&
E-Mail erfolgreich aktualisiert!
}
+ {showSuccess === 'password' &&
Passwort erfolgreich aktualisiert!
}
+ {/* ... Rest deiner Einstellungsseite */}
+
+ );
+}
+```
+
+## Sicherheitshinweise \{#security-considerations}
+
+Das vorgefertigte Account Center UI enthält integrierte Sicherheitsmaßnahmen:
+
+- **Identitätsüberprüfung**: Vor sensiblen Änderungen (E-Mail, Telefon, Passwort, MFA) müssen Nutzer ihre Identität mit ihrem aktuellen Passwort oder einer bestehenden Verifizierungsmethode bestätigen
+- **Verifizierungscodes**: E-Mail- und Telefonaktualisierungen erfordern Verifizierungscodes, die an die neue Adresse/Nummer gesendet werden
+- **Sitzungsvalidierung**: Alle Operationen validieren die Sitzung des Nutzers, um unbefugten Zugriff zu verhindern
+
+## Anpassungsoptionen \{#customization-options}
+
+Das vorgefertigte Account Center UI übernimmt das Branding aus deinen Einstellungen für die Anmeldeerfahrung, einschließlich:
+
+- Logo und Farben
+- Dunkel-/Hellmodus
+- Spracheinstellungen
+
+Wenn du mehr Anpassungen benötigst, als das vorgefertigte UI bietet, solltest du die [Account API](/end-user-flows/account-settings/by-account-api) verwenden, um eigene Seiten zur Kontoverwaltung zu erstellen.
+
+## Verwandte Ressourcen \{#related-resources}
+
+- [Kontoeinstellungen per Account API](/end-user-flows/account-settings/by-account-api) – Eigene Kontoverwaltung mit voller API-Kontrolle erstellen
+- [Kontoeinstellungen per Management API](/end-user-flows/account-settings/by-management-api) – Kontoverwaltung auf Admin-Ebene
+- [MFA-Konfiguration](/end-user-flows/mfa) – Multi-Faktor-Authentifizierung einrichten
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/introduction/README.mdx b/i18n/de/docusaurus-plugin-content-docs/current/introduction/README.mdx
index 82f4b3d2852..6c4ef6ef0d8 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/introduction/README.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/introduction/README.mdx
@@ -1,5 +1,5 @@
---
-description: Starte dein Identitäts- und Zugriffsmanagementsystem schnell, indem du Logto integrierst. Genieße Authentifizierung (Authentication), Autorisierung (Authorization) und Multi-Tenant-Management in einem System.
+description: Starte dein Identitäts- und Zugriffsmanagement-System schnell, indem du Logto integrierst. Genieße Authentifizierung (Authentication), Autorisierung (Authorization) und Multi-Tenant-Management alles in einem.
---
import AuditLogIcon from '@site/src/assets/audit-log.svg';
@@ -32,7 +32,7 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
# Einführung
-Willkommen zur Logto-Dokumentation! Logto ist eine Identitäts- und Zugriffsmanagement-Lösung (IAM), die für moderne Apps und SaaS-Produkte entwickelt wurde. Sie bietet ein sicheres, skalierbares und anpassbares Authentifizierungs- (Authentication) und Autorisierungssystem (Authorization) für deine Anwendungen.
+Willkommen zur Logto-Dokumentation! Logto ist eine Identity and Access Management (IAM) Lösung, die für moderne Apps und SaaS-Produkte entwickelt wurde. Sie bietet ein sicheres, skalierbares und anpassbares Authentifizierungs- und Autorisierungssystem für deine Anwendungen.
## Nach Funktionen entdecken \{#explore-by-features}
@@ -143,6 +143,10 @@ Willkommen zur Logto-Dokumentation! Logto ist eine Identitäts- und Zugriffsmana
icon: ,
docId: 'developers/custom-token-claims/README',
},
+ {
+ icon: ,
+ docId: 'developers/custom-id-token/README',
+ },
{
icon: ,
docId: 'developers/user-impersonation',
@@ -158,7 +162,7 @@ Willkommen zur Logto-Dokumentation! Logto ist eine Identitäts- und Zugriffsmana
]}
/>
-## Nach unterstützendem Toolkit entdecken \{#explore-by-support-toolkit}
+## Nach Support-Toolkit entdecken \{#explore-by-support-toolkit}
Die Fähigkeiten von Logto basieren auf vier zentralen Säulen, die das Fundament für die Funktionen bilden, die du einfach in dein Produkt oder Unternehmen integrieren kannst.
@@ -179,7 +183,7 @@ Die Fähigkeiten von Logto basieren auf vier zentralen Säulen, die das Fundamen
label: 'Endbenutzer-Erfahrung',
href: '/end-user-flows',
description:
- 'Bietet einen vollständigen Authentifizierungs-Flow (Authentication) und eine Benutzeroberfläche mit umfangreichen Anpassungsmöglichkeiten über die Logto Console und API.',
+ 'Sie bietet einen vollständigen Authentifizierungs-Flow und eine Benutzeroberfläche mit umfangreichen Anpassungsmöglichkeiten über die Logto Console und API.',
customProps: {
icon: ,
},
@@ -189,7 +193,7 @@ Die Fähigkeiten von Logto basieren auf vier zentralen Säulen, die das Fundamen
label: 'Logto API',
href: 'https://openapi.logto.io',
description:
- 'Das Backend von Logto bietet eine Suite von APIs, um verschiedene Authentifizierungs- (Authentication) und Autorisierungsfunktionen (Authorization) zu ermöglichen, einschließlich Logto Management API, Experience API und Account API.',
+ 'Das Backend von Logto bietet eine Suite von APIs, um verschiedene Authentifizierungs- und Autorisierungsfunktionen zu ermöglichen, einschließlich Logto Management API, Experience API und Account API.',
customProps: {
icon: ,
},
@@ -246,7 +250,7 @@ Die Fähigkeiten von Logto basieren auf vier zentralen Säulen, die das Fundamen
## Werde Teil unserer Community \{#join-our-community}
-Tritt dem [Logto Discord](https://discord.com/invite/UEPaF3j5e6) Server bei — eine lebendige Community für Entwickler und Unternehmen. Beteilige dich an Diskussionen, bleibe auf dem Laufenden und teile Feedback.
+Tritt dem [Logto Discord](https://discord.com/invite/UEPaF3j5e6) Server bei — einer lebendigen Community für Entwickler und Unternehmen. Beteilige dich an Diskussionen, bleibe auf dem Laufenden und teile Feedback.
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md b/i18n/de/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
index 350cfb54e1d..0875149c22d 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
+++ b/i18n/de/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
@@ -1,81 +1,87 @@
Hier ist die Liste der unterstützten Berechtigungen (Scopes) und der entsprechenden Ansprüche (Claims):
-**`openid`**
+### Standard OIDC-Berechtigungen (Scopes) {#standard-oidc-scopes}
-| Claim-Name | Typ | Beschreibung | Benötigt userinfo? |
-| ---------- | -------- | ------------------------------------------ | ------------------ |
-| sub | `string` | Der eindeutige Identifikator des Benutzers | Nein |
+**`openid`** (Standard)
-**`profile`**
+| Claim-Name | Typ | Beschreibung |
+| ---------- | -------- | ------------------------------------------ |
+| sub | `string` | Der eindeutige Identifikator des Benutzers |
-| Claim-Name | Typ | Beschreibung | Benötigt userinfo? |
-| ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------ |
-| name | `string` | Der vollständige Name des Benutzers | Nein |
-| username | `string` | Der Benutzername des Benutzers | Nein |
-| picture | `string` | URL zum Profilbild des Endbenutzers. Diese URL MUSS auf eine Bilddatei (z. B. PNG, JPEG oder GIF) verweisen und nicht auf eine Webseite, die ein Bild enthält. Beachte, dass diese URL speziell auf ein Profilfoto des Endbenutzers verweisen SOLLTE, das sich zur Darstellung des Endbenutzers eignet, und nicht auf ein beliebiges vom Endbenutzer aufgenommenes Foto. | Nein |
-| created_at | `number` | Zeitpunkt, zu dem der Endbenutzer erstellt wurde. Die Zeit wird als Anzahl der Millisekunden seit der Unix-Epoche (1970-01-01T00:00:00Z) dargestellt. | Nein |
-| updated_at | `number` | Zeitpunkt, zu dem die Informationen des Endbenutzers zuletzt aktualisiert wurden. Die Zeit wird als Anzahl der Millisekunden seit der Unix-Epoche (1970-01-01T00:00:00Z) dargestellt. | Nein |
+**`profile`** (Standard)
-Weitere [Standardansprüche](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) wie `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `website`, `gender`, `birthdate`, `zoneinfo` und `locale` werden ebenfalls im `profile`-Scope enthalten sein, ohne dass das Userinfo-Endpunkt abgefragt werden muss. Ein Unterschied zu den oben genannten Ansprüchen besteht darin, dass diese Ansprüche nur zurückgegeben werden, wenn ihre Werte nicht leer sind, während die oben genannten Ansprüche `null` zurückgeben, wenn die Werte leer sind.
+| Claim-Name | Typ | Beschreibung |
+| ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| name | `string` | Der vollständige Name des Benutzers |
+| username | `string` | Der Benutzername des Benutzers |
+| picture | `string` | URL zum Profilbild des Endbenutzers. Diese URL MUSS auf eine Bilddatei (z. B. PNG, JPEG oder GIF) verweisen und nicht auf eine Webseite, die ein Bild enthält. Beachte, dass diese URL speziell auf ein Profilfoto des Endbenutzers verweisen SOLLTE, das zur Darstellung des Endbenutzers geeignet ist, und nicht auf ein beliebiges vom Endbenutzer aufgenommenes Foto. |
+| created_at | `number` | Zeitpunkt, zu dem der Endbenutzer erstellt wurde. Die Zeit wird als Anzahl der Millisekunden seit der Unix-Epoche (1970-01-01T00:00:00Z) dargestellt. |
+| updated_at | `number` | Zeitpunkt, zu dem die Informationen des Endbenutzers zuletzt aktualisiert wurden. Die Zeit wird als Anzahl der Millisekunden seit der Unix-Epoche (1970-01-01T00:00:00Z) dargestellt. |
+
+Weitere [Standard-Ansprüche (Claims)](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) wie `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `website`, `gender`, `birthdate`, `zoneinfo` und `locale` werden ebenfalls im `profile`-Scope enthalten sein, ohne dass der userinfo-Endpunkt angefragt werden muss. Ein Unterschied zu den oben genannten Claims ist, dass diese Claims nur zurückgegeben werden, wenn ihre Werte nicht leer sind, während die oben genannten Claims `null` zurückgeben, wenn die Werte leer sind.
:::note
-Im Gegensatz zu den Standardansprüchen verwenden die Ansprüche `created_at` und `updated_at` Millisekunden anstelle von Sekunden.
+Im Gegensatz zu den Standard-Claims verwenden die Claims `created_at` und `updated_at` Millisekunden statt Sekunden.
:::
**`email`**
-| Claim-Name | Typ | Beschreibung | Benötigt userinfo? |
-| -------------- | --------- | --------------------------------------- | ------------------ |
-| email | `string` | Die E-Mail-Adresse des Benutzers | Nein |
-| email_verified | `boolean` | Ob die E-Mail-Adresse verifiziert wurde | Nein |
+| Claim-Name | Typ | Beschreibung |
+| -------------- | --------- | --------------------------------------- |
+| email | `string` | Die E-Mail-Adresse des Benutzers |
+| email_verified | `boolean` | Ob die E-Mail-Adresse verifiziert wurde |
**`phone`**
-| Claim-Name | Typ | Beschreibung | Benötigt userinfo? |
-| --------------------- | --------- | -------------------------------------- | ------------------ |
-| phone_number | `string` | Die Telefonnummer des Benutzers | Nein |
-| phone_number_verified | `boolean` | Ob die Telefonnummer verifiziert wurde | Nein |
+| Claim-Name | Typ | Beschreibung |
+| --------------------- | --------- | -------------------------------------- |
+| phone_number | `string` | Die Telefonnummer des Benutzers |
+| phone_number_verified | `boolean` | Ob die Telefonnummer verifiziert wurde |
**`address`**
-Bitte siehe [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#AddressClaim) für Details zum Address-Anspruch.
+Bitte siehe [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#AddressClaim) für Details zum Address-Claim.
+
+:::info
+Scopes, die mit **(Standard)** gekennzeichnet sind, werden immer vom Logto SDK angefordert. Claims unter den Standard-OIDC-Scopes sind immer im ID-Token enthalten, wenn der entsprechende Scope angefordert wird — sie können nicht deaktiviert werden.
+:::
+
+### Erweiterte Berechtigungen (Scopes) {#extended-scopes}
+
+Die folgenden Scopes werden von Logto erweitert und liefern Claims über den [userinfo-Endpunkt](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo). Diese Claims können auch so konfiguriert werden, dass sie direkt im ID-Token enthalten sind über Konsole > Custom JWT. Siehe [Custom ID token](/developers/custom-id-token) für weitere Details.
**`custom_data`**
-| Claim-Name | Typ | Beschreibung | Benötigt userinfo? |
-| ----------- | -------- | ----------------------------- | ------------------ |
-| custom_data | `object` | Die benutzerdefinierten Daten | Ja |
+| Claim-Name | Typ | Beschreibung | Standardmäßig im ID-Token enthalten |
+| ----------- | -------- | ----------------------------- | ----------------------------------- |
+| custom_data | `object` | Die benutzerdefinierten Daten | |
**`identities`**
-| Claim-Name | Typ | Beschreibung | Benötigt userinfo? |
-| -------------- | -------- | --------------------------------------------- | ------------------ |
-| identities | `object` | Die verknüpften Identitäten des Benutzers | Ja |
-| sso_identities | `array` | Die verknüpften SSO-Identitäten des Benutzers | Ja |
+| Claim-Name | Typ | Beschreibung | Standardmäßig im ID-Token enthalten |
+| -------------- | -------- | --------------------------------------------- | ----------------------------------- |
+| identities | `object` | Die verknüpften Identitäten des Benutzers | |
+| sso_identities | `array` | Die verknüpften SSO-Identitäten des Benutzers | |
**`roles`**
-| Claim-Name | Typ | Beschreibung | Benötigt userinfo? |
-| ---------- | ---------- | ------------------------ | ------------------ |
-| roles | `string[]` | Die Rollen des Benutzers | Nein |
+| Claim-Name | Typ | Beschreibung | Standardmäßig im ID-Token enthalten |
+| ---------- | ---------- | ------------------------ | ----------------------------------- |
+| roles | `string[]` | Die Rollen des Benutzers | ✅ |
**`urn:logto:scope:organizations`**
-| Claim-Name | Typ | Beschreibung | Benötigt userinfo? |
-| ----------------- | ---------- | --------------------------------------------------- | ------------------ |
-| organizations | `string[]` | Die Organisations-IDs, denen der Benutzer angehört | Nein |
-| organization_data | `object[]` | Die Organisationsdaten, denen der Benutzer angehört | Ja |
+| Claim-Name | Typ | Beschreibung | Standardmäßig im ID-Token enthalten |
+| ----------------- | ---------- | --------------------------------------------------- | ----------------------------------- |
+| organizations | `string[]` | Die Organisations-IDs, denen der Benutzer angehört | ✅ |
+| organization_data | `object[]` | Die Organisationsdaten, denen der Benutzer angehört | |
:::note
-Diese Organisationsansprüche können auch über das Userinfo-Endpunkt abgerufen werden, wenn ein [Opaker Token](/concepts/opaque-token) verwendet wird. Allerdings können opake Tokens nicht als Organisationstoken für den Zugriff auf organisationsspezifische Ressourcen verwendet werden. Siehe [Opaker Token und Organisationen](/concepts/opaque-token#opaque-token-and-organizations) für weitere Details.
+Diese Organisations-Claims können auch über den userinfo-Endpunkt abgerufen werden, wenn ein [opaker Token](/concepts/opaque-token) verwendet wird. Allerdings können opake Tokens nicht als Organisationstoken für den Zugriff auf organisationsspezifische Ressourcen verwendet werden. Siehe [Opaker Token und Organisationen](/concepts/opaque-token#opaque-token-and-organizations) für weitere Details.
:::
**`urn:logto:scope:organization_roles`**
-| Claim-Name | Typ | Beschreibung | Benötigt userinfo? |
-| ------------------ | ---------- | ------------------------------------------------------------------------------- | ------------------ |
-| organization_roles | `string[]` | Die Organisationsrollen des Benutzers im Format `:` | Nein |
-
----
-
-Im Hinblick auf Leistung und Datenmenge gilt: Wenn "Benötigt userinfo?" mit "Ja" angegeben ist, erscheint der Anspruch nicht im ID-Token, sondern wird in der Antwort des [Userinfo-Endpunkts](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo) zurückgegeben.
+| Claim-Name | Typ | Beschreibung | Standardmäßig im ID-Token enthalten |
+| ------------------ | ---------- | ----------------------------------------------------------------------------------------------- | ----------------------------------- |
+| organization_roles | `string[]` | Die Organisationsrollen, denen der Benutzer angehört, im Format `:` | ✅ |
diff --git a/i18n/de/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx b/i18n/de/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
index 00162d7a1eb..4bb160eee70 100644
--- a/i18n/de/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
+++ b/i18n/de/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
@@ -1,6 +1,8 @@
import ScopeClaimList from './_scope-claim-list.md';
-Logto verwendet OIDC [Berechtigungen und Ansprüche Konventionen](https://openid.net/specs/openid-connect-core-1_0.html#Claims), um die Berechtigungen und Ansprüche für das Abrufen von Benutzerinformationen aus dem ID-Token und dem OIDC userinfo endpoint zu definieren. Sowohl "Berechtigung (Scope)" als auch "Anspruch (Claim)" sind Begriffe aus den OAuth 2.0 und OpenID Connect (OIDC) Spezifikationen.
+Logto verwendet die OIDC [Scopes- und Claims-Konventionen](https://openid.net/specs/openid-connect-core-1_0.html#Claims), um die Berechtigungen (Scopes) und Ansprüche (Claims) für das Abrufen von Benutzerinformationen aus dem ID-Token (ID token) und dem OIDC userinfo-Endpunkt zu definieren. Sowohl „Berechtigung (Scope)“ als auch „Anspruch (Claim)“ sind Begriffe aus den OAuth 2.0- und OpenID Connect (OIDC)-Spezifikationen.
+
+Für Standard-OIDC-Ansprüche wird die Aufnahme in das ID-Token (ID token) strikt durch die angeforderten Berechtigungen (Scopes) bestimmt. Erweiterte Ansprüche (wie `custom_data` und `organizations`) können zusätzlich so konfiguriert werden, dass sie im ID-Token (ID token) über die Custom ID token-Einstellungen erscheinen.
{/* TODO: Remove below */}
@@ -8,13 +10,13 @@ Logto verwendet OIDC [Berechtigungen und Ansprüche Konventionen](https://openid
<>
-Kurz gesagt, wenn du eine Berechtigung anforderst, erhältst du die entsprechenden Ansprüche in den Benutzerinformationen. Zum Beispiel, wenn du die `email` Berechtigung anforderst, erhältst du die `email` und `email_verified` Daten des Benutzers.
+Kurz gesagt: Wenn du eine Berechtigung (Scope) anforderst, erhältst du die entsprechenden Ansprüche (Claims) in den Benutzerinformationen. Zum Beispiel: Wenn du die Berechtigung `email` anforderst, erhältst du die Daten `email` und `email_verified` des Benutzers.
- Standardmäßig fordert das Logto SDK immer drei Berechtigungen an: `openid`, `profile` und
- `offline_access`, und es gibt keine Möglichkeit, diese Standardberechtigungen zu entfernen. Aber
- du kannst weitere Berechtigungen hinzufügen, wenn du Logto konfigurierst:
+ Standardmäßig fordert das Logto SDK immer drei Berechtigungen (Scopes) an: `openid`, `profile` und
+ `offline_access`. Es gibt keine Möglichkeit, diese Standardberechtigungen zu entfernen. Du kannst
+ jedoch beim Konfigurieren von Logto weitere Berechtigungen hinzufügen:
{props.configScopesCode}
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/developers/README.mdx b/i18n/es/docusaurus-plugin-content-docs/current/developers/README.mdx
index 20b290c1fa8..94804161033 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/developers/README.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/developers/README.mdx
@@ -1,8 +1,8 @@
# Desarrollador
-Logto es un servicio de [gestión de identidad y acceso (IAM)](https://auth.wiki/iam) basado en los protocolos [OAuth 2](https://auth.wiki/oauth-2.0) y [OIDC](https://auth.wiki/openid-connect). Los servicios IAM como Logto suelen servir como la base para otros servicios web; varios estados de autorización dentro de esos servicios web se ven directamente afectados por Logto.
+Logto es un servicio de [gestión de identidad y acceso (IAM)](https://auth.wiki/iam) basado en los protocolos [OAuth 2](https://auth.wiki/oauth-2.0) y [OIDC](https://auth.wiki/openid-connect). Los servicios IAM como Logto suelen servir como base para otros servicios web; varios estados de autorización dentro de esos servicios web se ven directamente afectados por Logto.
-Para brindar comodidad a nuestros usuarios, Logto ofrece una serie de funciones comunes para desarrolladores.
+Para brindar comodidad a nuestros usuarios, Logto ofrece una serie de funciones de uso común para desarrolladores.
## Relacionadas con la experiencia de inicio de sesión \{#sign-in-experience-related}
@@ -19,18 +19,27 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
items={[
{
type: 'link',
- label: 'Reclamos personalizados de token',
+ label: 'Token de acceso personalizado',
href: '/developers/custom-token-claims',
- description: 'Expande las capacidades del control de acceso adjuntando reclamos adicionales (claims), lo que puede ayudar a lograr ABAC o rechazar la emisión de tokens.',
+ description: 'Utiliza scripts personalizados para adjuntar reclamos adicionales a los tokens de acceso (Access tokens), habilitando ABAC o rechazando la emisión del token.',
customProps: {
icon: ,
}
},
{
type: 'link',
- label: 'Suplantación de usuario (User impersonation)',
+ label: 'Token de ID personalizado',
+ href: '/developers/custom-id-token',
+ description: 'Controla qué reclamos extendidos se incluyen en los tokens de ID (ID tokens), siguiendo la especificación OIDC.',
+ customProps: {
+ icon: ,
+ }
+ },
+ {
+ type: 'link',
+ label: 'Suplantación de usuario',
href: '/developers/user-impersonation',
- description: 'Permite a los usuarios autorizados actuar temporalmente en nombre de los usuarios finales, útil para la resolución de problemas, soporte al cliente y tareas administrativas.',
+ description: 'Permite que los usuarios autorizados actúen temporalmente en nombre de los usuarios finales, útil para la resolución de problemas, soporte al cliente y tareas administrativas.',
customProps: {
icon: ,
}
@@ -48,7 +57,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: 'Claves de firma',
href: '/developers/signing-keys',
- description: 'Proporciona una clave de firma a nivel de sistema; a través del almacén de contraseñas, hace que el servicio de autenticación sea más seguro.',
+ description: 'Proporciona una clave de firma a nivel de sistema, a través del almacén de contraseñas, haciendo que el servicio de autenticación sea más seguro.',
customProps: {
icon: ,
}
@@ -57,7 +66,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: 'Webhooks',
href: '/developers/webhooks',
- description: 'Los webhooks permiten notificaciones en tiempo real sobre información de usuario y actualizaciones de permisos mediante solicitudes HTTP, mejorando la comodidad y flexibilidad de la integración con Logto.',
+ description: 'Los webhooks permiten notificaciones en tiempo real sobre información de usuario y actualizaciones de permisos a través de solicitudes HTTP, mejorando la comodidad y flexibilidad de la integración con Logto.',
customProps: {
icon: ,
}
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx b/i18n/es/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
index 56b97454a53..cbf71714abd 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
@@ -1,20 +1,20 @@
---
-sidebar_position: 6
+sidebar_position: 7
---
# Registros de auditoría
-El registro de auditoría de Logto te permite monitorear fácilmente la actividad y los eventos de los usuarios. Proporciona una base sólida para diversos escenarios empresariales de gestión de usuarios y verificación de salud.
+El registro de auditoría de Logto te permite monitorear fácilmente la actividad y los eventos de los usuarios. Proporciona una base sólida para diversos escenarios empresariales de gestión de usuarios y verificación de estado.
## Ver todos los registros \{#view-all-logs}
Navega a Consola > Registros de auditoría. Logto captura y organiza los eventos de autenticación en una tabla. Realiza un seguimiento del nombre del evento, usuario, aplicación y marca de tiempo. Puedes acotar los resultados filtrando por el nombre del evento y el nombre de la aplicación. Al hacer clic en un evento específico, se mostrarán detalles adicionales.
:::warning
-Los registros de auditoría solo contienen registros que ocurren durante el proceso de autenticación de usuario; los registros de operaciones de Management API no se registran.
+Los registros de auditoría solo contienen los registros que ocurren durante el proceso de autenticación de usuario; no se registran los registros de operaciones de Management API.
:::
-## Captura la actividad del usuario a nivel de inquilino \{#capture-user-activity-at-the-tenant-level}
+## Captura la actividad del usuario a nivel de tenant \{#capture-user-activity-at-the-tenant-level}
Los registros de Logto ofrecen detalles completos, garantizando facilidad de acción y seguridad para el cliente. Capturan y registran la siguiente información:
@@ -26,7 +26,7 @@ Los registros de Logto ofrecen detalles completos, garantizando facilidad de acc
- Marca de tiempo
- User-agent
-Al mantener estos registros de eventos, las organizaciones pueden detectar eficazmente posibles riesgos de seguridad y abordarlos rápidamente para prevenir accesos no autorizados al sistema.
+Al mantener estos registros de eventos, las organizaciones pueden detectar eficazmente posibles riesgos de seguridad y abordarlos rápidamente para evitar accesos no autorizados al sistema.
B{Alcances solicitados}
+ B --> C[Alcances estándar de OIDC]
+ B --> D[Alcances extendidos]
+ C --> E[Reclamos estándar incluidos en el token de ID]
+ D --> F{¿Interruptor habilitado en la consola?}
+ F -->|Sí| G[Reclamos extendidos incluidos en el token de ID]
+ F -->|No| H[Reclamos no incluidos]
+```
+
+## Reclamos estándar de OIDC \{#standard-oidc-claims}
+
+Los reclamos estándar están completamente gobernados por la especificación OIDC. Su inclusión en el token de ID depende únicamente de los alcances que tu aplicación solicite durante la autenticación. Logto no proporciona ninguna opción para deshabilitar o excluir selectivamente reclamos estándar individuales.
+
+La siguiente tabla muestra la relación entre los alcances estándar y sus reclamos correspondientes:
+
+| Alcance | Reclamos |
+| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `openid` | `sub` |
+| `profile` | `name`, `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `picture`, `website`, `gender`, `birthdate`, `zoneinfo`, `locale`, `updated_at` |
+| `email` | `email`, `email_verified` |
+| `phone` | `phone_number`, `phone_number_verified` |
+| `address` | `address` |
+
+Por ejemplo, si tu aplicación solicita los alcances `openid profile email`, el token de ID incluirá todos los reclamos de los alcances `openid`, `profile` y `email`.
+
+## Reclamos extendidos \{#extended-claims}
+
+Más allá de los reclamos estándar de OIDC, Logto extiende reclamos adicionales que transportan información de identidad específica del ecosistema Logto. Estos reclamos extendidos siguen un **modelo de doble condición** para ser incluidos en el token de ID:
+
+1. **Condición de alcance**: La aplicación debe solicitar el alcance correspondiente durante la autenticación.
+2. **Interruptor en la consola**: El administrador debe habilitar la inclusión del reclamo en el token de ID a través de Logto Console.
+
+Ambas condiciones deben cumplirse simultáneamente. El alcance sirve como declaración de acceso a nivel de protocolo, mientras que el interruptor sirve como control de exposición a nivel de producto: sus responsabilidades son claras y no sustituibles.
+
+### Alcances y reclamos extendidos disponibles \{#available-extended-scopes-and-claims}
+
+| Alcance | Reclamos | Descripción | Incluido por defecto |
+| ------------------------------------ | ------------------------------ | -------------------------------------------------------- | -------------------- |
+| `custom_data` | `custom_data` | Datos personalizados almacenados en el objeto de usuario | |
+| `identities` | `identities`, `sso_identities` | Identidades sociales y SSO vinculadas del usuario | |
+| `roles` | `roles` | Roles asignados al usuario | ✅ |
+| `urn:logto:scope:organizations` | `organizations` | IDs de las organizaciones del usuario | ✅ |
+| `urn:logto:scope:organizations` | `organization_data` | Datos de la organización del usuario | |
+| `urn:logto:scope:organization_roles` | `organization_roles` | Asignaciones de roles de organización del usuario | ✅ |
+
+### Configuración en Logto Console \{#configure-in-logto-console}
+
+Para habilitar reclamos extendidos en el token de ID:
+
+1. Ve a Console > Custom JWT.
+2. Activa los reclamos que deseas incluir en el token de ID.
+3. Asegúrate de que tu aplicación solicite los alcances correspondientes durante la autenticación.
+
+## Recursos relacionados \{#related-resources}
+
+Token de acceso personalizado
+
+
+ OpenID Connect Core - Token de ID
+
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx b/i18n/es/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
index a0232dc61d6..9656e36e36f 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
@@ -2,26 +2,26 @@
sidebar_position: 2
---
-# Reclamos personalizados de token
+# Token de acceso personalizado
Logto proporciona la flexibilidad de añadir reclamos personalizados dentro de los tokens de acceso (JWT / Token opaco (Opaque token)). Con esta función, puedes incluir información adicional para tu lógica de negocio, todo transmitido de forma segura en los tokens y recuperable mediante introspección en el caso de los tokens opacos.
## Introducción \{#introduction}
-Los [tokens de acceso (Access tokens)](https://auth.wiki/access-token) juegan un papel fundamental en el proceso de autenticación (Authentication) y autorización (Authorization), transportando la información de identidad y permisos del sujeto, y se transmiten entre el [servidor Logto](/concepts/core-service) (sirve como servidor de autenticación o proveedor de identidad, IdP), tu servidor de servicios web (proveedor de recursos), y las aplicaciones cliente (clientes).
+Los [tokens de acceso (Access tokens)](https://auth.wiki/access-token) juegan un papel fundamental en el proceso de autenticación (Autenticación) y autorización (Autorización), transportando la información de identidad y permisos del sujeto, y se pasan entre el [servidor Logto](/concepts/core-service) (sirve como servidor de autenticación o proveedor de identidad, IdP), tu servidor de servicios web (proveedor de recursos), y las aplicaciones cliente (clientes).
Los [reclamos de token (Token claims)](https://auth.wiki/claim) son los pares clave-valor que proporcionan información sobre una entidad o el propio token. Los reclamos pueden incluir información del usuario, tiempo de expiración del token, permisos y otros metadatos relevantes para el proceso de autenticación (Authentication) y autorización (Authorization).
Hay dos tipos de tokens de acceso en Logto:
-- **JSON Web Token:** [JSON Web Token (JWT)](https://auth.wiki/jwt) es un formato popular que codifica los reclamos de manera segura y legible por los clientes. Reclamos comunes como `sub`, `iss`, `aud`, etc., se utilizan en línea con el protocolo OAuth 2.0 (Consulta [este enlace](https://datatracker.ietf.org/doc/html/rfc7519#section-4) para más detalles). Los JWT permiten a los consumidores acceder directamente a los reclamos sin pasos de validación adicionales. En Logto, los tokens de acceso se emiten en formato JWT por defecto cuando un cliente inicia solicitudes de autorización de recursos o organizaciones específicas.
-- **Token opaco (Opaque token):** Un [token opaco (opaque token)](http://localhost:3000/concepts/opaque-token) no es autocontenido y siempre requiere un paso de validación adicional a través del endpoint de [introspección de token (token introspection)](https://auth.wiki/token-introspection). A pesar de su formato no transparente, los tokens opacos pueden ayudar a obtener reclamos y transmitirse de forma segura entre las partes. Los reclamos de token se almacenan de forma segura en el servidor Logto y son accedidos por las aplicaciones cliente a través del endpoint de introspección de token. Los tokens de acceso se emiten en formato opaco cuando no se incluye un recurso u organización específica en la solicitud de autorización. Estos tokens se utilizan principalmente para acceder al endpoint OIDC `userinfo` y otros propósitos generales.
+- **JSON Web Token:** [JSON Web Token (JWT)](https://auth.wiki/jwt) es un formato popular que codifica los reclamos de una manera que es segura y legible por los clientes. Reclamos comunes como `sub`, `iss`, `aud`, etc., se utilizan en línea con el protocolo OAuth 2.0 (Consulta [este enlace](https://datatracker.ietf.org/doc/html/rfc7519#section-4) para más detalles). Los JWT permiten a los consumidores acceder directamente a los reclamos sin pasos de validación adicionales. En Logto, los tokens de acceso se emiten en formato JWT por defecto cuando un cliente inicia solicitudes de autorización de recursos u organizaciones específicas.
+- **Token opaco (Opaque token):** Un [token opaco](http://localhost:3000/concepts/opaque-token) no es autocontenido y siempre requiere un paso de validación adicional a través del endpoint de [introspección de token](https://auth.wiki/token-introspection). A pesar de su formato no transparente, los tokens opacos pueden ayudar a obtener reclamos y ser transmitidos de forma segura entre las partes. Los reclamos de token se almacenan de forma segura en el servidor Logto y son accedidos por las aplicaciones cliente a través del endpoint de introspección de token. Los tokens de acceso se emiten en formato opaco cuando no se incluye un recurso u organización específica en la solicitud de autorización. Estos tokens se utilizan principalmente para acceder al endpoint OIDC `userinfo` y otros propósitos generales.
En muchos casos, los reclamos estándar no son suficientes para satisfacer las necesidades específicas de tus aplicaciones, ya sea que utilices JWT o tokens opacos. Para abordar esto, Logto proporciona la flexibilidad de añadir reclamos personalizados dentro de los tokens de acceso. Con esta función, puedes incluir información adicional para tu lógica de negocio, todo transmitido de forma segura en los tokens y recuperable mediante introspección en el caso de los tokens opacos.
## ¿Cómo funcionan los reclamos personalizados de token? \{#how-do-custom-token-claims-work}
-Logto te permite insertar reclamos personalizados en el `token de acceso (access token)` a través de una función de callback `getCustomJwtClaims`. Puedes proporcionar tu propia implementación de la función `getCustomJwtClaims` para devolver un objeto de reclamos personalizados. El valor de retorno se fusionará con la carga útil original del token y se firmará para generar el token de acceso final.
+Logto te permite insertar reclamos personalizados en el `token de acceso` a través de una función de callback `getCustomJwtClaims`. Puedes proporcionar tu implementación de la función `getCustomJwtClaims` para devolver un objeto de reclamos personalizados. El valor de retorno se fusionará con la carga útil original del token y se firmará para generar el token de acceso final.
```mermaid
sequenceDiagram
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx b/i18n/es/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
index dce3a652bf8..adcac0bb162 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
@@ -5,9 +5,9 @@ sidebar_label: Casos de uso comunes
sidebar_position: 2
---
-# Casos de uso comunes (Common use cases)
+# Casos de uso comunes
-En esta sección, proporcionaremos algunos ejemplos para ayudarte a entender escenarios donde las [reclamaciones personalizadas de token](/developers/custom-token-claims) pueden ser útiles, ofreciéndote algunas referencias. De esta manera, cuando enfrentes dificultades en la gestión de acceso, podrás evaluar si las reclamaciones personalizadas de token pueden brindarte comodidad.
+En esta sección, te proporcionaremos algunos ejemplos para ayudarte a comprender escenarios donde [reclamos personalizados en el token de acceso](/developers/custom-token-claims) pueden ser útiles, ofreciéndote algunas referencias. De esta manera, cuando enfrentes dificultades en la gestión de accesos, podrás evaluar si los reclamos personalizados en el token de acceso pueden brindarte comodidad.
## Hacer posible el control de acceso basado en atributos (ABAC) \{#make-attribute-based-access-control-abac-possible}
@@ -15,26 +15,26 @@ En esta sección, proporcionaremos algunos ejemplos para ayudarte a entender esc
Supón que estás desarrollando una aplicación, y el lanzamiento de la app se divide en dos fases: beta pública y lanzamiento oficial. Incluso después del lanzamiento oficial de la app, quieres que los usuarios antiguos que participaron en la beta pública sigan usando las funciones de pago.
-Después del lanzamiento oficial de la app, utilizas la función de [control de acceso basado en roles (RBAC)](/authorization/role-based-access-control) de Logto para implementar el control de acceso al uso de funciones de pago. Para comprobar fácilmente si un usuario ya estaba usando la app durante la fase beta pública, puedes usar el método `getCustomJwtClaims()` para añadir una reclamación `createdAt` en la carga útil del token.
+Después del lanzamiento oficial de la app, utilizas la función de [control de acceso basado en roles (RBAC)](/authorization/role-based-access-control) de Logto para implementar el control de acceso al uso de funciones de pago. Para comprobar fácilmente si un usuario ya usaba la app durante la fase beta pública, puedes usar el método `getCustomJwtClaims()` para añadir un reclamo `createdAt` en la carga útil del token.
Luego, al realizar el control de acceso en tus APIs protegidas, necesitas permitir tokens de acceso que cumplan cualquiera de las siguientes condiciones:
1. Con el contexto de RBAC, tener el alcance para acceder a recursos de pago.
2. Que el `createdAt` sea anterior al final de la fase beta pública.
-Si no existiera la función de reclamaciones personalizadas de token, al verificar permisos para la [autorización (Authorization)](/authorization), sería necesario llamar a la Management API de Logto para comprobar si el usuario con el token de acceso actual tiene los permisos correspondientes al rol requerido por un determinado recurso de API.
+Si no existiera la función de reclamos personalizados en el token, al verificar permisos para la [autorización](/authorization), sería necesario llamar a la Management API de Logto para comprobar si el usuario con el token de acceso actual tiene los permisos correspondientes al rol requerido por un determinado recurso de API.
-En un escenario similar, supón que tu app muestra felicitaciones de cumpleaños en la página de inicio de sesión si se acerca el cumpleaños del usuario. Puedes usar reclamaciones personalizadas de token para añadir un campo de cumpleaños en la [carga útil del token](/user-management/personal-access-token#example-token-exchange), que puede usarse para determinar si mostrar un mensaje específico.
+En un escenario similar, supón que tu app muestra felicitaciones de cumpleaños en la página de inicio de sesión si se acerca el cumpleaños del usuario. Puedes usar reclamos personalizados en el token para añadir un campo de cumpleaños en la [carga útil del token](/user-management/personal-access-token#example-token-exchange), que puede usarse para determinar si mostrar un mensaje específico.
## Bloquear manualmente la emisión de tokens \{#manually-block-token-issuance}
Supón que Joe dirige un juego en línea y utiliza Logto como sistema de [gestión de identidad y acceso (IAM)](https://auth.wiki/iam).
-Imagina que este juego requiere recargas para comprar tiempo de juego. Joe registra el saldo de cada usuario en su servicio de juego y lo descuenta continuamente a medida que se acumula el tiempo de juego. Joe quiere forzar que los jugadores cierren sesión cuando su saldo se agote para animarlos a recargar.
+Supón que este juego requiere recargas para comprar tiempo de juego. Joe registra el saldo de cada usuario en su servicio de juego y lo descuenta continuamente a medida que se acumula el tiempo de juego. Joe quiere forzar a los jugadores a cerrar sesión cuando su saldo se agote para animarlos a recargar.
-En este punto, Joe también puede usar la función de reclamaciones personalizadas de token que proporciona Logto para lograr esto:
+En este punto, Joe también puede usar la función de reclamos personalizados en el token proporcionada por Logto para lograr esto:
1. En el script, se puede usar una llamada a una API externa [obtener datos externos](/developers/custom-token-claims/create-script/#step-3-fetch-external-data) para recuperar el saldo actual del jugador desde el servidor de juegos de Joe.
2. Si el saldo es menor o igual a 0, se puede usar el método [`api.denyAccess()`](/developers/custom-token-claims/create-script/#api) para bloquear la emisión del token.
-En este momento, como no se puede obtener un nuevo token de acceso válido, el jugador será forzado a cerrar sesión en el juego.
+En este momento, como no se puede obtener un nuevo token de acceso válido, el jugador será forzado a cerrar sesión del juego.
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx b/i18n/es/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
index b811d5dba1a..3f528f6d399 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
@@ -1,19 +1,19 @@
---
id: create-script
-title: Crear un script de reclamos personalizados de token
-sidebar_label: Crear un script de reclamos personalizados de token
+title: Crear un script personalizado de token de acceso
+sidebar_label: Crear un script personalizado de token de acceso
sidebar_position: 3
---
-# Crear un script de reclamos personalizados de token
+# Crear un script personalizado de token de acceso
Para [añadir reclamos personalizados](/developers/custom-token-claims) al [token de acceso (Access token)](https://auth.wiki/access-token), necesitas proporcionar un script que devuelva un objeto que contenga esos reclamos. El script debe estar escrito como una función de `JavaScript` que retorne un objeto con los reclamos personalizados.
1. Navega a Consola > JWT personalizado.
2. Hay dos tipos diferentes de tokens de acceso para los que puedes personalizar los reclamos del token de acceso:
- - **Token de acceso de usuario**: El token de acceso emitido para usuarios finales. Por ejemplo, para aplicaciones web o aplicaciones móviles.
- - **Token de acceso máquina a máquina**: El token de acceso emitido para servicios o aplicaciones. Por ejemplo, para [aplicaciones máquina a máquina](/quick-starts/m2m).
+ - **Token de acceso de usuario**: El token de acceso emitido para los usuarios finales. Por ejemplo, para aplicaciones web o aplicaciones móviles.
+ - **Token de acceso máquina a máquina**: El token de acceso emitido para los servicios o aplicaciones. Por ejemplo, para [aplicaciones máquina a máquina](/quick-starts/m2m).
Diferentes tipos de tokens de acceso pueden tener diferentes contextos de carga útil del token. Puedes personalizar los reclamos del token para cada tipo de token de acceso por separado.
@@ -29,7 +29,7 @@ La función de reclamos personalizados de token solo está disponible para:
## Implementar la función `getCustomJwtClaims()` \{#implement-getcustomjwtclaims-function}
-En la página de detalles de **JWT personalizado**, puedes encontrar el editor de scripts para escribir tu script de reclamos personalizados de token. El script debe ser una función de `JavaScript` que devuelva un objeto de reclamos personalizados.
+En la página de detalles de **JWT personalizado**, puedes encontrar el editor de scripts para escribir tu script de reclamos personalizados de token. El script debe ser una función de `JavaScript` que retorne un objeto de reclamos personalizados.
{
@@ -49,7 +49,7 @@ const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
Este editor utiliza el servidor de lenguaje JavaScript para proporcionar resaltado de sintaxis básico, autocompletado de código y verificación de errores. El parámetro de entrada está bien tipado y documentado en estilo jsDoc. Puedes usar IntelliSense del editor para acceder correctamente a las propiedades del objeto de entrada. Puedes encontrar las definiciones detalladas de los parámetros en el lado derecho de la página.
:::note
-Esta función se exportará como un módulo. Asegúrate de mantener el nombre de la función como `getCustomJwtClaims` para que el módulo pueda exportar la función correctamente.
+Esta función será exportada como un módulo. Asegúrate de mantener el nombre de la función como `getCustomJwtClaims` para que el módulo pueda exportar la función correctamente.
:::
## Paso 2: Parámetros de entrada \{#step-2-input-parameters}
@@ -66,10 +66,10 @@ Puedes encontrar la definición de tipo detallada del objeto de carga útil del
| Propiedad | Descripción | Tipo |
| -------------------- | ------------------------------------------------ | ------------- |
| `jti` | El identificador único del JWT | `string` |
- | `aud` | La audiencia (Audience) del token | `string` |
- | `scope` | Los alcances (Scopes) del token | `string` |
+ | `aud` | La audiencia del token | `string` |
+ | `scope` | Los alcances del token | `string` |
| `clientId` | El id del cliente del token | `string` |
- | `accountId` | El id de usuario del token | `string` |
+ | `accountId` | El id del usuario del token | `string` |
| `expiresWithSession` | Si el token expirará con la sesión | `boolean` |
| `grantId` | El id de concesión de autenticación actual del token | `string` |
| `gty` | El tipo de concesión del token | `string` |
@@ -78,21 +78,21 @@ Puedes encontrar la definición de tipo detallada del objeto de carga útil del
| Propiedad | Descripción | Tipo |
| ---------- | -------------------------- | ------------------- |
| `jti` | El identificador único del JWT | `string` |
- | `aud` | La audiencia (Audience) del token | `string` |
- | `scope` | Los alcances (Scopes) del token | `string` |
+ | `aud` | La audiencia del token | `string` |
+ | `scope` | Los alcances del token | `string` |
| `clientId` | El id del cliente del token | `string` |
| `kind` | El tipo de token | `ClientCredentials` |
### context (Solo disponible para token de acceso de usuario) \{#context-only-available-for-user-access-token}
-El objeto de contexto contiene los datos del usuario y los datos de la concesión relevantes para el proceso de autorización (Authorization) actual.
+El objeto de contexto contiene los datos del usuario y los datos de la concesión relevantes para el proceso actual de autorización (Authorization).
- **Objeto de datos de usuario**
- Para el token de acceso de usuario, Logto proporciona un contexto adicional de datos de usuario para que puedas acceder. El objeto de datos de usuario contiene todos los datos del perfil del usuario y los datos de membresía de organización (Organization) que puedas necesitar para configurar los reclamos personalizados. Consulta [Usuarios](/user-management/user-data) y [Organizaciones](/organizations/organization-management#organization-data-structure) para más detalles.
+ Para el token de acceso de usuario, Logto proporciona un contexto adicional de datos de usuario para que puedas acceder. El objeto de datos de usuario contiene todos los datos del perfil de usuario y datos de membresía de organización que puedas necesitar para configurar los reclamos personalizados. Consulta [Usuarios](/user-management/user-data) y [Organizaciones](/organizations/organization-management#organization-data-structure) para más detalles.
- **Objeto de datos de concesión**
Para el token de acceso de usuario concedido por intercambio de token de suplantación, Logto proporciona un contexto adicional de datos de concesión para que puedas acceder. El objeto de datos de concesión contiene el contexto personalizado del token de sujeto. Consulta [Suplantación de usuario](/developers/user-impersonation) para más detalles.
- **Objeto de datos de interacción de usuario**
- Para un token de acceso de usuario dado, puede haber casos en los que necesites acceder a los detalles de interacción del usuario para la sesión de autorización (Authorization) actual. Por ejemplo, podrías necesitar recuperar la identidad de SSO empresarial utilizada por el usuario para iniciar sesión. Este objeto de datos de interacción de usuario contiene los datos de interacción más recientes enviados por el usuario, incluyendo:
+ Para un token de acceso de usuario dado, puede haber instancias donde necesites acceder a los detalles de interacción del usuario para la sesión de autorización actual. Por ejemplo, podrías necesitar recuperar la identidad de SSO empresarial del usuario utilizada para iniciar sesión. Este objeto de datos de interacción de usuario contiene los datos de interacción más recientes enviados por el usuario, incluyendo:
| Propiedad | Descripción | Tipo |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
@@ -225,16 +225,16 @@ El objeto de contexto contiene los datos del usuario y los datos de la concesió
```
:::note
- Puede haber múltiples registros de verificación en el objeto de datos de interacción de usuario, especialmente cuando el usuario ha pasado por varios procesos de inicio de sesión o registro.
+ Puede haber múltiples registros de verificación en el objeto de datos de interacción de usuario, especialmente cuando el usuario ha pasado por múltiples procesos de inicio de sesión o registro.
- Por ejemplo, el usuario ha iniciado sesión usando un registro de verificación `Social`, luego ha vinculado una nueva dirección de correo electrónico mediante un registro de verificación `EmailVerificationCode`, y luego ha verificado el estado de MFA con un registro de verificación `Totp`. En este caso, es posible que debas manejar todos los registros de verificación en tu script.
+ Por ejemplo, el usuario ha iniciado sesión usando un registro de verificación `Social`, luego ha vinculado una nueva dirección de correo electrónico mediante un registro de verificación `EmailVerificationCode`, y luego ha verificado el estado de MFA con un registro de verificación `Totp`. En este caso, es posible que debas manejar todos los registros de verificación en consecuencia en tu script.
Cada tipo de registro de verificación solo estará presente una vez en el objeto de datos de interacción de usuario.
:::
### environmentVariables \{#environmentvariables}
-Utiliza la sección **Configurar variables de entorno** en la parte derecha para configurar las variables de entorno para tu script. Puedes usar estas variables para almacenar información sensible o datos de configuración que no quieras codificar directamente en el script, por ejemplo, claves de API, secretos o URLs.
+Utiliza la sección **Configurar variables de entorno** en la derecha para configurar las variables de entorno para tu script. Puedes usar estas variables para almacenar información sensible o datos de configuración que no quieras codificar directamente en el script. Por ejemplo, claves de API, secretos o URLs.
Todas las variables de entorno que configures aquí estarán disponibles en el script. Usa el objeto `environmentVariables` en el parámetro de entrada para acceder a estas variables.
@@ -273,17 +273,17 @@ Ten en cuenta que cualquier obtención de datos externos puede introducir latenc
Además:
-- Maneja correctamente los errores y los tiempos de espera en tu script para evitar que el proceso de emisión del token se bloquee.
+- Maneja correctamente los errores y el tiempo de espera en tu script para evitar que el proceso de emisión del token se bloquee.
- Usa encabezados de autorización adecuados para proteger tu API externa de accesos no autorizados.
:::
## Paso 4: Probar el script \{#step-4-test-the-script}
-Asegúrate de probar tu script antes de guardarlo. Haz clic en la pestaña **Contexto de prueba** en el lado derecho de la página para modificar la carga útil simulada del token y el contexto de datos de usuario para las pruebas.
+Asegúrate de probar tu script antes de guardarlo. Haz clic en la pestaña **Contexto de prueba** en el lado derecho de la página para modificar la carga útil simulada del token y el contexto de datos de usuario para pruebas.
Haz clic en **Ejecutar prueba** en la esquina superior derecha del editor para ejecutar el script con los datos simulados. El resultado del script se mostrará en el panel **Resultado de la prueba**.
-
+
:::note
El resultado de la prueba es la salida de la función `getCustomJwtClaims` con los datos simulados que configures ("reclamos extra del token" obtenidos después de completar el paso 3 en [el diagrama de secuencia](/developers/custom-token-claims/#how-do-custom-token-claims-work)). La carga útil real del token y el contexto de datos de usuario serán diferentes cuando el script se ejecute en el proceso de emisión del token.
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx b/i18n/es/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
index cd868d44c78..a2dece4833f 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
@@ -1,36 +1,38 @@
---
id: sdk-conventions
-title: Convenciones del SDK de plataforma
-sidebar_label: Convenciones del SDK de plataforma
-sidebar_position: 7
+title: Convenciones de SDK de plataforma
+sidebar_label: Convenciones de SDK de plataforma
+sidebar_position: 8
---
-# Convenciones del SDK de plataforma
+# Convenciones de SDK de plataforma
-Logto proporciona un servicio de autenticación web muy poderoso y flexible.
+Logto ofrece un servicio de autenticación web muy potente y flexible.
En el uso práctico de los servicios de Logto, por conveniencia, a menudo es necesario que los desarrolladores integren el SDK de Logto en sus propias aplicaciones cliente para gestionar el estado de inicio de sesión del usuario, permisos y más.
Puedes encontrar SDKs para todos los lenguajes de programación / frameworks compatibles con Logto [aquí](/quick-starts).
-Si tienes mala suerte y no encuentras el SDK que deseas, aquí hay una convención que puedes seguir para implementar el SDK para tu lenguaje de programación deseado, facilitando el uso de los servicios de Logto.
+Si tienes la mala suerte de no encontrar el SDK que deseas, aquí tienes una convención que puedes seguir para implementar el SDK para tu lenguaje de programación preferido, facilitando el uso de los servicios de Logto.
Esta convención contiene tres partes principales:
Estrategia de diseño
-Convención del SDK central
+Convención principal de SDK
- Convención del SDK de plataforma
+ Convención de SDK de plataforma
## Recursos relacionados \{#related-resources}
- Implementar un SDK OIDC simple del lado del cliente
+ Implementa un SDK OIDC simple del lado del cliente
- Crear un SDK basado en Node.js para Logto en minutos
+ Creando un SDK basado en Node.js para Logto en minutos
-Crear un SDK web para Logto en minutos
+
+ Creando un SDK web para Logto en minutos
+
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx b/i18n/es/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
index f5a28548d38..92e54ddba59 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
@@ -2,14 +2,14 @@
id: signing-keys
title: Claves de firma
sidebar_label: Claves de firma
-sidebar_position: 4
+sidebar_position: 5
---
# Claves de firma
-Las [claves de firma OIDC](https://auth.wiki/signing-key) de Logto, también conocidas como "claves privadas OIDC" y "claves de cookie OIDC", son las claves de firma utilizadas para firmar JWTs ([tokens de acceso (Access tokens)](https://auth.wiki/access-token) y [tokens de ID (ID tokens)](https://auth.wiki/id-token)) y cookies del navegador en las [sesiones de inicio de sesión](/end-user-flows/sign-out#sign-in-session) de Logto. Estas claves de firma se generan al inicializar la base de datos de Logto ([open-source](/logto-oss)) o al crear un nuevo tenant ([Cloud](/logto-cloud)) y pueden ser gestionadas a través de la [CLI](/logto-oss/using-cli) (open-source), Management APIs o la interfaz de usuario de la consola.
+Las [claves de firma OIDC](https://auth.wiki/signing-key) de Logto, también conocidas como "claves privadas OIDC" y "claves de cookie OIDC", son las claves de firma utilizadas para firmar JWTs ([tokens de acceso (Access tokens)](https://auth.wiki/access-token) y [tokens de ID (ID tokens)](https://auth.wiki/id-token)) y cookies del navegador en las [sesiones de inicio de sesión](/end-user-flows/sign-out#sign-in-session) de Logto. Estas claves de firma se generan al inicializar la base de datos de Logto ([open-source](/logto-oss)) o al crear un nuevo tenant ([Cloud](/logto-cloud)) y pueden gestionarse a través de la [CLI](/logto-oss/using-cli) (open-source), Management APIs o la interfaz de la Consola.
-Por defecto, Logto utiliza el algoritmo de curva elíptica (EC) para generar firmas digitales. Sin embargo, considerando que los usuarios a menudo necesitan verificar firmas de JWT y muchas herramientas antiguas no admiten el algoritmo EC (solo admiten RSA), hemos implementado la funcionalidad para rotar claves privadas y permitir a los usuarios elegir el algoritmo de firma (incluyendo tanto RSA como EC). Esto garantiza la compatibilidad con servicios que utilizan herramientas de verificación de firmas obsoletas.
+Por defecto, Logto utiliza el algoritmo de curva elíptica (EC) para generar firmas digitales. Sin embargo, considerando que los usuarios a menudo necesitan verificar firmas de JWT y muchas herramientas antiguas no admiten el algoritmo EC (solo admiten RSA), hemos implementado la funcionalidad para rotar claves privadas y permitir a los usuarios elegir el algoritmo de firma (incluyendo tanto RSA como EC). Esto garantiza la compatibilidad con servicios que utilizan herramientas de verificación de firmas desactualizadas.
:::note
Teóricamente, las claves de firma no deberían filtrarse y no tienen un tiempo de expiración, lo que significa que no es necesario rotarlas. Sin embargo, rotar periódicamente la clave de firma después de cierto tiempo puede mejorar la seguridad.
@@ -18,22 +18,22 @@ Teóricamente, las claves de firma no deberían filtrarse y no tienen un tiempo
## ¿Cómo funciona? \{#how-it-works}
- **Clave privada OIDC**
- Al inicializar una instancia de Logto, se genera automáticamente un par de clave pública y clave privada, que se registran en el proveedor OIDC subyacente. Así, cuando Logto emite un nuevo JWT (token de acceso o token de ID), el token se firma con la clave privada. Al mismo tiempo, cualquier aplicación cliente que reciba un JWT puede usar la clave pública emparejada para verificar la firma del token, con el fin de asegurar que el token no ha sido manipulado por terceros. La clave privada está protegida en el servidor de Logto. La clave pública, como su nombre indica, es pública para todos y se puede acceder a través de la interfaz `/oidc/jwks` del endpoint OIDC. Se puede especificar un algoritmo de clave de firma al generar la clave privada, y Logto utiliza el algoritmo EC (Curva Elíptica) por defecto. Los usuarios administradores pueden cambiar el algoritmo predeterminado a RSA (Rivest-Shamir-Adleman) rotando las claves privadas.
+ Al inicializar una instancia de Logto, se genera automáticamente un par de clave pública y clave privada, que se registran en el proveedor OIDC subyacente. Así, cuando Logto emite un nuevo JWT (token de acceso o token de ID), el token se firma con la clave privada. Mientras tanto, cualquier aplicación cliente que reciba un JWT puede usar la clave pública emparejada para verificar la firma del token, con el fin de asegurar que el token no ha sido manipulado por terceros. La clave privada está protegida en el servidor de Logto. La clave pública, como su nombre indica, es pública para todos y puede accederse a través de la interfaz `/oidc/jwks` del endpoint OIDC. Se puede especificar un algoritmo de clave de firma al generar la clave privada, y Logto utiliza el algoritmo EC (Curva Elíptica) por defecto. Los usuarios administradores pueden cambiar el algoritmo predeterminado a RSA (Rivest-Shamir-Adleman) rotando las claves privadas.
- **Clave de cookie OIDC**
Cuando el usuario inicia un flujo de inicio de sesión o registro, se crea una "sesión OIDC" en el servidor, así como un conjunto de cookies en el navegador. Con estas cookies, el navegador puede solicitar a la Experience API de Logto realizar una serie de interacciones en nombre del usuario, como iniciar sesión, registrarse y restablecer la contraseña. Sin embargo, a diferencia de los JWTs, las cookies solo son firmadas y verificadas por el propio servicio OIDC de Logto, no se requieren medidas de criptografía asimétrica. Por lo tanto, no tenemos claves públicas emparejadas para las claves de firma de cookies, ni algoritmos de cifrado asimétrico.
-## Rotar claves de firma desde la consola \{#rotate-signing-keys-from-console-ui}
+## Rotar claves de firma desde la Consola \{#rotate-signing-keys-from-console-ui}
-Logto introduce una función de "Rotación de claves de firma", que te permite crear una nueva clave privada OIDC y una clave de cookie en tu tenant.
+Logto introduce la función de "Rotación de claves de firma", que te permite crear una nueva clave privada OIDC y una clave de cookie en tu tenant.
1. Navega a Consola > Claves de firma. Desde allí, puedes gestionar tanto las claves privadas OIDC como las claves de cookie OIDC.
2. Para rotar la clave de firma, haz clic en el botón "Rotar claves privadas" o "Rotar claves de cookie". Al rotar las claves privadas, tienes la opción de cambiar el algoritmo de firma.
3. Encontrarás una tabla que enumera todas las claves de firma en uso. Nota: Puedes eliminar la clave anterior, pero no puedes eliminar la actual.
- | Estado | Descripción |
- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
- | Actual | Indica que esta clave está actualmente en uso activo dentro de tus aplicaciones y APIs. |
- | Anterior | Se refiere a una clave que se utilizó anteriormente pero que ha sido rotada. Los tokens existentes con esta clave siguen siendo válidos. |
+ | Estado | Descripción |
+ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
+ | Actual | Indica que esta clave está actualmente en uso activo dentro de tus aplicaciones y APIs. |
+ | Anterior | Se refiere a una clave que se utilizó previamente pero que ha sido rotada. Los tokens existentes con esta clave de firma siguen siendo válidos. |
Recuerda que la rotación implica las siguientes tres acciones:
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx b/i18n/es/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
index 8c261b7eb2e..5660a2b53c4 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
@@ -2,12 +2,12 @@
id: user-impersonation
title: Suplantación de usuario
sidebar_label: Suplantación de usuario
-sidebar_position: 3
+sidebar_position: 4
---
import TokenExchangePrerequisites from './fragments/_token-exchange-prerequisites.mdx';
-# Suplantación de usuario
+# Suplantación de usuario (User impersonation)
Imagina que Sarah, una ingeniera de soporte en TechCorp, recibe un ticket urgente de Alex, un cliente que no puede acceder a un recurso crítico. Para diagnosticar y resolver el problema de manera eficiente, Sarah necesita ver exactamente lo que Alex ve en el sistema. Aquí es donde la función de suplantación de usuario de Logto resulta útil.
@@ -41,14 +41,14 @@ sequenceDiagram
El proceso de suplantación implica tres pasos principales:
1. Sarah solicita la suplantación a través del servidor backend de TechCorp
-2. El servidor de TechCorp obtiene un token de sujeto desde el Management API de Logto
+2. El servidor de TechCorp obtiene un token de sujeto del Management API de Logto
3. La aplicación de Sarah intercambia este token de sujeto por un token de acceso
Veamos cómo Sarah puede usar esta función para ayudar a Alex.
### Paso 1: Solicitar la suplantación \{#step-1-requesting-impersonation}
-Primero, la aplicación de soporte de Sarah necesita solicitar la suplantación al servidor backend de TechCorp.
+Primero, la aplicación de soporte de Sarah debe solicitar la suplantación al servidor backend de TechCorp.
**Solicitud (aplicación de Sarah al servidor de TechCorp)**
@@ -165,7 +165,7 @@ El `access_token` devuelto estará vinculado al recurso especificado, asegurando
## Ejemplo de uso \{#example-usage}
-Así es como Sarah podría usar esto en una aplicación de soporte en Node.js:
+Así es como Sarah podría usar esto en una aplicación de soporte Node.js:
```tsx
interface ImpersonationResponse {
@@ -216,7 +216,7 @@ async function impersonateUser(
// Paso 3: Intercambiar token de sujeto por token de acceso
// highlight-start
// Para aplicaciones web tradicionales o M2M, usa autenticación básica con secreto de cliente
- // Para SPA o apps nativas, incluye client_id en el cuerpo
+ // Para SPA o apps nativas, incluye client_id en el cuerpo de la solicitud
const headers: Record = {
'Content-Type': 'application/x-www-form-urlencoded',
};
@@ -283,7 +283,7 @@ void performImpersonation();
:::note
1. El token de sujeto es de corta duración y de un solo uso.
-2. El token de acceso de suplantación no incluye un [token de actualización (Refresh token)](https://auth.wiki/refresh-token). Sarah tendrá que repetir este proceso si el token expira antes de resolver el problema de Alex.
+2. El token de acceso de suplantación no viene con un [token de actualización (Refresh token)](https://auth.wiki/refresh-token). Sarah tendrá que repetir este proceso si el token expira antes de resolver el problema de Alex.
3. El servidor backend de TechCorp debe implementar comprobaciones de autorización adecuadas para asegurar que solo el personal de soporte autorizado como Sarah pueda solicitar la suplantación.
:::
@@ -348,7 +348,7 @@ Este reclamo `act` indica claramente que Sarah (sarah789) está actuando en nomb
## Personalización de reclamos de token \{#customizing-token-claims}
-Logto te permite [personalizar los reclamos del token](/developers/custom-token-claims) para los tokens de suplantación. Esto puede ser útil para añadir contexto adicional o metadatos al proceso de suplantación, como el motivo de la suplantación o el ticket de soporte asociado.
+Logto te permite [personalizar los reclamos del token](/developers/custom-token-claims) para los tokens de suplantación. Esto puede ser útil para agregar contexto adicional o metadatos al proceso de suplantación, como el motivo de la suplantación o el ticket de soporte asociado.
Cuando el servidor de TechCorp solicita un token de sujeto al Management API de Logto, puede incluir un objeto `context`:
@@ -363,7 +363,7 @@ Cuando el servidor de TechCorp solicita un token de sujeto al Management API de
}
```
-Este [contexto](/developers/custom-token-claims/create-script#context-only-available-for-user-access-token) puede usarse en una función `getCustomJwtClaims()` para añadir reclamos específicos al token de acceso final. Aquí tienes un ejemplo de cómo podría implementarse:
+Este [contexto](/developers/custom-token-claims/create-script#context-only-available-for-user-access-token) puede usarse en una función `getCustomJwtClaims()` para agregar reclamos específicos al token de acceso final. Aquí tienes un ejemplo de cómo podría implementarse:
```tsx
const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
@@ -396,15 +396,15 @@ El token de acceso resultante que recibe Sarah podría verse así:
}
```
-Al personalizar los reclamos del token de acceso de esta manera, TechCorp puede incluir información valiosa sobre el contexto de la suplantación, facilitando la auditoría y comprensión de las actividades de suplantación en su sistema.
+Al personalizar los reclamos del token de acceso de esta manera, TechCorp puede incluir información valiosa sobre el contexto de la suplantación, facilitando la auditoría y la comprensión de las actividades de suplantación en su sistema.
:::note
-Ten cuidado al añadir reclamos personalizados a tus tokens. Evita incluir información sensible que pueda suponer riesgos de seguridad si el token es interceptado o filtrado. Los JWT están firmados pero no cifrados, por lo que los reclamos son visibles para cualquiera que tenga acceso al token.
+Ten cuidado al agregar reclamos personalizados a tus tokens. Evita incluir información sensible que pueda suponer riesgos de seguridad si el token es interceptado o filtrado. Los JWT están firmados pero no cifrados, por lo que los reclamos son visibles para cualquiera que tenga acceso al token.
:::
## Recursos relacionados \{#related-resources}
- ¿Qué es la suplantación en ciberseguridad y gestión de identidad? ¿Cómo pueden los agentes de IA
- usarla?
+ ¿Qué es la suplantación en ciberseguridad y gestión de identidades? ¿Cómo pueden los agentes de IA
+ utilizarla?
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx b/i18n/es/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
index 9170479c09a..c31011fbb56 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
@@ -1,35 +1,35 @@
---
-sidebar_position: 5
+sidebar_position: 6
---
# Webhooks
Logto [Webhook](https://auth.wiki/webhook) proporciona notificaciones en tiempo real para varios eventos, incluyendo cambios en cuentas de usuario, roles, permisos, organizaciones, roles de organización, permisos de organización e [interacciones de usuario](/end-user-flows).
-Cuando se activa un evento, Logto envía una solicitud HTTP a la URL del endpoint que proporciones, conteniendo información detallada sobre el evento, como el ID de usuario, nombre de usuario, correo electrónico y otros detalles relevantes (para más información sobre los datos incluidos en el payload y la cabecera, consulta [Solicitud de Webhook](/developers/webhooks/webhooks-request)). Tu aplicación puede procesar esta solicitud y tomar acciones personalizadas, como enviar un correo electrónico o actualizar datos en la base de datos.
+Cuando se activa un evento, Logto envía una solicitud HTTP a la URL del endpoint que proporciones, conteniendo información detallada sobre el evento, como el ID de usuario, nombre de usuario, correo electrónico y otros detalles relevantes (para más información sobre los datos incluidos en el payload y el encabezado, consulta [Solicitud de Webhook](/developers/webhooks/webhooks-request)). Tu aplicación puede procesar esta solicitud y tomar acciones personalizadas, como enviar un correo electrónico o actualizar datos en la base de datos.
-Continuamente añadimos más eventos según las necesidades de los usuarios. Si tienes requisitos específicos para tu negocio, por favor háznoslo saber.
+Continuamente agregamos más eventos según las necesidades de los usuarios. Si tienes requisitos específicos para tu negocio, por favor háznoslo saber.
## ¿Por qué usar Webhook? \{#why-use-webhook}
-Los Webhooks ofrecen comunicación en tiempo real entre aplicaciones, eliminando la necesidad de sondeo y permitiendo actualizaciones de datos inmediatas. Simplifican la integración de aplicaciones y la automatización de flujos de trabajo sin código complejo ni APIs propietarias.
+Los Webhooks ofrecen comunicación en tiempo real entre aplicaciones, eliminando la necesidad de sondeo y permitiendo actualizaciones inmediatas de datos. Simplifican la integración de aplicaciones y la automatización de flujos de trabajo sin código complejo ni APIs propietarias.
Aquí tienes algunos ejemplos de casos de uso comunes de Webhook para CIAM:
- **Enviar correos electrónicos:** Configura un Webhook para enviar un correo de bienvenida a los nuevos usuarios al registrarse o notificar a los administradores cuando un usuario inicia sesión desde un nuevo dispositivo o ubicación.
-- **Enviar notificaciones:** Configura un Webhook para activar un asistente virtual con tu sistema CRM y proporcionar soporte al cliente en tiempo real cuando los usuarios se registran.
+- **Enviar notificaciones:** Configura un Webhook para activar un asistente virtual con tu sistema CRM y proporcionar soporte al cliente en tiempo real cuando los usuarios se registren.
- **Realizar llamadas adicionales a API**: Configura un Webhook para verificar el acceso del usuario comprobando su dominio de correo electrónico o dirección IP y luego utiliza la Management API de Logto para asignar los roles apropiados con permisos de recursos.
- **Sincronización de datos:** Configura Webhook para mantener la aplicación actualizada sobre cambios como suspensiones o eliminaciones de cuentas de usuario.
-- **Generar informes**: Configura un Webhook para recibir datos de actividad de inicio de sesión de usuarios y utilízalos para crear informes sobre la participación o patrones de uso de los usuarios.
+- **Generar informes**: Configura un Webhook para recibir datos de actividad de inicio de sesión de usuarios y aprovecharlos para crear informes sobre el compromiso o patrones de uso de los usuarios.
## Términos \{#terms}
-| Ítem | Descripción |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Evento (Event) | Cuando se realiza una acción específica, se activará un evento hook con un tipo específico. Por ejemplo, Logto emitirá un evento hook PostRegister cuando el usuario finalice el proceso de registro y cree una nueva cuenta. |
-| Hook | Una o varias acciones que se enganchan a un evento específico. La acción puede ser llamar a una API, ejecutar fragmentos de código, etc. |
-| Webhook | Un subtipo de hook que indica llamar a una API con el payload del evento. |
-| Por ejemplo, si un desarrollador quiere enviar una notificación cuando un usuario inicia sesión desde un nuevo dispositivo, puede añadir un webhook que llame a su API de servicio de seguridad en el evento PostSignIn. |
+| Item | Description |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Evento (Event) | Cuando se realiza una acción específica, se activará un evento hook con un tipo específico. Por ejemplo, Logto emitirá un evento hook PostRegister cuando el usuario termine el proceso de registro y cree una nueva cuenta. |
+| Hook | Una o varias acciones que se enganchan a un evento específico. La acción puede ser llamar a una API, ejecutar fragmentos de código, etc. |
+| Webhook | Un subtipo de hook que indica llamar a una API con el payload del evento. |
+| Supón que un desarrollador quiere enviar una notificación cuando un usuario inicia sesión desde un nuevo dispositivo, el desarrollador puede añadir un webhook que llame a su API de servicio de seguridad para el evento PostSignIn. |
Aquí tienes un ejemplo de cómo habilitar dos webhooks para el evento `PostSignIn` en Logto:
@@ -85,11 +85,11 @@ Consulta la guía [Gestionar el cambio de permisos de usuario](/authorization/gl
-### ¿Cómo depurar el timeout de un webhook? \{#how-to-debug-webhook-timeout}
+### ¿Cómo depurar el tiempo de espera del webhook? \{#how-to-debug-webhook-timeout}
-El endpoint que recibe los Webhooks debe devolver una respuesta 2xx lo más rápido posible para indicar a Logto que el Webhook se ha recibido correctamente. Dado que los diferentes usuarios tienen lógicas de procesamiento muy distintas para los Webhooks, las tareas excesivamente complejas pueden tardar varios segundos, provocando que el Webhook de Logto agote el tiempo de espera. La mejor práctica es mantener tu propia cola de eventos; al recibir el Webhook de Logto, inserta el evento en la cola y devuelve una respuesta 2xx a Logto. Luego, deja que tu propio worker procese las tareas en la cola paso a paso. Si el worker encuentra un error, manéjalo en tu propio servidor.
+Para el endpoint que recibe los Webhooks, debe devolver una respuesta 2xx lo más rápido posible para indicar a Logto que el Webhook se ha recibido correctamente. Dado que diferentes usuarios tienen lógicas de procesamiento muy distintas para los Webhooks, las tareas excesivamente complejas pueden tardar varios segundos, provocando que el Webhook de Logto agote el tiempo de espera. La mejor práctica es mantener tu propia cola de eventos; al recibir el Webhook de Logto, inserta el evento en la cola y devuelve una respuesta 2xx a Logto. Luego, deja que tu propio worker procese las tareas en la cola paso a paso. Si el worker encuentra un error, manéjalo en tu propio servidor.
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx b/i18n/es/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
index 350182dbffa..1630d13d938 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
@@ -8,27 +8,53 @@ import GearIcon from '@site/src/assets/gear.svg';
# Configuración de cuenta
-Logto proporciona dos colecciones de APIs de configuración de cuenta para permitir a los usuarios gestionar su cuenta y perfiles almacenados en Logto.
+Logto proporciona múltiples formas para que los usuarios gestionen su cuenta y perfiles almacenados en Logto.
-## Usar Account APIs (Recomendado) \{#use-account-apis-recommended}
+## Usar la interfaz preconstruida del Centro de Cuenta (Recomendado) \{#use-prebuilt-account-center-ui-recommended}
-Las Account APIs de Logto son endpoints listos para usar en el front-end que permiten a los usuarios finales ver y actualizar de forma segura su propia información con comprobaciones de permisos integradas. Simplemente intégralas en tu aplicación cliente para ofrecer una página de configuración de cuenta de autoservicio y pulida.
+Logto ofrece una interfaz preconstruida del Centro de Cuenta que proporciona páginas listas para usar para que los usuarios finales gestionen la configuración de su cuenta. Esta es la forma más rápida de añadir gestión de cuentas a tu aplicación.
+
+Características clave:
+
+- **Sin esfuerzo de desarrollo**: Páginas listas para usar que funcionan de inmediato.
+- **Experiencia consistente**: Coincide con la apariencia de la experiencia de inicio de sesión de Logto.
+- **Seguridad incorporada**: Todos los flujos de verificación y medidas de seguridad se gestionan automáticamente.
+- **Funcionalidad completa**: Permite actualizar correo electrónico, teléfono, nombre de usuario, contraseña y configuración de MFA.
+
+,
+ },
+ },
+ ]}
+/>
+
+## Usar las Account APIs \{#use-account-apis}
+
+Las Account APIs de Logto son endpoints listos para usar en el front-end que permiten a los usuarios finales ver y actualizar su propia información de forma segura con comprobaciones de permisos integradas. Utiliza esto cuando necesites construir una página personalizada de configuración de cuenta con tu propia interfaz.
Características clave:
- **Configuración del usuario final**: Los usuarios gestionan sus propios identificadores y credenciales de inicio de sesión, cuentas sociales, métodos MFA y datos de perfil.
-- **Integración del lado del cliente**: Diseñadas para un uso seguro y directo en tu front-end.
-- **Configuración mínima**: Endpoints listos para usar sin necesidad de un servidor personalizado.
-- **Control de permisos**: Activa o desactiva las Account APIs mediante la configuración de Management API.
+- **Integración del lado del cliente**: Diseñado para un uso seguro y directo en tu front-end.
+- **Personalización total**: Construye tu propia interfaz aprovechando las APIs seguras de Logto.
+- **Control de permisos**: Activa o desactiva qué Account APIs están habilitadas mediante la configuración de la Management API.
,
},
@@ -36,13 +62,13 @@ Características clave:
]}
/>
-## Usar Management APIs \{#use-management-apis}
+## Usar las Management APIs \{#use-management-apis}
-Las Management APIs forman la interfaz administrativa principal de Logto, accesible solo para administradores o servicios de back-end. Ofrecen la máxima flexibilidad y control total de CRUD sobre cada cuenta de usuario y te permiten construir herramientas de gestión personalizadas. Si necesitas un portal de autoservicio completamente personalizado o funciones de gestión de usuarios no estándar, puedes exponer endpoints seleccionados de Management API detrás de tu propia capa de “Account API” y protegerlos con la lógica de autenticación de tu negocio.
+Las Management APIs forman la interfaz administrativa principal de Logto, accesible solo para administradores o servicios de back-end. Ofrecen la máxima flexibilidad y control total de CRUD sobre cada cuenta de usuario y te permiten construir herramientas de gestión personalizadas. Si necesitas un portal de autoservicio completamente personalizado o funciones de gestión de usuarios no estándar, puedes exponer endpoints seleccionados de la Management API detrás de tu propia capa de “Account API” y protegerlos con la lógica de autenticación de tu negocio.
Características clave:
-- **Acceso solo para administradores**: Destinadas a desarrolladores y sistemas de back-office.
+- **Acceso solo para administradores**: Destinado a desarrolladores y sistemas de back-office.
- **Ciclo de vida completo del usuario**: Crear, leer, actualizar, eliminar, suspender o restaurar cuentas.
- **Operaciones avanzadas**: Generar tokens de acceso personal, suplantar usuarios, conectar aplicaciones OAuth, personalizar flujos de trabajo.
@@ -50,7 +76,7 @@ Características clave:
items={[
{
type: 'link',
- label: 'Usar Logto Management APIs',
+ label: 'Usar las Management APIs de Logto',
href: '/end-user-flows/account-settings/by-management-api',
description:
'Aprende más sobre cómo usar las Management APIs de usuario para construir tu propia página de configuración de cuenta.',
@@ -61,13 +87,14 @@ Características clave:
]}
/>
-## Account API vs. Management API \{#account-api-vs-management-api}
+## Comparación de opciones para la configuración de cuenta \{#comparison-of-account-settings-options}
-| Característica | Account APIs | Management APIs |
-| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **Usuario previsto** | Usuarios finales | Administradores / Desarrolladores |
-| **Contexto de acceso** | Lado del cliente / front-end | Lado del servidor / back-end |
-| **Modelo de permisos** | Activa o desactiva las Account APIs mediante Management API. | Totalmente personalizable por los desarrolladores |
-| **Funciones soportadas** | Ver, actualizar y eliminar: nombre de usuario, correo electrónico, teléfono, contraseña, cuentas sociales, MFA, perfil | Todas las configuraciones básicas + Eliminar/suspender/restaurar cuenta, tokens de acceso personal, suplantación de usuario, conectar apps OAuth, etc. |
-| **Complejidad de configuración** | Muy baja (plug-and-play) | Media a alta (requiere implementación personalizada) |
-| **Cuándo usar** | Para lanzar rápidamente una página de configuración de cuenta segura y de autoservicio en tu app cliente con configuración mínima. | Cuando las Account APIs no cubren tus necesidades. Por ejemplo, para lógica compleja de eliminación de cuentas, acciones de alto riesgo o construcción de herramientas de back-office. |
+| Característica | Interfaz preconstruida del Centro de Cuenta | Account APIs | Management APIs |
+| -------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **Usuario previsto** | Usuarios finales | Usuarios finales | Administradores / Desarrolladores |
+| **Contexto de acceso** | Redirección a páginas alojadas por Logto | Lado del cliente / front-end | Lado del servidor / back-end |
+| **Modelo de permisos** | Activa o desactiva campos mediante la configuración del Centro de Cuenta | Activa o desactiva Account APIs mediante la Management API | Totalmente personalizable por desarrolladores |
+| **Funciones soportadas** | Actualizar: correo electrónico, teléfono, nombre de usuario, contraseña, MFA (TOTP, passkeys, códigos de respaldo) | Ver, actualizar y eliminar: nombre de usuario, correo electrónico, teléfono, contraseña, cuentas sociales, MFA, perfil | Todas las configuraciones básicas + Eliminar/suspender/restaurar cuenta, tokens de acceso personal, suplantación de usuario, conectar aplicaciones OAuth, etc. |
+| **Personalización de UI** | Hereda la marca de la experiencia de inicio de sesión | Personalización total (construye tu propia interfaz) | Personalización total (construye tu propia interfaz) |
+| **Complejidad de configuración** | Ninguna (solo enlaza a las páginas preconstruidas) | Baja (usa las APIs con tu interfaz) | Media a alta (requiere implementación personalizada) |
+| **Cuándo usar** | Para la forma más rápida de añadir gestión de cuentas sin construir páginas personalizadas | Cuando necesitas una interfaz personalizada pero quieres aprovechar las APIs seguras de Logto | Cuando las Account APIs no cubren tus necesidades. Por ejemplo, para lógica compleja de eliminación de cuentas, acciones de alto riesgo o herramientas de back-office |
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx b/i18n/es/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
new file mode 100644
index 00000000000..64655db34df
--- /dev/null
+++ b/i18n/es/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
@@ -0,0 +1,154 @@
+---
+description: Aprende a usar la interfaz preconstruida del Centro de Cuenta de Logto para permitir que los usuarios gestionen sus cuentas
+sidebar_position: 2
+---
+
+# Configuración de cuenta mediante la interfaz preconstruida del Centro de Cuenta
+
+## ¿Qué es la interfaz preconstruida del Centro de Cuenta? \{#what-is-the-prebuilt-account-center-ui}
+
+Logto proporciona una interfaz preconstruida del Centro de Cuenta que ofrece páginas listas para usar para que los usuarios finales gestionen la configuración de su cuenta. Esta interfaz preconstruida está alojada por Logto y gestiona tareas comunes de administración de cuentas, incluyendo:
+
+- Actualización de dirección de correo electrónico
+- Actualización de número de teléfono
+- Actualización de nombre de usuario
+- Establecer o actualizar la contraseña
+- Gestión de la configuración de MFA (aplicación autenticadora TOTP, claves de acceso, códigos de respaldo)
+
+La interfaz preconstruida del Centro de Cuenta está diseñada para funcionar perfectamente con tu aplicación, proporcionando una experiencia de usuario coherente sin que tengas que construir páginas personalizadas de gestión de cuentas.
+
+## Beneficios de usar la interfaz preconstruida \{#benefits-of-using-the-prebuilt-ui}
+
+- **Esfuerzo de desarrollo nulo**: Páginas listas para usar que funcionan desde el primer momento
+- **Experiencia coherente**: Coincide con el aspecto y la sensación de la experiencia de inicio de sesión de Logto
+- **Seguridad incorporada**: Todos los flujos de verificación y medidas de seguridad se gestionan automáticamente
+- **Siempre actualizado**: Las nuevas funciones y mejoras de seguridad están disponibles automáticamente
+
+## Páginas disponibles \{#available-pages}
+
+La interfaz preconstruida del Centro de Cuenta proporciona las siguientes páginas, todas accesibles bajo la ruta `/account` del endpoint de tu tenant de Logto:
+
+| Ruta | Descripción |
+| -------------------------------- | ------------------------------------------- |
+| `/account/email` | Actualizar dirección de correo principal |
+| `/account/phone` | Actualizar número de teléfono principal |
+| `/account/username` | Actualizar nombre de usuario |
+| `/account/password` | Establecer o actualizar contraseña |
+| `/account/passkey/add` | Añadir una nueva clave de acceso (WebAuthn) |
+| `/account/passkey/manage` | Ver y gestionar claves de acceso existentes |
+| `/account/authenticator-app` | Configurar aplicación autenticadora TOTP |
+| `/account/backup-codes/generate` | Generar nuevos códigos de respaldo |
+| `/account/backup-codes/manage` | Ver y gestionar códigos de respaldo |
+
+Por ejemplo, si el endpoint de tu tenant es `https://example.logto.app`, la página para actualizar el correo electrónico estaría disponible en `https://example.logto.app/account/email`.
+
+## Cómo usar la interfaz preconstruida \{#how-to-use-the-prebuilt-ui}
+
+### Paso 1: Habilita Account API \{#step-1-enable-account-api}
+
+La interfaz preconstruida del Centro de Cuenta depende de Account API. Navega a Consola > Inicio de sesión y cuenta > Centro de cuenta y habilita Account API.
+
+Configura los permisos de los campos según tus necesidades:
+
+- Establece los campos en `Edit` para permitir que los usuarios los modifiquen
+- Establece los campos en `ReadOnly` si los usuarios solo deben verlos
+- Establece los campos en `Off` para ocultarlos completamente
+
+### Paso 2: Enlaza las páginas preconstruidas desde tu aplicación \{#step-2-link-to-prebuilt-pages}
+
+Para usar la interfaz preconstruida del Centro de Cuenta, necesitas redirigir a los usuarios desde tu aplicación a las páginas correspondientes de Logto. Hay dos enfoques:
+
+#### Enfoque A: Enlace directo con parámetro de redirección \{#approach-a-direct-linking}
+
+Agrega enlaces en tu aplicación que redirijan a los usuarios a las páginas preconstruidas. Incluye un parámetro de consulta `redirect` para devolver a los usuarios a tu aplicación después de completar la acción:
+
+```
+https://[tenant-id].logto.app/account/email?redirect=https://your-app.com/settings
+```
+
+Cuando los usuarios completen la actualización de su correo electrónico, serán redirigidos de vuelta a `https://your-app.com/settings`.
+
+#### Enfoque B: Integración en tu flujo de configuración de cuenta \{#approach-b-embedding}
+
+Puedes integrar las páginas preconstruidas en el flujo de configuración de cuenta de tu aplicación:
+
+1. En la página de configuración de cuenta de tu aplicación, muestra la información actual del usuario
+2. Proporciona botones de "Editar" o "Actualizar" que enlacen a las páginas preconstruidas correspondientes
+3. Después de que el usuario complete la acción, será redirigido de vuelta a tu aplicación
+
+Ejemplo de implementación:
+
+```tsx
+function AccountSettings() {
+ const tenantEndpoint = 'https://example.logto.app';
+ const redirectUrl = encodeURIComponent(window.location.href);
+
+ return (
+
+
Configuración de cuenta
+
+
+
+
+
+
+
+ );
+}
+```
+
+### Paso 3: Gestiona las redirecciones de éxito \{#step-3-handle-success-redirects}
+
+Después de que los usuarios completen una acción, serán redirigidos a la URL que especificaste con un parámetro de consulta opcional `show_success`. Puedes usar esto para mostrar un mensaje de éxito:
+
+```tsx
+function SettingsPage() {
+ const searchParams = new URLSearchParams(window.location.search);
+ const showSuccess = searchParams.get('show_success');
+
+ return (
+
+ {showSuccess === 'email' &&
¡Correo electrónico actualizado correctamente!
}
+ {showSuccess === 'password' &&
¡Contraseña actualizada correctamente!
}
+ {/* ... resto de tu página de configuración */}
+
+ );
+}
+```
+
+## Consideraciones de seguridad \{#security-considerations}
+
+La interfaz preconstruida del Centro de Cuenta incluye medidas de seguridad integradas:
+
+- **Verificación de identidad**: Antes de realizar cambios sensibles (correo, teléfono, contraseña, MFA), los usuarios deben verificar su identidad usando su contraseña actual o un método de verificación existente
+- **Códigos de verificación**: Las actualizaciones de correo y teléfono requieren códigos de verificación enviados a la nueva dirección/número
+- **Validación de sesión**: Todas las operaciones validan la sesión del usuario para prevenir accesos no autorizados
+
+## Opciones de personalización \{#customization-options}
+
+La interfaz preconstruida del Centro de Cuenta hereda la personalización de marca de la configuración de tu experiencia de inicio de sesión, incluyendo:
+
+- Logo y colores
+- Modo oscuro / claro
+- Configuración de idioma
+
+Si necesitas más personalización de la que ofrece la interfaz preconstruida, considera usar [Account API](/end-user-flows/account-settings/by-account-api) para construir tus propias páginas personalizadas de gestión de cuentas.
+
+## Recursos relacionados \{#related-resources}
+
+- [Configuración de cuenta mediante Account API](/end-user-flows/account-settings/by-account-api) - Crea una gestión de cuentas personalizada con control total mediante API
+- [Configuración de cuenta mediante Management API](/end-user-flows/account-settings/by-management-api) - Gestión de cuentas a nivel de administrador
+- [Configuración de MFA](/end-user-flows/mfa) - Configura autenticación multifactor (MFA)
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/introduction/README.mdx b/i18n/es/docusaurus-plugin-content-docs/current/introduction/README.mdx
index e447e541d37..b98f81645b5 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/introduction/README.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/introduction/README.mdx
@@ -143,6 +143,10 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
icon: ,
docId: 'developers/custom-token-claims/README',
},
+ {
+ icon: ,
+ docId: 'developers/custom-id-token/README',
+ },
{
icon: ,
docId: 'developers/user-impersonation',
@@ -169,7 +173,7 @@ Las capacidades de Logto se basan en cuatro pilares clave, formando la base para
label: 'Logto Console',
href: 'https://cloud.logto.io',
description:
- 'Una interfaz web para configurar y gestionar recursos, ofreciendo una configuración rápida para la experiencia de inicio de sesión y una gestión de identidades sencilla.',
+ 'Una interfaz web para configurar y gestionar recursos, ofreciendo una configuración rápida para la experiencia de inicio de sesión y una gestión de identidad sencilla.',
customProps: {
icon: ,
},
@@ -179,7 +183,7 @@ Las capacidades de Logto se basan en cuatro pilares clave, formando la base para
label: 'Experiencia de usuario final',
href: '/end-user-flows',
description:
- 'Ofrece un flujo completo de autenticación (Autenticación) y una interfaz de usuario, con amplia personalización a través de Logto Console y API.',
+ 'Ofrece un flujo completo de autenticación (Autenticación) e interfaz de usuario, con amplia personalización a través de Logto Console y API.',
customProps: {
icon: ,
},
@@ -209,7 +213,7 @@ Las capacidades de Logto se basan en cuatro pilares clave, formando la base para
label: 'Logto MCP Server',
href: '/logto-cloud/logto-mcp-server',
description:
- 'Un servidor MCP remoto que conecta herramientas de IA e IDEs a Logto Cloud, permitiendo la gestión de recursos y la integración de autenticación (Autenticación).',
+ 'Un servidor MCP remoto que conecta herramientas de IA e IDEs a Logto Cloud, permitiendo la gestión de recursos e integración de autenticación (Autenticación).',
customProps: {
icon: ,
},
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md b/i18n/es/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
index 02147e8e4bd..671954d2845 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
@@ -1,81 +1,87 @@
-Aquí tienes la lista de alcances (Scopes) soportados y los reclamos (Claims) correspondientes:
+Aquí tienes la lista de alcances (Alcances) soportados y los reclamos (Reclamos) correspondientes:
-**`openid`**
+### Alcances estándar de OIDC {#standard-oidc-scopes}
-| Claim name | Type | Descripción | ¿Necesita userinfo? |
-| ---------- | -------- | ---------------------------------- | ------------------- |
-| sub | `string` | El identificador único del usuario | No |
+**`openid`** (por defecto)
-**`profile`**
+| Claim name | Type | Description |
+| ---------- | -------- | ---------------------------------- |
+| sub | `string` | El identificador único del usuario |
-| Claim name | Type | Descripción | ¿Necesita userinfo? |
-| ---------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |
-| name | `string` | El nombre completo del usuario | No |
-| username | `string` | El nombre de usuario del usuario | No |
-| picture | `string` | URL de la foto de perfil del usuario final. Esta URL DEBE referirse a un archivo de imagen (por ejemplo, un archivo de imagen PNG, JPEG o GIF), en lugar de a una página web que contenga una imagen. Ten en cuenta que esta URL DEBERÍA referenciar específicamente una foto de perfil del usuario final adecuada para mostrar al describir al usuario final, en lugar de una foto arbitraria tomada por el usuario final. | No |
-| created_at | `number` | Momento en que se creó el usuario final. El tiempo se representa como el número de milisegundos desde la época Unix (1970-01-01T00:00:00Z). | No |
-| updated_at | `number` | Momento en que se actualizó por última vez la información del usuario final. El tiempo se representa como el número de milisegundos desde la época Unix (1970-01-01T00:00:00Z). | No |
+**`profile`** (por defecto)
-Otros [reclamos estándar](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) como `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `website`, `gender`, `birthdate`, `zoneinfo` y `locale` también se incluirán en el alcance `profile` sin necesidad de solicitar el endpoint userinfo. Una diferencia respecto a los reclamos anteriores es que estos reclamos solo se devolverán cuando sus valores no estén vacíos, mientras que los reclamos anteriores devolverán `null` si los valores están vacíos.
+| Claim name | Type | Description |
+| ---------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| name | `string` | El nombre completo del usuario |
+| username | `string` | El nombre de usuario del usuario |
+| picture | `string` | URL de la foto de perfil del usuario final. Esta URL DEBE referirse a un archivo de imagen (por ejemplo, un archivo PNG, JPEG o GIF), en lugar de a una página web que contenga una imagen. Ten en cuenta que esta URL DEBERÍA referenciar específicamente una foto de perfil del usuario final adecuada para mostrar al describir al usuario final, en lugar de una foto arbitraria tomada por el usuario final. |
+| created_at | `number` | Momento en que se creó el usuario final. El tiempo se representa como el número de milisegundos desde la época Unix (1970-01-01T00:00:00Z). |
+| updated_at | `number` | Momento en que la información del usuario final fue actualizada por última vez. El tiempo se representa como el número de milisegundos desde la época Unix (1970-01-01T00:00:00Z). |
+
+Otros [reclamos estándar](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) incluyen `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `website`, `gender`, `birthdate`, `zoneinfo` y `locale`, que también se incluirán en el alcance `profile` sin necesidad de solicitar el endpoint userinfo. Una diferencia en comparación con los reclamos anteriores es que estos reclamos solo se devolverán cuando sus valores no estén vacíos, mientras que los reclamos anteriores devolverán `null` si los valores están vacíos.
:::note
-A diferencia de los reclamos estándar, los reclamos `created_at` y `updated_at` usan milisegundos en lugar de segundos.
+A diferencia de los reclamos estándar, los reclamos `created_at` y `updated_at` utilizan milisegundos en lugar de segundos.
:::
**`email`**
-| Claim name | Type | Descripción | ¿Necesita userinfo? |
-| -------------- | --------- | -------------------------------------------------------- | ------------------- |
-| email | `string` | La dirección de correo electrónico del usuario | No |
-| email_verified | `boolean` | Si la dirección de correo electrónico ha sido verificada | No |
+| Claim name | Type | Description |
+| -------------- | --------- | -------------------------------------------------------- |
+| email | `string` | La dirección de correo electrónico del usuario |
+| email_verified | `boolean` | Si la dirección de correo electrónico ha sido verificada |
**`phone`**
-| Claim name | Type | Descripción | ¿Necesita userinfo? |
-| --------------------- | --------- | ------------------------------------------- | ------------------- |
-| phone_number | `string` | El número de teléfono del usuario | No |
-| phone_number_verified | `boolean` | Si el número de teléfono ha sido verificado | No |
+| Claim name | Type | Description |
+| --------------------- | --------- | ------------------------------------------- |
+| phone_number | `string` | El número de teléfono del usuario |
+| phone_number_verified | `boolean` | Si el número de teléfono ha sido verificado |
**`address`**
Por favor, consulta [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#AddressClaim) para los detalles del reclamo de dirección.
+:::info
+Los alcances marcados como **(por defecto)** siempre son solicitados por el SDK de Logto. Los reclamos bajo los alcances estándar de OIDC siempre se incluyen en el token de ID cuando se solicita el alcance correspondiente; no se pueden desactivar.
+:::
+
+### Alcances extendidos {#extended-scopes}
+
+Los siguientes alcances son extendidos por Logto y devolverán reclamos a través del [endpoint userinfo](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo). Estos reclamos también pueden configurarse para ser incluidos directamente en el token de ID a través de Consola > JWT personalizado. Consulta [Token de ID personalizado](/developers/custom-id-token) para más detalles.
+
**`custom_data`**
-| Claim name | Type | Descripción | ¿Necesita userinfo? |
-| ----------- | -------- | ------------------------------------ | ------------------- |
-| custom_data | `object` | Los datos personalizados del usuario | Sí |
+| Claim name | Type | Description | Included in ID token by default |
+| ----------- | -------- | ------------------------------------ | ------------------------------- |
+| custom_data | `object` | Los datos personalizados del usuario | |
**`identities`**
-| Claim name | Type | Descripción | ¿Necesita userinfo? |
-| -------------- | -------- | ------------------------------------------ | ------------------- |
-| identities | `object` | Las identidades vinculadas del usuario | Sí |
-| sso_identities | `array` | Las identidades SSO vinculadas del usuario | Sí |
+| Claim name | Type | Description | Included in ID token by default |
+| -------------- | -------- | ------------------------------------------ | ------------------------------- |
+| identities | `object` | Las identidades vinculadas del usuario | |
+| sso_identities | `array` | Las identidades SSO vinculadas del usuario | |
**`roles`**
-| Claim name | Type | Descripción | ¿Necesita userinfo? |
-| ---------- | ---------- | --------------------- | ------------------- |
-| roles | `string[]` | Los roles del usuario | No |
+| Claim name | Type | Description | Included in ID token by default |
+| ---------- | ---------- | ----------------------------- | ------------------------------- |
+| roles | `string[]` | Los roles (Roles) del usuario | ✅ |
**`urn:logto:scope:organizations`**
-| Claim name | Type | Descripción | ¿Necesita userinfo? |
-| ----------------- | ---------- | -------------------------------------------------------------- | ------------------- |
-| organizations | `string[]` | Los IDs de las organizaciones a las que pertenece el usuario | No |
-| organization_data | `object[]` | Los datos de las organizaciones a las que pertenece el usuario | Sí |
+| Claim name | Type | Description | Included in ID token by default |
+| ----------------- | ---------- | --------------------------------------------------------------------- | ------------------------------- |
+| organizations | `string[]` | Los IDs de organización (Organization) a los que pertenece el usuario | ✅ |
+| organization_data | `object[]` | Los datos de organización a los que pertenece el usuario | |
:::note
-Estos reclamos de organización también pueden recuperarse a través del endpoint userinfo cuando se utiliza un [token opaco](/concepts/opaque-token). Sin embargo, los tokens opacos no pueden usarse como tokens de organización para acceder a recursos específicos de la organización. Consulta [Token opaco y organizaciones](/concepts/opaque-token#opaque-token-and-organizations) para más detalles.
+Estos reclamos de organización también pueden recuperarse a través del endpoint userinfo cuando se utiliza un [token opaco (Opaque token)](/concepts/opaque-token). Sin embargo, los tokens opacos no pueden usarse como tokens de organización para acceder a recursos específicos de la organización. Consulta [Token opaco y organizaciones](/concepts/opaque-token#opaque-token-and-organizations) para más detalles.
:::
**`urn:logto:scope:organization_roles`**
-| Claim name | Type | Descripción | ¿Necesita userinfo? |
-| ------------------ | ---------- | ---------------------------------------------------------------------------------------------------------- | ------------------- |
-| organization_roles | `string[]` | Los roles de la organización a los que pertenece el usuario con el formato `:` | No |
-
----
-
-Considerando el rendimiento y el tamaño de los datos, si "¿Necesita userinfo?" es "Sí", significa que el reclamo no aparecerá en el token de ID, pero se devolverá en la respuesta del [endpoint userinfo](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo).
+| Claim name | Type | Description | Included in ID token by default |
+| ------------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------- |
+| organization_roles | `string[]` | Los roles de organización (Organization roles) a los que pertenece el usuario con el formato `:` | ✅ |
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx b/i18n/es/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
index a9ed7ed1c41..79bc70685d4 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
+++ b/i18n/es/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
@@ -1,6 +1,8 @@
import ScopeClaimList from './_scope-claim-list.md';
-Logto utiliza las [convenciones de alcances y reclamos (scopes and claims)](https://openid.net/specs/openid-connect-core-1_0.html#Claims) de OIDC para definir los alcances y reclamos para obtener información del usuario del Token de ID y del endpoint userinfo de OIDC. Tanto "alcance" como "reclamo" son términos de las especificaciones de OAuth 2.0 y OpenID Connect (OIDC).
+Logto utiliza las convenciones de OIDC sobre [alcances y reclamos (scopes and claims)](https://openid.net/specs/openid-connect-core-1_0.html#Claims) para definir los alcances y reclamos al recuperar información del usuario desde el token de ID (ID token) y el endpoint userinfo de OIDC. Tanto "alcance (Scope)" como "reclamo (Claim)" son términos de las especificaciones de OAuth 2.0 y OpenID Connect (OIDC).
+
+Para los reclamos estándar de OIDC, la inclusión en el token de ID está estrictamente determinada por los alcances solicitados. Los reclamos extendidos (como `custom_data` y `organizations`) pueden configurarse adicionalmente para aparecer en el token de ID a través de la configuración de Token de ID personalizado.
{/* TODO: Remove below */}
@@ -12,9 +14,9 @@ En resumen, cuando solicitas un alcance, obtendrás los reclamos correspondiente
- Por defecto, Logto SDK siempre solicitará tres alcances: `openid`, `profile` y `offline_access`, y
- no hay forma de eliminar estos alcances predeterminados. Pero puedes añadir más alcances al
- configurar Logto:
+ Por defecto, el SDK de Logto siempre solicitará tres alcances: `openid`, `profile` y
+ `offline_access`, y no hay forma de eliminar estos alcances predeterminados. Pero puedes añadir
+ más alcances al configurar Logto:
{props.configScopesCode}
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/developers/README.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/developers/README.mdx
index 86c93364028..6265735c72c 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/developers/README.mdx
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/developers/README.mdx
@@ -4,7 +4,7 @@ Logto est un service de [gestion des identités et des accès (IAM)](https://aut
Afin de fournir plus de commodité à nos utilisateurs, Logto propose une série de fonctionnalités couramment utilisées par les développeurs.
-## Lié à l’expérience de connexion \{#sign-in-experience-related}
+## Liées à l’expérience de connexion \{#sign-in-experience-related}
```mdx-code-block
import DocCardList from '@theme/DocCardList';
@@ -19,9 +19,18 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
items={[
{
type: 'link',
- label: 'Revendications personnalisées de jeton',
+ label: 'Jeton d’accès personnalisé',
href: '/developers/custom-token-claims',
- description: 'Étendez les capacités du contrôle d’accès en ajoutant des revendications supplémentaires, ce qui peut aider à réaliser l’ABAC ou à refuser l’émission de jetons.',
+ description: 'Utilisez des scripts personnalisés pour attacher des revendications supplémentaires aux jetons d’accès (access tokens), permettant l’ABAC ou le rejet de l’émission du jeton.',
+ customProps: {
+ icon: ,
+ }
+ },
+ {
+ type: 'link',
+ label: 'Jeton d’identifiant personnalisé',
+ href: '/developers/custom-id-token',
+ description: 'Contrôlez quelles revendications étendues sont incluses dans les jetons d’identifiant (ID tokens), conformément à la spécification OIDC.',
customProps: {
icon: ,
}
@@ -30,7 +39,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: 'Usurpation d’identité utilisateur',
href: '/developers/user-impersonation',
- description: 'Permettre aux utilisateurs autorisés d’agir temporairement au nom des utilisateurs finaux, utile pour le dépannage, le support client et les tâches administratives.',
+ description: 'Permettez aux utilisateurs autorisés d’agir temporairement au nom des utilisateurs finaux, utile pour le dépannage, le support client et les tâches administratives.',
customProps: {
icon: ,
}
@@ -48,7 +57,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: 'Clés de signature',
href: '/developers/signing-keys',
- description: 'Fournit une clé de signature au niveau du système, via le coffre-fort de mots de passe, rendant le service d’authentification plus sécurisé.',
+ description: 'Fournit une clé de signature au niveau système, via le coffre-fort de mots de passe, rendant le service d’authentification plus sécurisé.',
customProps: {
icon: ,
}
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
index b90d345beae..5056b1f63ee 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
@@ -1,5 +1,5 @@
---
-sidebar_position: 6
+sidebar_position: 7
---
# Journaux d’audit
@@ -8,13 +8,13 @@ Le journal d’audit de Logto vous permet de surveiller facilement l’activité
## Afficher tous les journaux \{#view-all-logs}
-Accédez à Console > Journaux d’audit. Logto capture et organise les événements d’authentification (Authentication) dans un tableau. Il enregistre le nom de l’événement, l’utilisateur, l’application et l’horodatage. Vous pouvez affiner les résultats en filtrant selon le nom de l’événement et le nom de l’application. En cliquant sur un événement spécifique, vous obtiendrez des détails supplémentaires.
+Accédez à Console > Journaux d’audit. Logto capture et organise les événements d’authentification dans un tableau. Il enregistre le nom de l’événement, l’utilisateur, l’application et l’horodatage. Vous pouvez affiner les résultats en filtrant selon le nom de l’événement et le nom de l’application. En cliquant sur un événement spécifique, vous obtiendrez des détails supplémentaires.
:::warning
-Les journaux d’audit ne contiennent que les journaux survenant lors du processus d’authentification (Authentication) des utilisateurs, les journaux des opérations de Management API ne sont pas enregistrés.
+Les journaux d’audit ne contiennent que les journaux survenant lors du processus d’authentification utilisateur, les opérations de Management API ne sont pas enregistrées.
:::
-## Capturer l’activité des utilisateurs au niveau du tenant \{#capture-user-activity-at-the-tenant-level}
+## Capturer l’activité utilisateur au niveau du tenant \{#capture-user-activity-at-the-tenant-level}
Les journaux de Logto offrent des détails complets, garantissant la facilité d’action et la sécurité des clients. Ils capturent et enregistrent les informations suivantes :
@@ -33,9 +33,9 @@ En conservant ces enregistrements d’événements, les organisations peuvent d
alt="Page de détails d’un journal d’audit réussi"
/>
-## Effectuer une analyse détaillée au niveau de l’utilisateur \{#perform-a-detailed-analysis-at-the-user-level}
+## Effectuer une analyse détaillée au niveau utilisateur \{#perform-a-detailed-analysis-at-the-user-level}
-Les administrateurs peuvent effectuer une analyse détaillée des journaux associés à des utilisateurs spécifiques, facilitant des enquêtes approfondies sur des événements particuliers. Le processus de navigation est simple et convivial.
+Les administrateurs peuvent effectuer une analyse détaillée des journaux associés à des utilisateurs spécifiques, facilitant ainsi des enquêtes approfondies sur des événements particuliers. Le processus de navigation est simple et convivial.
Pour accéder aux journaux spécifiques à un utilisateur, suivez ces étapes :
@@ -53,7 +53,7 @@ Pour accéder aux journaux spécifiques à un utilisateur, suivez ces étapes :
-### J’utilise Logto auto-hébergé et il faut plusieurs secondes pour obtenir les journaux d’audit, comment améliorer les performances ? \{#im-using-self-hosted-logto-and-it-takes-seconds-to-get-the-audit-logs-how-can-i-improve-the-performance}
+### J’utilise Logto auto-hébergé et il faut plusieurs secondes pour obtenir les journaux d’audit, comment puis-je améliorer les performances ? \{#im-using-self-hosted-logto-and-it-takes-seconds-to-get-the-audit-logs-how-can-i-improve-the-performance}
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
new file mode 100644
index 00000000000..0b11362067f
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
@@ -0,0 +1,81 @@
+---
+sidebar_position: 3
+---
+
+# Jeton d’identifiant personnalisé (Custom ID token)
+
+## Introduction \{#introduction}
+
+[Jeton d’identifiant (ID token)](https://auth.wiki/id-token) est un type spécial de jeton défini par le protocole [OpenID Connect (OIDC)](https://auth.wiki/openid-connect). Il sert d’attestation d’identité émise par le serveur d’autorisation (Logto) après qu’un utilisateur s’est authentifié avec succès, transportant des revendications sur l’identité de l’utilisateur authentifié.
+
+Contrairement aux [jetons d’accès (Access tokens)](/developers/custom-token-claims) qui sont utilisés pour accéder à des ressources protégées, les jetons d’identifiant sont spécifiquement conçus pour transmettre l’identité de l’utilisateur authentifié aux applications clientes. Ce sont des [JSON Web Tokens (JWTs)](https://auth.wiki/jwt) qui contiennent des revendications sur l’événement d’authentification et l’utilisateur authentifié.
+
+## Fonctionnement des revendications du jeton d’identifiant \{#how-id-token-claims-work}
+
+Dans Logto, les revendications du jeton d’identifiant sont divisées en deux catégories :
+
+1. **Revendications OIDC standard** : Définies par la spécification OIDC, ces revendications sont entièrement déterminées par les portées demandées lors de l’authentification.
+2. **Revendications étendues** : Revendications étendues par Logto pour transporter des informations d’identité supplémentaires, contrôlées par un **modèle à double condition** (Portée + Bascule).
+
+```mermaid
+flowchart TD
+ A[Requête d’authentification utilisateur] --> B{Portées demandées}
+ B --> C[Portées OIDC standard]
+ B --> D[Portées étendues]
+ C --> E[Revendications standard incluses dans le jeton d’identifiant]
+ D --> F{Bascule activée dans la console ?}
+ F -->|Oui| G[Revendications étendues incluses dans le jeton d’identifiant]
+ F -->|Non| H[Revendications non incluses]
+```
+
+## Revendications OIDC standard \{#standard-oidc-claims}
+
+Les revendications standard sont entièrement régies par la spécification OIDC. Leur inclusion dans le jeton d’identifiant dépend uniquement des portées que votre application demande lors de l’authentification. Logto ne propose aucune option pour désactiver ou exclure sélectivement des revendications standard individuelles.
+
+Le tableau suivant montre la correspondance entre les portées standard et leurs revendications correspondantes :
+
+| Portée | Revendications |
+| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `openid` | `sub` |
+| `profile` | `name`, `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `picture`, `website`, `gender`, `birthdate`, `zoneinfo`, `locale`, `updated_at` |
+| `email` | `email`, `email_verified` |
+| `phone` | `phone_number`, `phone_number_verified` |
+| `address` | `address` |
+
+Par exemple, si votre application demande les portées `openid profile email`, le jeton d’identifiant inclura toutes les revendications des portées `openid`, `profile` et `email`.
+
+## Revendications étendues \{#extended-claims}
+
+Au-delà des revendications OIDC standard, Logto étend des revendications supplémentaires qui transportent des informations d’identité spécifiques à l’écosystème Logto. Ces revendications étendues suivent un **modèle à double condition** pour être incluses dans le jeton d’identifiant :
+
+1. **Condition de portée** : L’application doit demander la portée correspondante lors de l’authentification.
+2. **Bascule dans la console** : L’administrateur doit activer l’inclusion de la revendication dans le jeton d’identifiant via Logto Console.
+
+Les deux conditions doivent être satisfaites simultanément. La portée sert de déclaration d’accès au niveau du protocole, tandis que la bascule sert de contrôle d’exposition au niveau du produit — leurs responsabilités sont claires et non substituables.
+
+### Portées et revendications étendues disponibles \{#available-extended-scopes-and-claims}
+
+| Portée | Revendications | Description | Inclus par défaut |
+| ------------------------------------ | ------------------------------ | ----------------------------------------------------- | ----------------- |
+| `custom_data` | `custom_data` | Données personnalisées stockées sur l’utilisateur | |
+| `identities` | `identities`, `sso_identities` | Identités sociales et SSO liées de l’utilisateur | |
+| `roles` | `roles` | Rôles attribués à l’utilisateur | ✅ |
+| `urn:logto:scope:organizations` | `organizations` | Identifiants des organisations de l’utilisateur | ✅ |
+| `urn:logto:scope:organizations` | `organization_data` | Données d’organisation de l’utilisateur | |
+| `urn:logto:scope:organization_roles` | `organization_roles` | Affectations de rôles d’organisation de l’utilisateur | ✅ |
+
+### Configuration dans Logto Console \{#configure-in-logto-console}
+
+Pour activer les revendications étendues dans le jeton d’identifiant :
+
+1. Accédez à Console > JWT personnalisé.
+2. Activez les revendications que vous souhaitez inclure dans le jeton d’identifiant.
+3. Assurez-vous que votre application demande les portées correspondantes lors de l’authentification.
+
+## Ressources associées \{#related-resources}
+
+Jeton d’accès personnalisé
+
+
+ OpenID Connect Core - Jeton d’identifiant
+
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
index 2db94c39705..6b557c03fcd 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
@@ -2,19 +2,19 @@
sidebar_position: 2
---
-# Revendications personnalisées de jeton
+# Jeton d’accès personnalisé (Custom access token)
-Logto offre la flexibilité d’ajouter des revendications personnalisées dans les jetons d’accès (JWT / Jeton opaque). Grâce à cette fonctionnalité, vous pouvez inclure des informations supplémentaires pour votre logique métier, toutes transmises de manière sécurisée dans les jetons et récupérables via introspection dans le cas des jetons opaques.
+Logto offre la flexibilité d’ajouter des revendications personnalisées (custom claims) dans les jetons d’accès (Jeton d’accès (Access token) / Jeton opaque (Opaque token)). Grâce à cette fonctionnalité, vous pouvez inclure des informations supplémentaires pour votre logique métier, toutes transmises de manière sécurisée dans les jetons et récupérables via introspection dans le cas des jetons opaques.
## Introduction \{#introduction}
-Les [Jetons d’accès (Access tokens)](https://auth.wiki/access-token) jouent un rôle essentiel dans le processus d’authentification (Authentication) et d’autorisation (Authorization), transportant les informations d’identité du sujet et les permissions, et sont transmis entre le [serveur Logto](/concepts/core-service) (servant de serveur d’authentification ou fournisseur d’identité, IdP), votre serveur de service web (fournisseur de ressources), et les applications clientes (clients).
+Les [Jetons d’accès (Access tokens)](https://auth.wiki/access-token) jouent un rôle essentiel dans le processus d’authentification (Authentification) et d’autorisation (Autorisation), transportant les informations d’identité du sujet et les permissions (Permissions), et sont transmis entre le [serveur Logto](/concepts/core-service) (agissant comme serveur d’authentification ou fournisseur d’identité, IdP), votre serveur de service web (fournisseur de ressources), et les applications clientes (clients).
-Les [Revendications de jeton (Token claims)](https://auth.wiki/claim) sont les paires clé-valeur qui fournissent des informations sur une entité ou sur le jeton lui-même. Les revendications peuvent inclure des informations utilisateur, la date d’expiration du jeton, des permissions, et d’autres métadonnées pertinentes pour le processus d’authentification (Authentication) et d’autorisation (Authorization).
+Les [Revendications de jeton (Token claims)](https://auth.wiki/claim) sont des paires clé-valeur qui fournissent des informations sur une entité ou sur le jeton lui-même. Les revendications peuvent inclure des informations utilisateur, la date d’expiration du jeton, des permissions (Permissions), et d’autres métadonnées pertinentes pour le processus d’authentification (Authentification) et d’autorisation (Autorisation).
Il existe deux types de jetons d’accès dans Logto :
-- **JSON Web Token :** [JSON Web Token (JWT)](https://auth.wiki/jwt) est un format populaire qui encode les revendications de manière sécurisée et lisible par les clients. Les revendications courantes comme `sub`, `iss`, `aud` etc. sont utilisées conformément au protocole OAuth 2.0 (Voir [ce lien](https://datatracker.ietf.org/doc/html/rfc7519#section-4) pour plus de détails). Les JWT permettent aux consommateurs d’accéder directement aux revendications sans étapes de validation supplémentaires. Dans Logto, les jetons d’accès sont émis au format JWT par défaut lorsqu’un client initie des requêtes d’autorisation de ressources ou d’organisations spécifiques.
+- **JSON Web Token :** [JSON Web Token (JWT)](https://auth.wiki/jwt) est un format populaire qui encode les revendications de manière sécurisée et lisible par les clients. Les revendications courantes comme `sub`, `iss`, `aud`, etc. sont utilisées conformément au protocole OAuth 2.0 (Voir [ce lien](https://datatracker.ietf.org/doc/html/rfc7519#section-4) pour plus de détails). Les JWT permettent aux consommateurs d’accéder directement aux revendications sans étapes de validation supplémentaires. Dans Logto, les jetons d’accès sont émis au format JWT par défaut lorsqu’un client initie des requêtes d’autorisation de ressources ou d’organisations spécifiques.
- **Jeton opaque (Opaque token) :** Un [jeton opaque](http://localhost:3000/concepts/opaque-token) n’est pas autonome et nécessite toujours une étape de validation supplémentaire via le point de terminaison [introspection de jeton](https://auth.wiki/token-introspection). Malgré leur format non transparent, les jetons opaques permettent d’obtenir des revendications et d’être transmis de manière sécurisée entre les parties. Les revendications de jeton sont stockées en toute sécurité sur le serveur Logto et accessibles par les applications clientes via le point de terminaison d’introspection de jeton. Les jetons d’accès sont émis au format opaque lorsqu’aucune ressource ou organisation spécifique n’est incluse dans la requête d’autorisation. Ces jetons sont principalement utilisés pour accéder au point de terminaison OIDC `userinfo` et à d’autres usages généraux.
Dans de nombreux cas, les revendications standard ne suffisent pas à répondre aux besoins spécifiques de vos applications, que vous utilisiez des JWT ou des jetons opaques. Pour y remédier, Logto offre la flexibilité d’ajouter des revendications personnalisées dans les jetons d’accès. Grâce à cette fonctionnalité, vous pouvez inclure des informations supplémentaires pour votre logique métier, toutes transmises de manière sécurisée dans les jetons et récupérables via introspection dans le cas des jetons opaques.
@@ -40,7 +40,7 @@ sequenceDiagram
IdP-->>IdP: Fusionner la charge utile brute et les revendications supplémentaires
IdP-->>IdP: Signer & chiffrer la charge utile pour obtenir le jeton d’accès
deactivate IdP
- IdP-->>U: Émettre le jeton d’accès au format JWT
+ IdP-->>U: Émettre un jeton d’accès au format JWT
par Obtenir un service via l’API
U->>SP: requête de service (avec jeton d’accès JWT)
SP-->>U: réponse du service
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
index ec966b67193..b4ebe685c37 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
@@ -7,32 +7,32 @@ sidebar_position: 2
# Cas d’utilisation courants
-Dans cette section, nous vous proposons quelques exemples pour vous aider à comprendre certains scénarios où les [revendications personnalisées de jeton](/developers/custom-token-claims) peuvent être utiles, en vous offrant quelques références. Ainsi, lorsque vous rencontrez des difficultés dans la gestion des accès, vous pourrez évaluer si les revendications personnalisées de jeton peuvent vous apporter de la commodité.
+Dans cette section, nous vous proposons quelques exemples pour vous aider à comprendre certains scénarios où les [revendications personnalisées dans le jeton d’accès](/developers/custom-token-claims) peuvent être utiles, en vous offrant quelques références. Ainsi, lorsque vous rencontrez des difficultés dans la gestion des accès, vous pourrez évaluer si les revendications personnalisées dans le jeton d’accès peuvent vous apporter de la commodité.
## Rendre possible le contrôle d’accès basé sur les attributs (ABAC) \{#make-attribute-based-access-control-abac-possible}
-Le [contrôle d’accès basé sur les attributs (ABAC)](https://auth.wiki/abac) est un modèle de contrôle d’accès qui utilise des attributs (tels que les rôles des utilisateurs, les propriétés des ressources et les conditions environnementales) pour prendre des décisions de contrôle d’accès. Il s’agit d’une méthode flexible et dynamique pour gérer l’accès aux ressources protégées.
+[Contrôle d’accès basé sur les attributs (ABAC)](https://auth.wiki/abac) est un modèle de contrôle d’accès qui utilise des attributs (tels que les rôles des utilisateurs, les propriétés des ressources et les conditions environnementales) pour prendre des décisions de contrôle d’accès. Il s’agit d’une méthode flexible et dynamique pour gérer l’accès aux ressources protégées.
-Supposons que vous développez une application, et que la sortie de l’application se déroule en deux phases : bêta publique et lancement officiel. Même après le lancement officiel de l’application, vous souhaitez que les anciens utilisateurs ayant participé à la bêta publique puissent continuer à utiliser les fonctionnalités payantes.
+Supposons que vous développez une application, et que la sortie de l’application est divisée en deux phases : bêta publique et lancement officiel. Même après le lancement officiel de l’application, vous souhaitez que les anciens utilisateurs ayant participé à la bêta publique continuent à utiliser les fonctionnalités payantes.
Après le lancement officiel de l’application, vous utilisez la fonctionnalité de [contrôle d’accès basé sur les rôles (RBAC)](/authorization/role-based-access-control) de Logto pour mettre en œuvre le contrôle d’accès à l’utilisation des fonctionnalités payantes. Pour vérifier facilement si un utilisateur utilisait déjà l’application pendant la phase de bêta publique, vous pouvez utiliser la méthode `getCustomJwtClaims()` pour ajouter une revendication `createdAt` dans la charge utile du jeton.
Ensuite, lors du contrôle d’accès dans vos API protégées, vous devez autoriser les jetons d’accès qui remplissent l’une des conditions suivantes :
-1. Dans le contexte RBAC, disposer de la portée pour accéder aux ressources payantes.
+1. Avec le contexte RBAC, disposer de la portée pour accéder aux ressources payantes.
2. Le champ `createdAt` est antérieur à la date de fin de la phase de bêta publique.
-S’il n’existait pas de fonctionnalité de revendications personnalisées de jeton, lors de la vérification des permissions pour l’[autorisation](/authorization), il serait nécessaire d’appeler la Management API Logto pour vérifier si l’utilisateur possédant le jeton d’accès actuel dispose des permissions correspondant au rôle requis par une certaine ressource API.
+S’il n’existe pas de fonctionnalité de revendications personnalisées dans le jeton, lors de la vérification des permissions pour l’[autorisation](/authorization), il est nécessaire d’appeler la Management API Logto pour vérifier si l’utilisateur possédant le jeton d’accès actuel dispose des permissions correspondant au rôle requis par une certaine ressource API.
-Dans un scénario similaire, supposons que votre application affiche des vœux d’anniversaire sur la page de connexion si l’anniversaire de l’utilisateur approche. Vous pouvez utiliser les revendications personnalisées de jeton pour ajouter un champ anniversaire à la [charge utile du jeton](/user-management/personal-access-token#example-token-exchange), qui pourra servir à déterminer s’il faut afficher un message spécifique.
+Dans un scénario similaire, supposons que votre application affiche des vœux d’anniversaire sur la page de connexion si l’anniversaire de l’utilisateur approche. Vous pouvez utiliser les revendications personnalisées dans le jeton pour ajouter un champ anniversaire à la [charge utile du jeton](/user-management/personal-access-token#example-token-exchange), qui pourra servir à déterminer s’il faut afficher un message spécifique.
-## Bloquer manuellement l’émission de jetons \{#manually-block-token-issuance}
+## Bloquer manuellement l’émission du jeton \{#manually-block-token-issuance}
Supposons que Joe gère un jeu en ligne et utilise Logto comme système de [gestion des identités et des accès (IAM)](https://auth.wiki/iam).
-Imaginons que ce jeu nécessite des recharges pour acheter du temps de jeu. Joe enregistre le solde de chaque utilisateur dans son service de jeu et le déduit continuellement au fur et à mesure que le temps de jeu s’accumule. Joe souhaite forcer les joueurs à se déconnecter lorsque leur solde est épuisé afin de les inciter à recharger.
+Imaginons que ce jeu nécessite des recharges pour acheter du temps de jeu. Joe enregistre le solde de chaque utilisateur dans son service de jeu et le déduit continuellement à mesure que le temps de jeu s’accumule. Joe souhaite forcer les joueurs à se déconnecter lorsque leur solde est épuisé afin de les inciter à recharger.
-À ce stade, Joe peut également utiliser la fonctionnalité de revendications personnalisées de jeton fournie par Logto pour atteindre cet objectif :
+À ce stade, Joe peut également utiliser la fonctionnalité de revendications personnalisées dans le jeton fournie par Logto pour atteindre cet objectif :
1. Dans le script, un appel API externe [récupérer des données externes](/developers/custom-token-claims/create-script/#step-3-fetch-external-data) peut être utilisé pour obtenir le solde actuel du joueur depuis le serveur de jeu de Joe.
2. Si le solde est inférieur ou égal à 0, la méthode [`api.denyAccess()`](/developers/custom-token-claims/create-script/#api) peut être utilisée pour bloquer l’émission du jeton.
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
index e1496f59685..c1cc5c0fcc8 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
@@ -1,13 +1,13 @@
---
id: create-script
-title: Créer un script de revendications personnalisées pour le jeton
-sidebar_label: Créer un script de revendications personnalisées pour le jeton
+title: Créer un script de jeton d’accès personnalisé
+sidebar_label: Créer un script de jeton d’accès personnalisé
sidebar_position: 3
---
-# Créer un script de revendications personnalisées pour le jeton
+# Créer un script de jeton d’accès personnalisé (Create a custom access token script)
-Pour [ajouter des revendications personnalisées](/developers/custom-token-claims) au [jeton d’accès (Access token)](https://auth.wiki/access-token), vous devez fournir un script qui retourne un objet contenant ces revendications. Le script doit être écrit comme une fonction `JavaScript` qui retourne un objet avec les revendications personnalisées.
+Pour [ajouter des revendications personnalisées](/developers/custom-token-claims) au [jeton d’accès](https://auth.wiki/access-token), vous devez fournir un script qui retourne un objet contenant ces revendications. Le script doit être écrit comme une fonction `JavaScript` qui retourne un objet avec les revendications personnalisées.
1. Accédez à Console > JWT personnalisé.
2. Il existe deux types différents de jetons d’accès pour lesquels vous pouvez personnaliser les revendications du jeton d’accès :
@@ -20,25 +20,25 @@ Pour [ajouter des revendications personnalisées](/developers/custom-token-claim
Choisissez le type de jeton d’accès que vous souhaitez personnaliser, puis cliquez sur le bouton **Ajouter des revendications personnalisées** pour créer un nouveau script.
:::note
-La fonctionnalité de revendications personnalisées pour le jeton est uniquement disponible pour :
+La fonctionnalité de revendications personnalisées de jeton est uniquement disponible pour :
- les utilisateurs de [Logto OSS](/logto-oss)
-- les locataires [Logto Cloud avec un environnement de développement](/logto-cloud/tenant-settings#development)
-- les locataires Logto Cloud payants avec un environnement de production (y compris les [locataires Pro et Enterprise](https://logto.io/pricing))
+- les locataires [Logto Cloud avec environnement de développement](/logto-cloud/tenant-settings#development)
+- les locataires Logto Cloud payants avec environnement de production (y compris [locataires Pro et locataires Enterprise](https://logto.io/pricing))
:::
## Implémenter la fonction `getCustomJwtClaims()` \{#implement-getcustomjwtclaims-function}
-Dans la page de détails **JWT personnalisé**, vous trouverez l’éditeur de script pour écrire votre script de revendications personnalisées pour le jeton. Le script doit être une fonction `JavaScript` qui retourne un objet de revendications personnalisées.
+Dans la page de détails **JWT personnalisé**, vous trouverez l’éditeur de script pour écrire votre script de revendications personnalisées. Le script doit être une fonction `JavaScript` qui retourne un objet de revendications personnalisées.
## Étape 1 : Modifier le script \{#step-1-edit-the-script}
-Utilisez l’éditeur de code à gauche pour modifier le script. Un `getCustomJwtClaims` par défaut avec une valeur de retour d’objet vide est fourni pour commencer. Vous pouvez modifier la fonction pour retourner un objet contenant vos propres revendications personnalisées.
+Utilisez l’éditeur de code à gauche pour modifier le script. Une fonction `getCustomJwtClaims` par défaut avec une valeur de retour d’objet vide est fournie pour commencer. Vous pouvez modifier la fonction pour retourner un objet contenant vos propres revendications personnalisées.
```jsx
const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
@@ -85,20 +85,20 @@ Vous trouverez la définition de type détaillée de l’objet de charge utile d
### context (Disponible uniquement pour le jeton d’accès utilisateur) \{#context-only-available-for-user-access-token}
-L’objet context contient les données utilisateur et les données de subvention pertinentes pour le processus d’autorisation (Authorization) en cours.
+L’objet context contient les données utilisateur et les données de subvention pertinentes pour le processus d’autorisation actuel.
- **Objet de données utilisateur**
- Pour le jeton d’accès utilisateur, Logto fournit un contexte de données utilisateur supplémentaire auquel vous pouvez accéder. L’objet de données utilisateur contient toutes les données de profil utilisateur et les données d’appartenance à l’organisation (Organization) dont vous pourriez avoir besoin pour configurer les revendications personnalisées. Veuillez consulter [Utilisateurs](/user-management/user-data) et [Organisations](/organizations/organization-management#organization-data-structure) pour plus de détails.
+ Pour le jeton d’accès utilisateur, Logto fournit un contexte de données utilisateur supplémentaire auquel vous pouvez accéder. L’objet de données utilisateur contient toutes les données de profil utilisateur et les données d’appartenance à l’organisation dont vous pourriez avoir besoin pour configurer les revendications personnalisées. Veuillez consulter [Utilisateurs](/user-management/user-data) et [Organisations](/organizations/organization-management#organization-data-structure) pour plus de détails.
- **Objet de données de subvention**
Pour le jeton d’accès utilisateur accordé par échange de jeton d’usurpation, Logto fournit un contexte de données de subvention supplémentaire auquel vous pouvez accéder. L’objet de données de subvention contient le contexte personnalisé du jeton sujet. Veuillez consulter [Usurpation d’identité utilisateur](/developers/user-impersonation) pour plus de détails.
- **Objet de données d’interaction utilisateur**
- Pour un jeton d’accès utilisateur donné, il peut y avoir des cas où vous devez accéder aux détails d’interaction de l’utilisateur pour la session d’autorisation (Authorization) en cours. Par exemple, vous pourriez avoir besoin de récupérer l’identité SSO d’entreprise de l’utilisateur utilisée pour la connexion. Cet objet de données d’interaction utilisateur contient les données d’interaction les plus récentes soumises par l’utilisateur, y compris :
+ Pour un jeton d’accès utilisateur donné, il peut y avoir des cas où vous devez accéder aux détails d’interaction de l’utilisateur pour la session d’autorisation en cours. Par exemple, vous pourriez avoir besoin de récupérer l’identité SSO d’entreprise de l’utilisateur utilisée pour la connexion. Cet objet de données d’interaction utilisateur contient les données d’interaction les plus récentes soumises par l’utilisateur, y compris :
- | Propriété | Description | Type |
- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
- | `interactionEvent` | L’événement d’interaction de l’utilisateur actuel | `SignIn` ou `Register` |
- | `userId` | L’identifiant utilisateur de l’interaction utilisateur actuelle | `string` |
- | `verificationRecords` | Une liste d’enregistrements de vérification soumis par l’utilisateur pour s’identifier et se vérifier lors des interactions. | `VerificationRecord[]` |
+ | Propriété | Description | Type |
+ | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
+ | `interactionEvent` | L’événement d’interaction de l’utilisateur actuel | `SignIn` ou `Register` |
+ | `userId` | L’identifiant utilisateur de l’interaction utilisateur actuelle | `string` |
+ | `verificationRecords` | Liste des enregistrements de vérification soumis par l’utilisateur pour identifier et vérifier son identité lors des interactions. | `VerificationRecord[]` |
Type d’enregistrement de vérification :
@@ -234,7 +234,7 @@ L’objet context contient les données utilisateur et les données de subventio
### environmentVariables \{#environmentvariables}
-Utilisez la section **Définir les variables d’environnement** à droite pour configurer les variables d’environnement pour votre script. Vous pouvez utiliser ces variables pour stocker des informations sensibles ou des données de configuration que vous ne souhaitez pas coder en dur dans le script. Par exemple, des clés API, des secrets ou des URLs.
+Utilisez la section **Définir les variables d’environnement** à droite pour configurer les variables d’environnement de votre script. Vous pouvez utiliser ces variables pour stocker des informations sensibles ou des données de configuration que vous ne souhaitez pas coder en dur dans le script. Par exemple, des clés API, des secrets ou des URLs.
Toutes les variables d’environnement que vous définissez ici seront disponibles dans le script. Utilisez l’objet `environmentVariables` dans le paramètre d’entrée pour accéder à ces variables.
@@ -246,11 +246,11 @@ L’objet `api` fournit un ensemble de fonctions utilitaires que vous pouvez uti
api.denyAccess(message?: string): void
```
-La fonction `api.denyAccess()` vous permet de refuser le processus de délivrance du jeton avec un message personnalisé. Vous pouvez utiliser cette fonction pour appliquer une validation d’accès supplémentaire lors du processus de délivrance du jeton.
+La fonction `api.denyAccess()` vous permet de refuser la délivrance du jeton avec un message personnalisé. Vous pouvez utiliser cette fonction pour appliquer une validation d’accès supplémentaire lors du processus de délivrance du jeton.
## Étape 3 : Récupérer des données externes \{#step-3-fetch-external-data}
-Vous pouvez utiliser la fonction intégrée `fetch` de node pour récupérer des données externes dans votre script. La fonction `fetch` est basée sur les promesses et vous permet d’effectuer des requêtes HTTP vers des API externes.
+Vous pouvez utiliser la fonction intégrée `fetch` de node pour récupérer des données externes dans votre script. La fonction `fetch` est basée sur les promesses et vous permet de faire des requêtes HTTP vers des API externes.
```jsx
const getCustomJwtClaims = async ({ environmentVariables }) => {
@@ -269,7 +269,7 @@ const getCustomJwtClaims = async ({ environmentVariables }) => {
```
:::note
-Attention, toute récupération de données externes peut introduire une latence dans le processus de délivrance du jeton. Assurez-vous que l’API externe est fiable et suffisamment rapide pour répondre à vos exigences.
+Attention, toute récupération de données externe peut introduire une latence dans le processus de délivrance du jeton. Assurez-vous que l’API externe est fiable et suffisamment rapide pour répondre à vos exigences.
De plus :
@@ -279,14 +279,14 @@ De plus :
## Étape 4 : Tester le script \{#step-4-test-the-script}
-Assurez-vous de tester votre script avant de l’enregistrer. Cliquez sur l’onglet **Contexte de test** à droite de la page pour modifier la charge utile du jeton simulée et le contexte de données utilisateur pour les tests.
+Assurez-vous de tester votre script avant de l’enregistrer. Cliquez sur l’onglet **Contexte de test** à droite de la page pour modifier la charge utile du jeton simulé et le contexte de données utilisateur pour les tests.
Cliquez sur **Exécuter le test** dans le coin supérieur droit de l’éditeur pour exécuter le script avec les données simulées. Le résultat du script s’affichera dans le tiroir **Résultat du test**.
:::note
-Le résultat du test correspond à la sortie de la fonction `getCustomJwtClaims` avec les données simulées que vous avez définies ("revendications supplémentaires du jeton" obtenues après avoir terminé l’étape 3 dans [le diagramme de séquence](/developers/custom-token-claims/#how-do-custom-token-claims-work)). La charge utile réelle du jeton et le contexte de données utilisateur seront différents lorsque le script sera exécuté lors du processus de délivrance du jeton.
+Le résultat du test est la sortie de la fonction `getCustomJwtClaims` avec les données simulées que vous avez définies ("revendications de jeton supplémentaires" obtenues après avoir complété l’étape 3 dans [le diagramme de séquence](/developers/custom-token-claims/#how-do-custom-token-claims-work)). La charge utile réelle du jeton et le contexte de données utilisateur seront différents lorsque le script sera exécuté lors du processus de délivrance du jeton.
:::
-Cliquez sur le bouton **Créer** pour enregistrer le script. Le script de revendications personnalisées pour le jeton sera enregistré et appliqué au processus de délivrance du jeton d’accès (Access token).
+Cliquez sur le bouton **Créer** pour enregistrer le script. Le script de revendications personnalisées sera enregistré et appliqué au processus de délivrance du jeton d’accès.
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
index af8c3eb9d43..5537d8cb327 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
@@ -2,18 +2,18 @@
id: sdk-conventions
title: Conventions des SDK de plateforme
sidebar_label: Conventions des SDK de plateforme
-sidebar_position: 7
+sidebar_position: 8
---
# Conventions des SDK de plateforme
-Logto offre un service d'authentification web très puissant et flexible.
+Logto fournit un service d'authentification web très puissant et flexible.
-Dans l'utilisation pratique des services de Logto, pour plus de commodité, il est souvent nécessaire pour les développeurs d'intégrer le SDK Logto dans leurs propres applications clientes pour gérer le statut de connexion des utilisateurs, les permissions, et plus encore.
+Dans l'utilisation pratique des services Logto, pour plus de commodité, il est souvent nécessaire pour les développeurs d'intégrer le SDK Logto dans leurs propres applications clientes afin de gérer l'état de connexion des utilisateurs, les permissions (Permissions), et plus encore.
Vous pouvez trouver les SDK pour tous les langages de programmation / frameworks pris en charge par Logto [ici](/quick-starts).
-Si vous n'avez pas de chance et ne trouvez pas le SDK que vous souhaitez, voici une convention que vous pouvez suivre pour implémenter le SDK pour le langage de programmation de votre choix, facilitant ainsi l'utilisation des services Logto.
+Si vous n'avez pas de chance et que vous ne trouvez pas le SDK que vous souhaitez, voici une convention que vous pouvez suivre pour implémenter le SDK dans le langage de programmation de votre choix, ce qui facilitera l'utilisation des services Logto.
Cette convention contient trois parties principales :
@@ -23,14 +23,14 @@ Cette convention contient trois parties principales :
Convention du SDK de plateforme
-## Ressources connexes \{#related-resources}
+## Ressources associées \{#related-resources}
Implémenter un SDK OIDC simple côté client
- Créer un SDK basé sur un framework Node.js pour Logto en quelques minutes
+ Créer un SDK basé sur Node.js pour Logto en quelques minutes
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
index 30f41e6b6fa..2134f0294b0 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
@@ -2,25 +2,25 @@
id: signing-keys
title: Clés de signature
sidebar_label: Clés de signature
-sidebar_position: 4
+sidebar_position: 5
---
# Clés de signature
-Les [clés de signature OIDC](https://auth.wiki/signing-key) de Logto, également appelées "clés privées OIDC" et "clés de cookie OIDC", sont les clés utilisées pour signer les JWTs ([jetons d’accès (Access tokens)](https://auth.wiki/access-token) et [jetons d’identifiant (ID tokens)](https://auth.wiki/id-token)) ainsi que les cookies de navigateur dans les [sessions de connexion](/end-user-flows/sign-out#sign-in-session) Logto. Ces clés de signature sont générées lors de l'initialisation de la base de données Logto ([open-source](/logto-oss)) ou lors de la création d'un nouveau tenant ([Cloud](/logto-cloud)) et peuvent être gérées via le [CLI](/logto-oss/using-cli) (open-source), les Management APIs ou l'interface Console UI.
+Les [clés de signature OIDC](https://auth.wiki/signing-key) de Logto, également appelées "clés privées OIDC" et "clés de cookie OIDC", sont les clés utilisées pour signer les JWTs ([jetons d’accès (Access tokens)](https://auth.wiki/access-token) et [jetons d’identifiant (ID tokens)](https://auth.wiki/id-token)) ainsi que les cookies de navigateur dans les [sessions de connexion](/end-user-flows/sign-out#sign-in-session) Logto. Ces clés de signature sont générées lors de l'initialisation de la base de données Logto ([open-source](/logto-oss)) ou lors de la création d'un nouveau tenant ([Cloud](/logto-cloud)) et peuvent être gérées via la [CLI](/logto-oss/using-cli) (open-source), les Management APIs ou l'interface Console UI.
-Par défaut, Logto utilise l’algorithme à courbe elliptique (EC) pour générer les signatures numériques. Cependant, étant donné que les utilisateurs doivent souvent vérifier les signatures JWT et que de nombreux anciens outils ne prennent pas en charge l’algorithme EC (ne supportant que RSA), nous avons implémenté la fonctionnalité de rotation des clés privées et permis aux utilisateurs de choisir l’algorithme de signature (y compris RSA et EC). Cela garantit la compatibilité avec les services utilisant des outils de vérification de signature obsolètes.
+Par défaut, Logto utilise l'algorithme à courbe elliptique (EC) pour générer les signatures numériques. Cependant, étant donné que les utilisateurs doivent souvent vérifier les signatures JWT et que de nombreux outils plus anciens ne prennent pas en charge l'algorithme EC (ne supportant que RSA), nous avons implémenté la fonctionnalité de rotation des clés privées et permis aux utilisateurs de choisir l'algorithme de signature (y compris RSA et EC). Cela garantit la compatibilité avec les services utilisant des outils de vérification de signature obsolètes.
:::note
Théoriquement, les clés de signature ne devraient pas être divulguées et n'ont pas de date d'expiration, ce qui signifie qu'il n'est pas nécessaire de les faire tourner. Cependant, effectuer une rotation périodique de la clé de signature après une certaine période peut renforcer la sécurité.
:::
-## Comment ça fonctionne ? \{#how-it-works}
+## Comment cela fonctionne-t-il ? \{#how-it-works}
- **Clé privée OIDC**
- Lors de l'initialisation d'une instance Logto, une paire de clé publique et clé privée est automatiquement générée et enregistrée dans le fournisseur OIDC sous-jacent. Ainsi, lorsque Logto émet un nouveau JWT (jeton d’accès ou jeton d’identifiant), le jeton est signé avec la clé privée. Pendant ce temps, toute application cliente qui reçoit un JWT peut utiliser la clé publique associée pour vérifier la signature du jeton, afin de s'assurer que le jeton n'a pas été altéré par un tiers. La clé privée est protégée sur le serveur Logto. La clé publique, comme son nom l'indique, est publique et accessible à tous via l'interface `/oidc/jwks` du point de terminaison OIDC. Un algorithme de clé de signature peut être spécifié lors de la génération de la clé privée, et Logto utilise par défaut l’algorithme EC (Elliptic Curve). Les administrateurs peuvent changer l’algorithme par défaut en RSA (Rivest-Shamir-Adleman) en effectuant une rotation des clés privées.
+ Lors de l'initialisation d'une instance Logto, une paire de clé publique et clé privée est automatiquement générée et enregistrée dans le fournisseur OIDC sous-jacent. Ainsi, lorsque Logto émet un nouveau JWT (jeton d’accès ou jeton d’identifiant), le jeton est signé avec la clé privée. Parallèlement, toute application cliente recevant un JWT peut utiliser la clé publique associée pour vérifier la signature du jeton, afin de s'assurer que le jeton n'a pas été altéré par un tiers. La clé privée est protégée sur le serveur Logto. La clé publique, comme son nom l'indique, est accessible à tous et peut être consultée via l'interface `/oidc/jwks` du point de terminaison OIDC. Un algorithme de clé de signature peut être spécifié lors de la génération de la clé privée, et Logto utilise par défaut l'algorithme EC (Elliptic Curve). Les administrateurs peuvent changer l'algorithme par défaut pour RSA (Rivest-Shamir-Adleman) en effectuant une rotation des clés privées.
- **Clé de cookie OIDC**
- Lorsqu’un utilisateur initie un flux de connexion ou d’inscription, une "session OIDC" est créée sur le serveur, ainsi qu’un ensemble de cookies de navigateur. Avec ces cookies, le navigateur peut demander à l’Experience API Logto d’effectuer une série d’interactions au nom de l’utilisateur, telles que la connexion, l’inscription et la réinitialisation du mot de passe. Cependant, contrairement aux JWTs, les cookies sont uniquement signés et vérifiés par le service OIDC Logto lui-même, des mesures de cryptographie asymétrique ne sont donc pas nécessaires. Ainsi, il n’existe pas de clés publiques associées pour les clés de signature de cookie, ni d’algorithmes de chiffrement asymétrique.
+ Lorsqu'un utilisateur initie un flux de connexion ou d'inscription, une "session OIDC" est créée sur le serveur, ainsi qu'un ensemble de cookies de navigateur. Avec ces cookies, le navigateur peut demander à l’Experience API Logto d’effectuer une série d’interactions au nom de l’utilisateur, telles que la connexion, l’inscription et la réinitialisation du mot de passe. Cependant, contrairement aux JWTs, les cookies sont uniquement signés et vérifiés par le service OIDC Logto lui-même, des mesures de cryptographie asymétrique ne sont pas requises. Ainsi, nous n'avons pas de clés publiques associées pour les clés de signature de cookie, ni d'algorithmes de chiffrement asymétrique.
## Faire tourner les clés de signature depuis la Console UI \{#rotate-signing-keys-from-console-ui}
@@ -28,18 +28,18 @@ Logto introduit une fonctionnalité de "Rotation des clés de signature", qui vo
1. Accédez à Console > Clés de signature. À partir de là, vous pouvez gérer à la fois les clés privées OIDC et les clés de cookie OIDC.
2. Pour faire tourner la clé de signature, cliquez sur le bouton "Faire tourner les clés privées" ou "Faire tourner les clés de cookie". Lors de la rotation des clés privées, vous avez la possibilité de changer l’algorithme de signature.
-3. Vous trouverez un tableau qui liste toutes les clés de signature utilisées. Remarque : Vous pouvez supprimer la clé précédente, mais vous ne pouvez pas supprimer la clé actuelle.
+3. Vous trouverez également un tableau listant toutes les clés de signature en cours d’utilisation. Remarque : Vous pouvez supprimer la clé précédente, mais vous ne pouvez pas supprimer la clé actuelle.
- | Statut | Description |
- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------ |
- | Actuelle | Indique que cette clé est actuellement utilisée dans vos applications et APIs. |
- | Précédente | Fait référence à une clé précédemment utilisée mais qui a été remplacée. Les jetons existants signés avec cette clé restent valides. |
+ | Statut | Description |
+ | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
+ | Actuelle | Cela indique que cette clé est actuellement utilisée activement dans vos applications et APIs. |
+ | Précédente | Il s'agit d'une clé qui était utilisée précédemment mais qui a été remplacée. Les jetons existants signés avec cette clé restent valides. |
Veuillez noter que la rotation implique les trois actions suivantes :
-1. **Création d’une nouvelle clé de signature** : Cela obligera toutes vos **applications** et **APIs** à adopter la nouvelle clé de signature.
+1. **Création d'une nouvelle clé de signature** : Cela obligera toutes vos **applications** et **APIs** à adopter la nouvelle clé de signature.
2. **Rotation de la clé actuelle** : La clé existante sera désignée comme "précédente" après la rotation et ne sera plus utilisée par les nouvelles applications et APIs. Cependant, les jetons signés avec cette clé resteront valides.
-3. **Suppression de votre clé précédente** : Les clés étiquetées comme "précédente" seront révoquées et supprimées du tableau.
+3. **Suppression de votre clé précédente** : Les clés marquées comme "précédente" seront révoquées et supprimées du tableau.
:::warning
Ne faites jamais tourner les clés de signature consécutivement (deux fois ou plus), car cela pourrait invalider TOUS les jetons émis.
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
index ca118a97bea..8d7d75203fd 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
@@ -2,14 +2,14 @@
id: user-impersonation
title: Usurpation d’identité utilisateur
sidebar_label: Usurpation d’identité utilisateur
-sidebar_position: 3
+sidebar_position: 4
---
import TokenExchangePrerequisites from './fragments/_token-exchange-prerequisites.mdx';
-# Usurpation d’identité utilisateur
+# Usurpation d’identité utilisateur (User impersonation)
-Imaginez Sarah, une ingénieure support chez TechCorp, qui reçoit un ticket urgent d’Alex, un client qui ne peut pas accéder à une ressource critique. Pour diagnostiquer et résoudre efficacement le problème, Sarah doit voir exactement ce qu’Alex voit dans le système. C’est là que la fonctionnalité d’usurpation d’identité utilisateur de Logto devient précieuse.
+Imaginez Sarah, une ingénieure support chez TechCorp, qui reçoit un ticket urgent d’Alex, un client qui ne peut pas accéder à une ressource critique. Pour diagnostiquer et résoudre efficacement le problème, Sarah doit voir exactement ce qu’Alex voit dans le système. C’est là que la fonctionnalité d’usurpation d’identité utilisateur de Logto est utile.
L’usurpation d’identité utilisateur permet à des utilisateurs autorisés comme Sarah d’agir temporairement au nom d’autres utilisateurs comme Alex dans le système. Cette fonctionnalité puissante est inestimable pour le dépannage, l’assistance client et l’exécution de tâches administratives.
@@ -48,7 +48,7 @@ Voyons comment Sarah peut utiliser cette fonctionnalité pour aider Alex.
### Étape 1 : Demander l’usurpation \{#step-1-requesting-impersonation}
-Tout d’abord, l’application de support de Sarah doit demander l’usurpation auprès du serveur backend de TechCorp.
+Tout d’abord, l’application de support de Sarah doit demander l’usurpation au serveur backend de TechCorp.
**Requête (application de Sarah vers le serveur de TechCorp)**
@@ -113,7 +113,7 @@ Le serveur de TechCorp doit ensuite retourner ce jeton de sujet à l’applicati
-À présent, l’application de Sarah échange ce jeton de sujet contre un jeton d’accès représentant Alex, en spécifiant la ressource où le jeton sera utilisé.
+Maintenant, l’application de Sarah échange ce jeton de sujet contre un jeton d’accès représentant Alex, en spécifiant la ressource où le jeton sera utilisé.
**Requête (application de Sarah vers le point de terminaison de jeton Logto)**
@@ -215,8 +215,8 @@ async function impersonateUser(
// Étape 3 : Échanger le jeton de sujet contre un jeton d’accès
// highlight-start
- // Pour les applications web traditionnelles ou M2M, utiliser l’authentification Basic avec le secret client
- // Pour les SPA ou applications natives, inclure client_id dans le corps de la requête
+ // Pour les applications web traditionnelles ou M2M, utilisez l’authentification Basic avec le secret client
+ // Pour les SPA ou applications natives, incluez client_id dans le corps de la requête
const headers: Record = {
'Content-Type': 'application/x-www-form-urlencoded',
};
@@ -257,11 +257,11 @@ async function impersonateUser(
}
}
-// Sarah utilise cette fonction pour usurper Alex
+// Sarah utilise cette fonction pour usurper l’identité d’Alex
async function performImpersonation(): Promise {
try {
// highlight-start
- // Pour les applications web traditionnelles ou M2M, passer le secret client
+ // Pour les applications web traditionnelles ou M2M, passez le secret client
const accessToken = await impersonateUser(
'alex123',
'techcorp_support_app',
@@ -292,9 +292,9 @@ void performImpersonation();
Lors de l’utilisation du flux d’échange de jetons pour l’usurpation, le jeton d’accès émis peut inclure une revendication supplémentaire `act` (acteur). Cette revendication représente l’identité de la "partie agissante" — dans notre exemple, Sarah, qui effectue l’usurpation.
-Pour inclure la revendication `act`, l’application de Sarah doit fournir un `actor_token` dans la requête d’échange de jeton. Ce jeton doit être un jeton d’accès valide pour Sarah avec la portée `openid`. Voici comment l’inclure dans la requête d’échange de jeton :
+Pour inclure la revendication `act`, l’application de Sarah doit fournir un `actor_token` dans la requête d’échange de jetons. Ce jeton doit être un jeton d’accès valide pour Sarah avec la portée `openid`. Voici comment l’inclure dans la requête d’échange de jetons :
-Pour les applications web traditionnelles ou les applications machine à machine :
+Pour les applications web traditionnelles ou machine à machine :
```bash
POST /oidc/token HTTP/1.1
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
index 2e5c09a1e44..3fb5ea11190 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
@@ -1,14 +1,14 @@
---
-sidebar_position: 5
+sidebar_position: 6
---
# Webhooks
-Les [Webhooks](https://auth.wiki/webhook) Logto fournissent des notifications en temps réel pour divers événements, notamment les modifications des comptes utilisateurs, rôles, permissions, organisations, rôles d'organisation, permissions d'organisation, et [interactions utilisateur](/end-user-flows).
+Les [Webhooks](https://auth.wiki/webhook) Logto fournissent des notifications en temps réel pour divers événements, notamment les modifications des comptes utilisateurs, des rôles, des permissions, des organisations, des rôles d'organisation, des permissions d'organisation, et des [interactions utilisateur](/end-user-flows).
-Lorsqu'un événement est déclenché, Logto envoie une requête HTTP à l'URL de point de terminaison que vous fournissez, contenant des informations détaillées sur l'événement, telles que l'ID utilisateur, le nom d'utilisateur, l'e-mail et d'autres détails pertinents (pour plus d'informations sur les données incluses dans la charge utile et l'en-tête, consultez [Requête Webhook](/developers/webhooks/webhooks-request)). Votre application peut traiter cette requête et effectuer des actions personnalisées, comme envoyer un e-mail ou mettre à jour des données dans une base de données.
+Lorsqu'un événement est déclenché, Logto envoie une requête HTTP à l'URL de point de terminaison que vous fournissez, contenant des informations détaillées sur l'événement, telles que l'ID utilisateur, le nom d'utilisateur, l'e-mail et d'autres détails pertinents (pour en savoir plus sur les données incluses dans la charge utile et l'en-tête, consultez [Requête Webhook](/developers/webhooks/webhooks-request)). Votre application peut traiter cette requête et effectuer des actions personnalisées, comme envoyer un e-mail ou mettre à jour des données dans une base de données.
-Nous ajoutons continuellement de nouveaux événements en fonction des besoins des utilisateurs. Si vous avez des besoins spécifiques pour votre entreprise, n'hésitez pas à nous le faire savoir.
+Nous ajoutons continuellement de nouveaux événements en fonction des besoins des utilisateurs. Si vous avez des exigences spécifiques pour votre entreprise, n'hésitez pas à nous en faire part.
## Pourquoi utiliser un Webhook ? \{#why-use-webhook}
@@ -17,19 +17,19 @@ Les Webhooks offrent une communication en temps réel entre les applications, é
Voici quelques exemples d'utilisations courantes des Webhooks pour le CIAM :
- **Envoyer des e-mails :** Configurez un Webhook pour envoyer un e-mail de bienvenue aux nouveaux utilisateurs lors de l'inscription ou pour notifier les administrateurs lorsqu'un utilisateur se connecte depuis un nouvel appareil ou une nouvelle localisation.
-- **Envoyer des notifications :** Configurez un Webhook pour déclencher un assistant virtuel avec votre système CRM afin de fournir une assistance client en temps réel lors de l'inscription des utilisateurs.
-- **Effectuer des appels API supplémentaires** : Configurez un Webhook pour vérifier l'accès utilisateur en contrôlant leur domaine e-mail ou adresse IP, puis utilisez la Management API Logto pour attribuer les rôles appropriés avec les permissions de ressources.
-- **Synchronisation des données :** Configurez un Webhook pour tenir l'application informée des changements tels que la suspension ou la suppression de comptes utilisateurs.
-- **Générer des rapports :** Configurez un Webhook pour recevoir les données d'activité de connexion des utilisateurs et les exploiter pour créer des rapports sur l'engagement ou les habitudes d'utilisation.
+- **Envoyer des notifications :** Configurez un Webhook pour déclencher un assistant virtuel avec votre système CRM afin de fournir une assistance client en temps réel lorsque les utilisateurs s'inscrivent.
+- **Effectuer des appels API supplémentaires** : Configurez un Webhook pour vérifier l'accès utilisateur en contrôlant leur domaine e-mail ou leur adresse IP, puis utilisez la Management API Logto pour attribuer les rôles appropriés avec les permissions de ressource.
+- **Synchronisation des données :** Configurez un Webhook pour tenir l'application informée des changements tels que les suspensions ou suppressions de comptes utilisateurs.
+- **Générer des rapports** : Configurez un Webhook pour recevoir les données d'activité de connexion des utilisateurs et les exploiter pour créer des rapports sur l'engagement ou les habitudes d'utilisation.
## Termes \{#terms}
-| Élément | Description |
-| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| Événement (Event) | Lorsqu'une action spécifique est effectuée, elle déclenche un événement hook d'un type spécifique. Par exemple, Logto émettra un événement hook PostRegister lorsque l'utilisateur termine le processus d'inscription et crée un nouveau compte. |
-| Hook | Une ou plusieurs actions qui s'accrochent à un événement spécifique. L'action peut consister à appeler une API, exécuter des extraits de code, etc. |
-| Webhook | Un sous-type de hook qui consiste à appeler une API avec la charge utile de l'événement. |
-| Supposons qu'un développeur souhaite envoyer une notification lorsqu'un utilisateur se connecte via un nouvel appareil, il peut ajouter un webhook qui appelle son API de service de sécurité à l'événement PostSignIn. |
+| Élément | Description |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| Événement (Event) | Lorsqu'une action spécifique est effectuée, elle déclenche un événement hook d'un type spécifique. Par exemple, Logto émettra un événement hook PostRegister lorsque l'utilisateur aura terminé son inscription et créé un nouveau compte. |
+| Hook | Une ou plusieurs actions qui s'accrochent à un événement spécifique. L'action peut consister à appeler une API, exécuter des extraits de code, etc. |
+| Webhook | Un sous-type de hook qui consiste à appeler une API avec la charge utile de l'événement. |
+| Supposons qu'un développeur souhaite envoyer une notification lorsqu'un utilisateur se connecte via un nouvel appareil, il peut ajouter un webhook qui appelle l'API de son service de sécurité à l'événement PostSignIn. |
Voici un exemple d'activation de deux webhooks pour l'événement `PostSignIn` dans Logto :
@@ -78,7 +78,7 @@ Bien que les webhooks synchrones rendraient le flux de connexion utilisateur plu
-Voir le guide [Gérer le changement de permission utilisateur](/authorization/global-api-resources/#optional-handle-user-permission-change).
+Consultez le guide [Gérer le changement de permission utilisateur](/authorization/global-api-resources/#optional-handle-user-permission-change).
@@ -89,7 +89,7 @@ Voir le guide [Gérer le changement de permission utilisateur](/authorization/gl
-Pour le point de terminaison recevant les Webhooks, il doit retourner une réponse 2xx aussi rapidement que possible pour indiquer à Logto que le Webhook a bien été reçu. Comme chaque utilisateur a une logique de traitement très différente pour les Webhooks, des tâches trop complexes peuvent prendre plusieurs secondes, provoquant un timeout du Webhook Logto. La meilleure pratique consiste à maintenir votre propre file d'attente d'événements ; dès réception du Webhook Logto, insérez l'événement dans la file d'attente et retournez une réponse 2xx à Logto. Ensuite, laissez votre propre worker traiter les tâches dans la file d'attente étape par étape. Si le worker rencontre une erreur, gérez-la sur votre propre serveur.
+Pour le point de terminaison recevant les Webhooks, il doit retourner une réponse 2xx aussi rapidement que possible pour indiquer à Logto que le Webhook a bien été reçu. Comme chaque utilisateur a une logique de traitement très différente pour les Webhooks, des tâches trop complexes peuvent prendre plusieurs secondes, provoquant un timeout du Webhook Logto. La meilleure pratique consiste à maintenir votre propre file d'événements ; dès réception du Webhook Logto, insérez l'événement dans la file et retournez une réponse 2xx à Logto. Ensuite, laissez votre propre worker traiter les tâches de la file une par une. Si le worker rencontre une erreur, gérez-la sur votre propre serveur.
@@ -100,7 +100,7 @@ Pour le point de terminaison recevant les Webhooks, il doit retourner une répon
-Oui, vous pouvez obtenir l'adresse IP, les user agents, etc. dans la charge utile du Webhook. Si vous avez besoin d'informations qui ne sont pas encore prises en charge, vous pouvez créer une demande de fonctionnalité sur GitHub issues, ou nous contacter.
+Oui, vous pouvez obtenir l'adresse IP, les agents utilisateurs, etc. dans la charge utile du Webhook. Si vous avez besoin d'informations qui ne sont pas encore prises en charge, vous pouvez créer une demande de fonctionnalité sur GitHub issues ou nous contacter.
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
index 805a6c825c3..6946b13b042 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
@@ -1,34 +1,60 @@
---
sidebar_position: 9
sidebar_custom_props:
- sublist_label: Parcours du compte
+ sublist_label: Flux de compte
---
import GearIcon from '@site/src/assets/gear.svg';
# Paramètres du compte
-Logto fournit deux collections d’API de paramètres de compte permettant aux utilisateurs de gérer leur compte et leurs profils stockés dans Logto.
+Logto propose plusieurs moyens permettant aux utilisateurs de gérer leur compte et leurs profils stockés dans Logto.
-## Utiliser les Account API (Recommandé) \{#use-account-apis-recommended}
+## Utiliser l’interface préconstruite Account Center (Recommandé) \{#use-prebuilt-account-center-ui-recommended}
-Les Account API de Logto sont des points de terminaison front-end prêts à l’emploi qui permettent aux utilisateurs finaux de consulter et de mettre à jour en toute sécurité leurs propres informations avec des vérifications de permissions intégrées. Il suffit de les intégrer dans votre application cliente pour offrir une page de paramètres de compte en libre-service, élégante et sécurisée.
+Logto fournit une interface préconstruite Account Center qui offre des pages prêtes à l’emploi pour permettre aux utilisateurs finaux de gérer les paramètres de leur compte. C’est le moyen le plus rapide d’ajouter la gestion de compte à votre application.
Fonctionnalités clés :
-- **Paramètres utilisateur final** : Les utilisateurs gèrent leurs propres identifiants et identifiants de connexion, comptes sociaux, méthodes MFA, et données de profil.
-- **Intégration côté client** : Conçues pour une utilisation directe et sécurisée dans votre front-end.
-- **Configuration minimale** : Points de terminaison prêts à l’emploi, sans serveur personnalisé requis.
-- **Contrôle des permissions** : Activez ou désactivez les Account API via les paramètres de la Management API.
+- **Aucun effort de développement** : Pages prêtes à l’emploi qui fonctionnent immédiatement.
+- **Expérience cohérente** : Correspond à l’apparence et à la convivialité de l’expérience de connexion Logto.
+- **Sécurité intégrée** : Tous les flux de vérification et mesures de sécurité sont gérés automatiquement.
+- **Fonctionnalité complète** : Prise en charge de la mise à jour de l’e-mail, du téléphone, du nom d’utilisateur, du mot de passe et des paramètres MFA.
,
+ },
+ },
+ ]}
+/>
+
+## Utiliser les Account API \{#use-account-apis}
+
+Les Account API de Logto sont des points de terminaison front-end prêts à l’emploi qui permettent aux utilisateurs finaux de consulter et de mettre à jour en toute sécurité leurs propres informations avec des vérifications de permissions intégrées. Utilisez cette option lorsque vous souhaitez créer une page de paramètres de compte personnalisée avec votre propre interface.
+
+Fonctionnalités clés :
+
+- **Paramètres utilisateur** : Les utilisateurs gèrent leurs propres identifiants et identifiants de connexion, comptes sociaux, méthodes MFA et données de profil.
+- **Intégration côté client** : Conçue pour une utilisation directe et sécurisée dans votre front-end.
+- **Personnalisation totale** : Créez votre propre interface tout en tirant parti des API sécurisées de Logto.
+- **Contrôle des permissions** : Activez ou désactivez les Account API via les paramètres Management API.
+
+,
},
@@ -38,7 +64,7 @@ Fonctionnalités clés :
## Utiliser les Management API \{#use-management-apis}
-Les Management API constituent l’interface d’administration principale de Logto, accessible uniquement aux administrateurs ou aux services back-end. Elles offrent une flexibilité maximale et un contrôle CRUD complet sur chaque compte utilisateur, vous permettant de créer des outils de gestion personnalisés. Si vous avez besoin d’un portail libre-service entièrement personnalisé ou de fonctionnalités de gestion utilisateur non standard, vous pouvez exposer certains points de terminaison de la Management API derrière votre propre couche “Account API” et les sécuriser avec la logique d’authentification de votre entreprise.
+Les Management API constituent l’interface d’administration principale de Logto, accessible uniquement aux administrateurs ou aux services back-end. Elles offrent une flexibilité maximale et un contrôle CRUD complet sur chaque compte utilisateur, et vous permettent de créer des outils de gestion personnalisés. Si vous avez besoin d’un portail en libre-service entièrement personnalisé ou de fonctionnalités de gestion des utilisateurs non standard, vous pouvez exposer certains points de terminaison Management API derrière votre propre couche “Account API” et les sécuriser avec la logique d’authentification de votre entreprise.
Fonctionnalités clés :
@@ -61,13 +87,14 @@ Fonctionnalités clés :
]}
/>
-## Account API vs. Management API \{#account-api-vs-management-api}
+## Comparaison des options de gestion des paramètres de compte \{#comparison-of-account-settings-options}
-| Fonctionnalité | Account API | Management API |
-| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **Utilisateur visé** | Utilisateurs finaux | Admins / Développeurs |
-| **Contexte d’accès** | Côté client / front-end | Côté serveur / back-end |
-| **Modèle de permission** | Activez ou désactivez les Account API via la Management API. | Entièrement personnalisable par les développeurs |
-| **Fonctionnalités prises en charge** | Voir, mettre à jour et supprimer : nom d’utilisateur, e-mail, téléphone, mot de passe, comptes sociaux, MFA, profil | Tous les paramètres de base + suppression / suspension / restauration de compte, jetons d’accès personnels, usurpation d’identité utilisateur, connexion d’applications OAuth, etc. |
-| **Complexité de mise en place** | Très faible (plug-and-play) | Moyenne à élevée (implémentation personnalisée requise) |
-| **Quand l’utiliser** | Pour lancer rapidement une page de paramètres de compte sécurisée et en libre-service dans votre application cliente avec une configuration minimale. | Lorsque les Account API ne répondent pas à vos besoins. Par exemple, pour une logique de suppression de compte complexe, des actions à haut risque, ou la création d’outils back-office. |
+| Fonctionnalité | Interface préconstruite Account Center | Account API | Management API |
+| ------------------------------------ | -------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **Utilisateur visé** | Utilisateurs finaux | Utilisateurs finaux | Administrateurs / Développeurs |
+| **Contexte d’accès** | Redirection vers des pages hébergées par Logto | Côté client / front-end | Côté serveur / back-end |
+| **Modèle de permission** | Activez ou désactivez les champs via les paramètres Account Center | Activez ou désactivez les Account API via Management API | Entièrement personnalisable par les développeurs |
+| **Fonctionnalités prises en charge** | Mise à jour : e-mail, téléphone, nom d’utilisateur, mot de passe, MFA (TOTP, passkeys, codes de secours) | Consultation, mise à jour et suppression : nom d’utilisateur, e-mail, téléphone, mot de passe, comptes sociaux, MFA, profil | Tous les paramètres de base + Suppression / suspension / restauration de compte, jetons d’accès personnels, usurpation d’identité utilisateur, connexion d’applications OAuth, etc. |
+| **Personnalisation de l’interface** | Hérite du branding de l’expérience de connexion | Personnalisation totale (créez votre propre interface) | Personnalisation totale (créez votre propre interface) |
+| **Complexité de mise en place** | Aucune (il suffit de lier vers les pages préconstruites) | Faible (utilisez les API avec votre interface) | Moyenne à élevée (nécessite une implémentation personnalisée) |
+| **Quand l’utiliser** | Pour ajouter la gestion de compte le plus rapidement sans créer de pages personnalisées | Lorsque vous avez besoin d’une interface personnalisée mais souhaitez bénéficier des API sécurisées de Logto | Lorsque les Account API ne répondent pas à vos besoins. Par exemple, pour une logique complexe de suppression de compte, des actions à haut risque ou la création d’outils back-office |
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
new file mode 100644
index 00000000000..40974315c55
--- /dev/null
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
@@ -0,0 +1,156 @@
+---
+description: Découvrez comment utiliser l’interface préconstruite du Centre de compte Logto pour permettre aux utilisateurs de gérer leurs comptes
+sidebar_position: 2
+---
+
+# Paramètres du compte via l’interface préconstruite du Centre de compte
+
+## Qu’est-ce que l’interface préconstruite du Centre de compte \{#what-is-the-prebuilt-account-center-ui}
+
+Logto propose une interface préconstruite du Centre de compte qui offre des pages prêtes à l’emploi pour permettre aux utilisateurs finaux de gérer les paramètres de leur compte. Cette interface préconstruite est hébergée par Logto et gère les tâches courantes de gestion de compte, notamment :
+
+- Mise à jour de l’adresse e-mail
+- Mise à jour du numéro de téléphone
+- Mise à jour du nom d’utilisateur
+- Définition ou mise à jour du mot de passe
+- Gestion des paramètres MFA (application d’authentification TOTP, passkeys, codes de secours)
+
+L’interface préconstruite du Centre de compte est conçue pour fonctionner de manière transparente avec votre application, offrant une expérience utilisateur cohérente sans que vous ayez à développer des pages de gestion de compte personnalisées.
+
+## Avantages de l’utilisation de l’interface préconstruite \{#benefits-of-using-the-prebuilt-ui}
+
+- **Aucun effort de développement** : Pages prêtes à l’emploi fonctionnant immédiatement
+- **Expérience cohérente** : Correspond à l’apparence de l’expérience de connexion Logto
+- **Sécurité intégrée** : Tous les flux de vérification et mesures de sécurité sont gérés automatiquement
+- **Toujours à jour** : Les nouvelles fonctionnalités et améliorations de sécurité sont disponibles automatiquement
+
+## Pages disponibles \{#available-pages}
+
+L’interface préconstruite du Centre de compte propose les pages suivantes, toutes accessibles sous le chemin `/account` de l’endpoint de votre tenant Logto :
+
+| Chemin | Description |
+| -------------------------------- | ------------------------------------------------ |
+| `/account/email` | Mettre à jour l’adresse e-mail principale |
+| `/account/phone` | Mettre à jour le numéro de téléphone principal |
+| `/account/username` | Mettre à jour le nom d’utilisateur |
+| `/account/password` | Définir ou mettre à jour le mot de passe |
+| `/account/passkey/add` | Ajouter une nouvelle passkey (WebAuthn) |
+| `/account/passkey/manage` | Voir et gérer les passkeys existantes |
+| `/account/authenticator-app` | Configurer l’application d’authentification TOTP |
+| `/account/backup-codes/generate` | Générer de nouveaux codes de secours |
+| `/account/backup-codes/manage` | Voir et gérer les codes de secours |
+
+Par exemple, si l’endpoint de votre tenant est `https://example.logto.app`, la page de mise à jour de l’e-mail sera disponible à l’adresse `https://example.logto.app/account/email`.
+
+## Comment utiliser l’interface préconstruite \{#how-to-use-the-prebuilt-ui}
+
+### Étape 1 : Activer l’Account API \{#step-1-enable-account-api}
+
+L’interface préconstruite du Centre de compte repose sur l’Account API. Rendez-vous sur Console > Connexion & compte > Centre de compte et activez l’Account API.
+
+Configurez les permissions des champs selon vos besoins :
+
+- Définissez les champs sur `Edit` pour permettre aux utilisateurs de les modifier
+- Définissez les champs sur `ReadOnly` si les utilisateurs doivent seulement les consulter
+- Définissez les champs sur `Off` pour les masquer complètement
+
+### Étape 2 : Lier les pages préconstruites depuis votre application \{#step-2-link-to-prebuilt-pages}
+
+Pour utiliser l’interface préconstruite du Centre de compte, vous devez rediriger les utilisateurs depuis votre application vers les pages Logto appropriées. Deux approches sont possibles :
+
+#### Approche A : Lien direct avec paramètre de redirection \{#approach-a-direct-linking}
+
+Ajoutez des liens dans votre application qui redirigent les utilisateurs vers les pages préconstruites. Incluez un paramètre de requête `redirect` pour ramener les utilisateurs vers votre application après l’action :
+
+```
+https://[tenant-id].logto.app/account/email?redirect=https://your-app.com/settings
+```
+
+Lorsque les utilisateurs terminent la mise à jour de leur e-mail, ils seront redirigés vers `https://your-app.com/settings`.
+
+#### Approche B : Intégration dans votre flux de paramètres de compte \{#approach-b-embedding}
+
+Vous pouvez intégrer les pages préconstruites dans votre propre flux de gestion des paramètres de compte :
+
+1. Sur la page des paramètres de compte de votre application, affichez les informations actuelles de l’utilisateur
+2. Proposez des boutons "Modifier" ou "Mettre à jour" qui renvoient vers les pages préconstruites correspondantes
+3. Après l’action de l’utilisateur, il est redirigé vers votre application
+
+Exemple d’implémentation :
+
+```tsx
+function AccountSettings() {
+ const tenantEndpoint = 'https://example.logto.app';
+ const redirectUrl = encodeURIComponent(window.location.href);
+
+ return (
+
+
Paramètres du compte
+
+
+
+
+
+
+
+ );
+}
+```
+
+### Étape 3 : Gérer les redirections de succès \{#step-3-handle-success-redirects}
+
+Après avoir terminé une action, les utilisateurs seront redirigés vers l’URL que vous avez spécifiée avec un paramètre de requête optionnel `show_success`. Vous pouvez l’utiliser pour afficher un message de succès :
+
+```tsx
+function SettingsPage() {
+ const searchParams = new URLSearchParams(window.location.search);
+ const showSuccess = searchParams.get('show_success');
+
+ return (
+
+ {showSuccess === 'email' &&
E-mail mis à jour avec succès !
}
+ {showSuccess === 'password' &&
Mot de passe mis à jour avec succès !
}
+ {/* ... reste de votre page de paramètres */}
+
+ );
+}
+```
+
+## Considérations de sécurité \{#security-considerations}
+
+L’interface préconstruite du Centre de compte intègre des mesures de sécurité :
+
+- **Vérification d’identité** : Avant toute modification sensible (e-mail, téléphone, mot de passe, MFA), l’utilisateur doit vérifier son identité à l’aide de son mot de passe actuel ou d’une méthode de vérification existante
+- **Codes de vérification** : Les mises à jour d’e-mail et de téléphone nécessitent des codes de vérification envoyés à la nouvelle adresse/numéro
+- **Validation de session** : Toutes les opérations valident la session de l’utilisateur pour empêcher tout accès non autorisé
+
+## Options de personnalisation \{#customization-options}
+
+L’interface préconstruite du Centre de compte hérite de la personnalisation de votre expérience de connexion, notamment :
+
+- Logo et couleurs
+- Mode sombre / clair
+- Paramètres de langue
+
+Si vous avez besoin de plus de personnalisation que ce que propose l’interface préconstruite, envisagez d’utiliser l’[Account API](/end-user-flows/account-settings/by-account-api) pour créer vos propres pages de gestion de compte.
+
+## Ressources associées \{#related-resources}
+
+- [Paramètres du compte via Account API](/end-user-flows/account-settings/by-account-api) - Créez une gestion de compte personnalisée avec un contrôle total via l’API
+- [Paramètres du compte via Management API](/end-user-flows/account-settings/by-management-api) - Gestion de compte au niveau administrateur
+- [Configuration MFA](/end-user-flows/mfa) - Configurer l’authentification multi-facteurs (MFA)
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/introduction/README.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/introduction/README.mdx
index d423cb98f6e..d15f4988822 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/introduction/README.mdx
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/introduction/README.mdx
@@ -1,5 +1,5 @@
---
-description: Lancez rapidement votre système de gestion des identités et des accès en intégrant Logto. Profitez de l’authentification (Authentication), de l’autorisation (Authorization) et de la gestion multi-locataire, tout-en-un.
+description: Lancez rapidement votre système de gestion des identités et des accès en intégrant Logto. Profitez de l’authentification (Authentication), de l’autorisation (Authorization) et de la gestion multi-locataires, tout-en-un.
---
import AuditLogIcon from '@site/src/assets/audit-log.svg';
@@ -143,6 +143,10 @@ Bienvenue dans la documentation Logto ! Logto est une solution de gestion des id
icon: ,
docId: 'developers/custom-token-claims/README',
},
+ {
+ icon: ,
+ docId: 'developers/custom-id-token/README',
+ },
{
icon: ,
docId: 'developers/user-impersonation',
@@ -169,7 +173,7 @@ Les capacités de Logto reposent sur quatre piliers clés, formant la base des f
label: 'Logto Console',
href: 'https://cloud.logto.io',
description:
- 'Une interface web pour configurer et gérer les ressources, offrant une configuration rapide de l’expérience de connexion et une gestion facile des identités.',
+ 'Une interface web pour configurer et gérer les ressources, offrant une mise en place rapide de l’expérience de connexion et une gestion facile des identités.',
customProps: {
icon: ,
},
@@ -226,7 +230,7 @@ Les capacités de Logto reposent sur quatre piliers clés, formant la base des f
label: 'Logto Cloud',
href: '/logto-cloud',
description:
- 'Notre service cloud inclut les offres Free, Pro et Enterprise pour répondre à une large gamme de besoins clients. Il est hébergé et géré par Logto. Il propose également un tenant dev incluant toutes les fonctionnalités de Logto pour tester.',
+ 'Notre service cloud inclut des offres Free, Pro et Enterprise pour répondre à une large gamme de besoins clients. Il est hébergé et géré par Logto. Il propose aussi un tenant dev incluant toutes les fonctionnalités de Logto pour tester.',
customProps: {
icon: ,
},
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md b/i18n/fr/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
index 06ebace91be..5b3ddd6eb5e 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
@@ -1,20 +1,22 @@
Voici la liste des portées prises en charge et les revendications correspondantes :
-**`openid`**
+### Portées OIDC standard {#standard-oidc-scopes}
-| Nom de la revendication | Type | Description | Besoin de userinfo ? |
-| ----------------------- | -------- | ------------------------------------- | -------------------- |
-| sub | `string` | L'identifiant unique de l'utilisateur | Non |
+**`openid`** (par défaut)
-**`profile`**
+| Nom de la revendication | Type | Description |
+| ----------------------- | -------- | ------------------------------------- |
+| sub | `string` | L'identifiant unique de l'utilisateur |
-| Nom de la revendication | Type | Description | Besoin de userinfo ? |
-| ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- |
-| name | `string` | Le nom complet de l'utilisateur | Non |
-| username | `string` | Le nom d'utilisateur de l'utilisateur | Non |
-| picture | `string` | URL de la photo de profil de l'utilisateur final. Cette URL DOIT référencer un fichier image (par exemple, un fichier PNG, JPEG ou GIF), plutôt qu'une page Web contenant une image. Notez que cette URL DOIT référencer spécifiquement une photo de profil de l'utilisateur final adaptée à l'affichage lors de la description de l'utilisateur final, plutôt qu'une photo arbitraire prise par l'utilisateur final. | Non |
-| created_at | `number` | Date de création de l'utilisateur final. L'heure est représentée par le nombre de millisecondes écoulées depuis l'époque Unix (1970-01-01T00:00:00Z). | Non |
-| updated_at | `number` | Date de la dernière mise à jour des informations de l'utilisateur final. L'heure est représentée par le nombre de millisecondes écoulées depuis l'époque Unix (1970-01-01T00:00:00Z). | Non |
+**`profile`** (par défaut)
+
+| Nom de la revendication | Type | Description |
+| ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| name | `string` | Le nom complet de l'utilisateur |
+| username | `string` | Le nom d'utilisateur de l'utilisateur |
+| picture | `string` | URL de la photo de profil de l'utilisateur final. Cette URL DOIT référencer un fichier image (par exemple, un fichier PNG, JPEG ou GIF), et non une page Web contenant une image. Notez que cette URL DOIT référencer spécifiquement une photo de profil de l'utilisateur final adaptée à l'affichage lors de la description de l'utilisateur final, et non une photo arbitraire prise par l'utilisateur final. |
+| created_at | `number` | Date de création de l'utilisateur final. Le temps est représenté en nombre de millisecondes depuis l'époque Unix (1970-01-01T00:00:00Z). |
+| updated_at | `number` | Date de la dernière mise à jour des informations de l'utilisateur final. Le temps est représenté en nombre de millisecondes depuis l'époque Unix (1970-01-01T00:00:00Z). |
D'autres [revendications standard](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) telles que `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `website`, `gender`, `birthdate`, `zoneinfo` et `locale` seront également incluses dans la portée `profile` sans avoir besoin de demander l'endpoint userinfo. Une différence par rapport aux revendications ci-dessus est que ces revendications ne seront retournées que si leurs valeurs ne sont pas vides, tandis que les revendications ci-dessus retourneront `null` si les valeurs sont vides.
@@ -24,58 +26,62 @@ Contrairement aux revendications standard, les revendications `created_at` et `u
**`email`**
-| Nom de la revendication | Type | Description | Besoin de userinfo ? |
-| ----------------------- | --------- | ---------------------------------- | -------------------- |
-| email | `string` | L'adresse e-mail de l'utilisateur | Non |
-| email_verified | `boolean` | Si l'adresse e-mail a été vérifiée | Non |
+| Nom de la revendication | Type | Description |
+| ----------------------- | --------- | ---------------------------------- |
+| email | `string` | L'adresse e-mail de l'utilisateur |
+| email_verified | `boolean` | Si l'adresse e-mail a été vérifiée |
**`phone`**
-| Nom de la revendication | Type | Description | Besoin de userinfo ? |
-| ----------------------- | --------- | --------------------------------------- | -------------------- |
-| phone_number | `string` | Le numéro de téléphone de l'utilisateur | Non |
-| phone_number_verified | `boolean` | Si le numéro de téléphone a été vérifié | Non |
+| Nom de la revendication | Type | Description |
+| ----------------------- | --------- | --------------------------------------- |
+| phone_number | `string` | Le numéro de téléphone de l'utilisateur |
+| phone_number_verified | `boolean` | Si le numéro de téléphone a été vérifié |
**`address`**
Veuillez vous référer à la [spécification OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#AddressClaim) pour les détails de la revendication d'adresse.
+:::info
+Les portées marquées **(par défaut)** sont toujours demandées par le SDK Logto. Les revendications sous les portées OIDC standard sont toujours incluses dans le jeton d’identifiant (ID token) lorsque la portée correspondante est demandée — elles ne peuvent pas être désactivées.
+:::
+
+### Portées étendues {#extended-scopes}
+
+Les portées suivantes sont étendues par Logto et retourneront des revendications via l'[endpoint userinfo](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo). Ces revendications peuvent également être configurées pour être incluses directement dans le jeton d’identifiant via Console > JWT personnalisé. Voir [Jeton d’identifiant personnalisé](/developers/custom-id-token) pour plus de détails.
+
**`custom_data`**
-| Nom de la revendication | Type | Description | Besoin de userinfo ? |
-| ----------------------- | -------- | ------------------------------------------- | -------------------- |
-| custom_data | `object` | Les données personnalisées de l'utilisateur | Oui |
+| Nom de la revendication | Type | Description | Inclus dans le jeton d’identifiant par défaut |
+| ----------------------- | -------- | ------------------------------------------- | --------------------------------------------- |
+| custom_data | `object` | Les données personnalisées de l'utilisateur | |
**`identities`**
-| Nom de la revendication | Type | Description | Besoin de userinfo ? |
-| ----------------------- | -------- | ---------------------------------------- | -------------------- |
-| identities | `object` | Les identités liées de l'utilisateur | Oui |
-| sso_identities | `array` | Les identités SSO liées de l'utilisateur | Oui |
+| Nom de la revendication | Type | Description | Inclus dans le jeton d’identifiant par défaut |
+| ----------------------- | -------- | ---------------------------------------- | --------------------------------------------- |
+| identities | `object` | Les identités liées de l'utilisateur | |
+| sso_identities | `array` | Les identités SSO liées de l'utilisateur | |
**`roles`**
-| Nom de la revendication | Type | Description | Besoin de userinfo ? |
-| ----------------------- | ---------- | ---------------------------------- | -------------------- |
-| roles | `string[]` | Les rôles (Roles) de l'utilisateur | Non |
+| Nom de la revendication | Type | Description | Inclus dans le jeton d’identifiant par défaut |
+| ----------------------- | ---------- | -------------------------- | --------------------------------------------- |
+| roles | `string[]` | Les rôles de l'utilisateur | ✅ |
**`urn:logto:scope:organizations`**
-| Nom de la revendication | Type | Description | Besoin de userinfo ? |
-| ----------------------- | ---------- | -------------------------------------------------------------------------------------- | -------------------- |
-| organizations | `string[]` | Les identifiants des organisations (Organizations) auxquelles l'utilisateur appartient | Non |
-| organization_data | `object[]` | Les données des organisations (Organizations) auxquelles l'utilisateur appartient | Oui |
+| Nom de la revendication | Type | Description | Inclus dans le jeton d’identifiant par défaut |
+| ----------------------- | ---------- | ----------------------------------------------------------------- | --------------------------------------------- |
+| organizations | `string[]` | Les identifiants d’organisation auxquels l'utilisateur appartient | ✅ |
+| organization_data | `object[]` | Les données d’organisation auxquelles l'utilisateur appartient | |
:::note
-Ces revendications d'organisation peuvent également être récupérées via l'endpoint userinfo lors de l'utilisation d'un [jeton opaque (Opaque token)](/concepts/opaque-token). Cependant, les jetons opaques ne peuvent pas être utilisés comme jetons d’organisation (Organization tokens) pour accéder à des ressources spécifiques à une organisation. Voir [Jeton opaque et organisations](/concepts/opaque-token#opaque-token-and-organizations) pour plus de détails.
+Ces revendications d’organisation peuvent également être récupérées via l’endpoint userinfo lors de l’utilisation d’un [jeton opaque](/concepts/opaque-token). Cependant, les jetons opaques ne peuvent pas être utilisés comme jetons d’organisation pour accéder à des ressources spécifiques à une organisation. Voir [Jeton opaque et organisations](/concepts/opaque-token#opaque-token-and-organizations) pour plus de détails.
:::
**`urn:logto:scope:organization_roles`**
-| Nom de la revendication | Type | Description | Besoin de userinfo ? |
-| ----------------------- | ---------- | -------------------------------------------------------------------------------------------------------- | -------------------- |
-| organization_roles | `string[]` | Les rôles d'organisation (Organization roles) de l'utilisateur au format `:` | Non |
-
----
-
-En tenant compte des performances et de la taille des données, si "Besoin de userinfo ?" est "Oui", cela signifie que la revendication n'apparaîtra pas dans le jeton d’identifiant (ID token), mais sera retournée dans la réponse de l'[endpoint userinfo](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo).
+| Nom de la revendication | Type | Description | Inclus dans le jeton d’identifiant par défaut |
+| ----------------------- | ---------- | ---------------------------------------------------------------------------------------------------- | --------------------------------------------- |
+| organization_roles | `string[]` | Les rôles d’organisation auxquels l'utilisateur appartient au format `:` | ✅ |
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx b/i18n/fr/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
index baa51750b5d..099313512f2 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
@@ -1,6 +1,8 @@
import ScopeClaimList from './_scope-claim-list.md';
-Logto utilise les conventions de [portées et revendications](https://openid.net/specs/openid-connect-core-1_0.html#Claims) OIDC pour définir les Portées et Revendications pour récupérer les informations utilisateur à partir du Jeton d’identifiant et du point de terminaison OIDC userinfo. Les termes "Portée" et "Revendication" proviennent des spécifications OAuth 2.0 et OpenID Connect (OIDC).
+Logto utilise les conventions OIDC sur les [portées (Scopes) et revendications (Claims)](https://openid.net/specs/openid-connect-core-1_0.html#Claims) pour définir les portées et revendications permettant de récupérer les informations utilisateur à partir du jeton d’identifiant (ID token) et du point de terminaison OIDC userinfo. Les termes "portée (Scope)" et "revendication (Claim)" proviennent des spécifications OAuth 2.0 et OpenID Connect (OIDC).
+
+Pour les revendications OIDC standard, leur inclusion dans le jeton d’identifiant est strictement déterminée par les portées demandées. Les revendications étendues (telles que `custom_data` et `organizations`) peuvent être configurées en plus pour apparaître dans le jeton d’identifiant via les paramètres Jeton d’identifiant personnalisé.
{/* TODO: Remove below */}
@@ -8,13 +10,13 @@ Logto utilise les conventions de [portées et revendications](https://openid.net
<>
-En bref, lorsque vous demandez une Portée, vous obtiendrez les Revendications correspondantes dans les informations utilisateur. Par exemple, si vous demandez la portée `email`, vous obtiendrez les données `email` et `email_verified` de l'utilisateur.
+En résumé, lorsque vous demandez une portée (Scope), vous obtiendrez les revendications (Claims) correspondantes dans les informations utilisateur. Par exemple, si vous demandez la portée `email`, vous recevrez les données `email` et `email_verified` de l’utilisateur.
- Par défaut, le SDK Logto demandera toujours trois Portées : `openid`, `profile` et
- `offline_access`, et il n'est pas possible de supprimer ces Portées par défaut. Mais vous pouvez
- ajouter plus de Portées lors de la configuration de Logto :
+ Par défaut, le SDK Logto demandera toujours trois portées : `openid`, `profile` et
+ `offline_access`, et il n’est pas possible de supprimer ces portées par défaut. Cependant, vous
+ pouvez ajouter d’autres portées lors de la configuration de Logto :
{props.configScopesCode}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/developers/README.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/developers/README.mdx
index 971437d6acd..08eae780af0 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/developers/README.mdx
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/developers/README.mdx
@@ -1,8 +1,8 @@
# 開発者
-Logto は、 [OAuth 2](https://auth.wiki/oauth-2.0) および [OIDC](https://auth.wiki/openid-connect) プロトコルに基づく [アイデンティティおよびアクセス管理 (IAM)](https://auth.wiki/iam) サービスです。Logto のような IAM サービスは、他の Web サービスの基盤として機能することが多く、それらの Web サービス内のさまざまな認可 (Authorization) 状態は Logto によって直接影響を受けます。
+Logto は、[OAuth 2](https://auth.wiki/oauth-2.0) および [OIDC](https://auth.wiki/openid-connect) プロトコルに基づいた [アイデンティティおよびアクセス管理 (IAM)](https://auth.wiki/iam) サービスです。Logto のような IAM サービスは、他の Web サービスの基盤として機能することが多く、それらの Web サービス内のさまざまな認可 (Authorization) 状態は Logto によって直接影響を受けます。
-ユーザーの利便性を高めるために、Logto はよく使われる開発者向け機能を一連で提供しています。
+ユーザーの利便性を高めるために、Logto はよく使われる開発者向け機能を一連提供しています。
## サインイン体験関連 \{#sign-in-experience-related}
@@ -19,9 +19,18 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
items={[
{
type: 'link',
- label: 'カスタムトークンクレーム (Custom token claims)',
+ label: 'カスタムアクセス トークン',
href: '/developers/custom-token-claims',
- description: '追加のクレーム (Claims) を付与することでアクセス制御の機能を拡張し、ABAC の実現やトークン発行の拒否などが可能になります。',
+ description: 'カスタムスクリプトを使用してアクセス トークンに追加のクレーム (Claims) を付与し、ABAC の実現やトークン発行の拒否を可能にします。',
+ customProps: {
+ icon: ,
+ }
+ },
+ {
+ type: 'link',
+ label: 'カスタム ID トークン',
+ href: '/developers/custom-id-token',
+ description: 'OIDC 仕様に従い、ID トークンに含める拡張クレーム (Claims) を制御できます。',
customProps: {
icon: ,
}
@@ -30,7 +39,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: 'ユーザーなりすまし (User impersonation)',
href: '/developers/user-impersonation',
- description: '権限を持つユーザーが一時的にエンドユーザーの代理として操作できるようにし、トラブルシューティングやカスタマーサポート、管理業務に役立ちます。',
+ description: '認可 (Authorization) されたユーザーが一時的にエンドユーザーとして操作できるようにし、トラブルシューティングやカスタマーサポート、管理作業に役立ちます。',
customProps: {
icon: ,
}
@@ -46,7 +55,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
items={[
{
type: 'link',
- label: '署名鍵 (Signing keys)',
+ label: '署名鍵',
href: '/developers/signing-keys',
description: 'システムレベルの署名鍵をパスワードボールト経由で提供し、認証サービスのセキュリティを強化します。',
customProps: {
@@ -57,14 +66,14 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: 'Webhook',
href: '/developers/webhooks',
- description: 'Webhook により、ユーザー情報や権限 (Permissions) 更新に関するリアルタイム通知を HTTP リクエストでサポートし、Logto 連携の利便性と柔軟性を高めます。',
+ description: 'Webhook は、ユーザー情報や権限 (Permissions) 更新に関するリアルタイム通知を HTTP リクエストでサポートし、Logto 連携の利便性と柔軟性を高めます。',
customProps: {
icon: ,
}
},
{
type: 'link',
- label: '監査ログ (Audit logs)',
+ label: '監査ログ',
href: '/developers/audit-logs',
description: 'ユーザー認証 (Authentication) 関連のアクティビティを記録し、ユーザー行動のデバッグや分析を容易にします。',
customProps: {
@@ -73,9 +82,9 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
},
{
type: 'link',
- label: 'SDK 規約 (SDK convention)',
+ label: 'SDK 規約',
href: '/developers/',
- description: 'SDK 内のデータ構造、用途、メソッドを紹介し、さまざまなビジネスシーンに合わせて SDK をカスタマイズできるようにします。',
+ description: 'SDK 内のデータ構造、目的、メソッドを紹介し、さまざまなビジネスシナリオに合わせて SDK をカスタマイズできるようにします。',
customProps: {
icon: ,
}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
index e0942ba724e..3b0489d5ece 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
@@ -1,24 +1,24 @@
---
-sidebar_position: 6
+sidebar_position: 7
---
# 監査ログ
-Logto の監査ログは、ユーザーのアクティビティやイベントを簡単に監視できるようにします。さまざまなユーザー管理やヘルスチェックのビジネスシナリオに強力な基盤を提供します。
+Logto の監査ログは、ユーザーのアクティビティやイベントを簡単に監視できます。さまざまなユーザー管理やヘルスチェックのビジネスシナリオに強力な基盤を提供します。
## すべてのログを表示する \{#view-all-logs}
-コンソール > 監査ログ に移動します。Logto は認証
-(Authentication)
+コンソール > 監査ログ
+に移動します。Logto は認証 (Authentication)
イベントをキャプチャし、テーブルに整理します。イベント名、ユーザー、アプリケーション、タイムスタンプを記録します。イベント名やアプリケーション名でフィルタリングすることで、結果を絞り込むことができます。特定のイベントをクリックすると、追加の詳細情報が表示されます。
:::warning
-監査ログには、ユーザー認証 (Authentication) プロセス中に発生したログのみが含まれます。Management API 操作のログは記録されません。
+監査ログにはユーザー認証 (Authentication) プロセス中に発生したログのみが含まれ、Management API 操作のログは記録されません。
:::
## テナントレベルでユーザーアクティビティをキャプチャする \{#capture-user-activity-at-the-tenant-level}
-Logto のログは包括的な詳細情報を提供し、迅速な対応と顧客の安全性を確保します。次の情報をキャプチャし記録します:
+Logto のログは包括的な詳細情報を提供し、迅速な対応と顧客の安全を確保します。次の情報をキャプチャし記録します:
- イベントの種類(監査ログイベントの全リストは [こちら](/developers/audit-logs/event-types) で確認できます)
- 関連するアプリケーション
@@ -34,13 +34,14 @@ Logto のログは包括的な詳細情報を提供し、迅速な対応と顧
## ユーザーレベルで詳細な分析を行う \{#perform-a-detailed-analysis-at-the-user-level}
-管理者は、特定のユーザーに関連するログの詳細な分析を行うことができ、特定のイベントに対する包括的な調査を容易にします。ナビゲーションプロセスはシンプルで使いやすいです。
+管理者は、特定のユーザーに関連するログを詳細に分析でき、特定のイベントに対する包括的な調査が可能です。ナビゲーションはシンプルで使いやすい設計です。
-ユーザー固有のログにアクセスするには、次の手順に従います:
+ユーザー固有のログにアクセスするには、次の手順を実行します:
-1. コンソール > ユーザー管理 に移動します。
+1. コンソール > ユーザー管理
+ に移動します。
2. 対象のユーザーを選択し、詳細ページに進みます。
-3. 「ユーザーログ」をクリックします。表示されるテーブルには、そのユーザーによって実行・トリガーされたログイベントのみが表示されます。
+3. 「ユーザーログ」をクリックします。表示されるテーブルには、そのユーザーが実行・トリガーしたログイベントのみが表示されます。
-### セルフホスト型 Logto を利用していますが、監査ログの取得に数秒かかります。パフォーマンスを改善するにはどうすればよいですか? \{#im-using-self-hosted-logto-and-it-takes-seconds-to-get-the-audit-logs-how-can-i-improve-the-performance}
+### セルフホスト版 Logto を利用していますが、監査ログの取得に数秒かかります。パフォーマンスを改善するにはどうすればよいですか? \{#im-using-self-hosted-logto-and-it-takes-seconds-to-get-the-audit-logs-how-can-i-improve-the-performance}
-OSS ユーザーは cron ジョブを追加して、古い監査ログを定期的にクリーンアップしてください。
+OSS ユーザーは、定期的に古い監査ログをクリーンアップする cron ジョブを追加してください。
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
new file mode 100644
index 00000000000..b23025a305f
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
@@ -0,0 +1,81 @@
+---
+sidebar_position: 3
+---
+
+# カスタム ID トークン
+
+## はじめに \{#introduction}
+
+[ID トークン](https://auth.wiki/id-token) は、[OpenID Connect (OIDC)](https://auth.wiki/openid-connect) プロトコルで定義された特別な種類のトークンです。これは、認可サーバー(Logto)がユーザーの認証 (Authentication) に成功した後に発行するアイデンティティの証明であり、認証されたユーザーのアイデンティティに関するクレーム (Claims) を含みます。
+
+[アクセス トークン](/developers/custom-token-claims) が保護されたリソースへのアクセスに使用されるのとは異なり、ID トークンは認証されたユーザーのアイデンティティをクライアントアプリケーションに伝えるために特化されています。これらは [JSON Web Token (JWT)](https://auth.wiki/jwt) であり、認証イベントおよび認証されたユーザーに関するクレーム (Claims) を含みます。
+
+## ID トークンのクレーム (Claims) の仕組み \{#how-id-token-claims-work}
+
+Logto では、ID トークンのクレーム (Claims) は 2 つのカテゴリに分かれています:
+
+1. **標準 OIDC クレーム (Claims)**:OIDC 仕様で定義されており、これらのクレーム (Claims) は認証 (Authentication) 時にリクエストされたスコープ (Scopes) によって完全に決定されます。
+2. **拡張クレーム (Claims)**:Logto によって拡張され、追加のアイデンティティ情報を運ぶクレーム (Claims) であり、**二重条件モデル**(スコープ (Scope) + トグル)によって制御されます。
+
+```mermaid
+flowchart TD
+ A[ユーザー認証リクエスト] --> B{リクエストされたスコープ}
+ B --> C[標準 OIDC スコープ]
+ B --> D[拡張スコープ]
+ C --> E[ID トークンに含まれる標準クレーム]
+ D --> F{コンソールのトグルが有効か?}
+ F -->|はい| G[ID トークンに拡張クレームを含める]
+ F -->|いいえ| H[クレームは含まれない]
+```
+
+## 標準 OIDC クレーム (Claims) \{#standard-oidc-claims}
+
+標準クレーム (Claims) は OIDC 仕様によって完全に管理されています。ID トークンに含まれるかどうかは、認証 (Authentication) 時にアプリケーションがリクエストするスコープ (Scopes) のみに依存します。Logto では、個々の標準クレーム (Claims) を無効化したり選択的に除外したりするオプションは提供していません。
+
+以下の表は、標準スコープ (Scopes) とそれに対応するクレーム (Claims) のマッピングを示しています:
+
+| スコープ (Scope) | クレーム (Claims) |
+| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `openid` | `sub` |
+| `profile` | `name`, `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `picture`, `website`, `gender`, `birthdate`, `zoneinfo`, `locale`, `updated_at` |
+| `email` | `email`, `email_verified` |
+| `phone` | `phone_number`, `phone_number_verified` |
+| `address` | `address` |
+
+例えば、アプリケーションが `openid profile email` スコープ (Scopes) をリクエストした場合、ID トークンには `openid`、`profile`、`email` スコープ (Scopes) からすべてのクレーム (Claims) が含まれます。
+
+## 拡張クレーム (Claims) \{#extended-claims}
+
+標準 OIDC クレーム (Claims) に加えて、Logto は Logto エコシステム固有のアイデンティティ情報を運ぶ追加のクレーム (Claims) を拡張しています。これらの拡張クレーム (Claims) は、ID トークンに含めるために **二重条件モデル** に従います:
+
+1. **スコープ条件**:アプリケーションが認証 (Authentication) 時に対応するスコープ (Scope) をリクエストする必要があります。
+2. **コンソールのトグル**:管理者が Logto コンソールでそのクレーム (Claim) を ID トークンに含める設定を有効にする必要があります。
+
+両方の条件が同時に満たされる必要があります。スコープ (Scope) はプロトコル層でのアクセス宣言、トグルはプロダクト層での公開制御として機能し、それぞれの役割は明確で代替できません。
+
+### 利用可能な拡張スコープ (Scopes) とクレーム (Claims) \{#available-extended-scopes-and-claims}
+
+| スコープ (Scope) | クレーム (Claims) | 説明 | デフォルトで含まれるか |
+| ------------------------------------ | ------------------------------ | ------------------------------------------------------- | ---------------------- |
+| `custom_data` | `custom_data` | ユーザーオブジェクトに保存されたカスタムデータ | |
+| `identities` | `identities`, `sso_identities` | ユーザーの連携済みソーシャルおよび SSO アイデンティティ | |
+| `roles` | `roles` | ユーザーに割り当てられたロール (Roles) | ✅ |
+| `urn:logto:scope:organizations` | `organizations` | ユーザーの組織 (Organizations) ID | ✅ |
+| `urn:logto:scope:organizations` | `organization_data` | ユーザーの組織 (Organizations) データ | |
+| `urn:logto:scope:organization_roles` | `organization_roles` | ユーザーの組織 (Organizations) ロール (Roles) 割り当て | ✅ |
+
+### Logto コンソールでの設定方法 \{#configure-in-logto-console}
+
+ID トークンに拡張クレーム (Claims) を有効にするには:
+
+1. コンソール > カスタム JWT に移動します。
+2. ID トークンに含めたいクレーム (Claims) のトグルをオンにします。
+3. アプリケーションが認証 (Authentication) 時に対応するスコープ (Scopes) をリクエストしていることを確認します。
+
+## 関連リソース \{#related-resources}
+
+カスタム アクセス トークン
+
+
+ OpenID Connect Core - ID トークン
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
index 03bba10d439..bf25b0b0d17 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
@@ -2,26 +2,26 @@
sidebar_position: 2
---
-# カスタムトークンクレーム (Custom token claims)
+# カスタムアクセス トークン (Custom access token)
-Logto では、アクセス トークン(JWT / 不透明トークン)内にカスタムクレームを追加する柔軟性が提供されています。この機能により、ビジネスロジックに必要な追加情報をトークン内に安全に含めることができ、不透明トークンの場合はイントロスペクション経由で取得できます。
+Logto では、アクセス トークン(JWT / 不透明トークン (Opaque token))内にカスタムクレーム (Claim) を追加する柔軟性を提供しています。この機能により、ビジネスロジックに必要な追加情報をトークン内に安全に含めることができ、不透明トークン (Opaque token) の場合はイントロスペクション経由で取得できます。
## はじめに \{#introduction}
-[アクセス トークン (Access tokens)](https://auth.wiki/access-token) は、認証 (Authentication) と認可 (Authorization) のプロセスで重要な役割を果たし、サブジェクトのアイデンティティ情報や権限を保持し、[Logto サーバー](/concepts/core-service)(認証サーバーまたはアイデンティティプロバイダー (IdP) として機能)、Web サービスサーバー(リソースプロバイダー)、クライアントアプリケーション(クライアント)の間でやり取りされます。
+[アクセス トークン (Access tokens)](https://auth.wiki/access-token) は、認証 (Authentication) と認可 (Authorization) プロセスにおいて重要な役割を果たし、サブジェクトのアイデンティティ情報や権限を保持し、[Logto サーバー](/concepts/core-service)(認証サーバーまたはアイデンティティプロバイダー (IdP) として機能)、Web サービスサーバー(リソースプロバイダー)、クライアントアプリケーション(クライアント)の間でやり取りされます。
-[トークンクレーム (Token claims)](https://auth.wiki/claim) は、エンティティまたはトークン自体に関する情報を提供するキーと値のペアです。クレームには、ユーザー情報、トークンの有効期限、権限、その他認証 (Authentication) および認可 (Authorization) プロセスに関連するメタデータが含まれる場合があります。
+[トークンクレーム (Token claims)](https://auth.wiki/claim) は、エンティティまたはトークン自体に関する情報を提供するキーと値のペアです。クレームには、ユーザー情報、トークンの有効期限、権限、その他認証 (Authentication) や認可 (Authorization) プロセスに関連するメタデータが含まれる場合があります。
Logto には 2 種類のアクセス トークンがあります:
-- **JSON Web Token:** [JSON Web Token (JWT)](https://auth.wiki/jwt) は、クレームを安全かつクライアントが読み取れる形式でエンコードする一般的なフォーマットです。`sub`、`iss`、`aud` などの一般的なクレームは OAuth 2.0 プロトコルに準拠して使用されます(詳細は [こちら](https://datatracker.ietf.org/doc/html/rfc7519#section-4) を参照)。JWT では、追加の検証ステップなしでクレームに直接アクセスできます。Logto では、クライアントが特定のリソースや組織に対して認可リクエストを開始した場合、デフォルトで JWT 形式のアクセス トークンが発行されます。
-- **不透明トークン (Opaque token):** [不透明トークン (Opaque token)](http://localhost:3000/concepts/opaque-token) は自己完結型ではなく、[トークンイントロスペクション (token introspection)](https://auth.wiki/token-introspection) エンドポイントを介した追加の検証ステップが常に必要です。不透明な形式であっても、クレームを取得し、当事者間で安全に送信できます。トークンクレームは Logto サーバー内で安全に保存され、クライアントアプリケーションはトークンイントロスペクションエンドポイント経由でアクセスします。認可リクエストに特定のリソースや組織が含まれていない場合、不透明形式でアクセス トークンが発行されます。これらのトークンは主に OIDC の `userinfo` エンドポイントやその他の一般的な用途で使用されます。
+- **JSON Web Token:** [JSON Web Token (JWT)](https://auth.wiki/jwt) は、クレームを安全かつクライアントが読み取れる形式でエンコードする一般的なフォーマットです。`sub`、`iss`、`aud` などの一般的なクレームは OAuth 2.0 プロトコルに準拠して使用されます(詳細は [こちら](https://datatracker.ietf.org/doc/html/rfc7519#section-4) を参照)。JWT では、追加の検証ステップなしでクレームに直接アクセスできます。Logto では、クライアントが特定のリソースや組織に対して認可リクエストを初期化する際、デフォルトで JWT 形式のアクセス トークンが発行されます。
+- **不透明トークン (Opaque token):** [不透明トークン (Opaque token)](http://localhost:3000/concepts/opaque-token) は自己完結型ではなく、常に [トークンイントロスペクション (token introspection)](https://auth.wiki/token-introspection) エンドポイントによる追加の検証ステップが必要です。不透明な形式であっても、クレームを取得し、当事者間で安全にやり取りすることができます。トークンクレームは Logto サーバーに安全に保存され、クライアントアプリケーションはトークンイントロスペクションエンドポイント経由でアクセスします。認可リクエストに特定のリソースや組織が含まれていない場合、アクセス トークンは不透明形式で発行されます。これらのトークンは主に OIDC の `userinfo` エンドポイントやその他の一般的な用途で使用されます。
-多くの場合、標準クレームだけではアプリケーションの特定のニーズを満たせません(JWT でも不透明トークンでも同様です)。この課題に対応するため、Logto ではアクセス トークン内にカスタムクレームを追加する柔軟性を提供しています。この機能により、ビジネスロジックに必要な追加情報をトークン内に安全に含めることができ、不透明トークンの場合はイントロスペクション経由で取得できます。
+多くの場合、標準クレームだけではアプリケーションの特定のニーズを満たせません。JWT でも不透明トークン (Opaque token) でも同様です。これに対応するため、Logto ではアクセス トークン内にカスタムクレーム (Claim) を追加する柔軟性を提供しています。この機能により、ビジネスロジックに必要な追加情報をトークン内に安全に含めることができ、不透明トークン (Opaque token) の場合はイントロスペクション経由で取得できます。
## カスタムトークンクレームの仕組み \{#how-do-custom-token-claims-work}
-Logto では、コールバック関数 `getCustomJwtClaims` を通じて `アクセス トークン` にカスタムクレームを挿入できます。`getCustomJwtClaims` 関数の実装を用意し、カスタムクレームのオブジェクトを返すことができます。戻り値は元のトークンペイロードとマージされ、署名されて最終的なアクセス トークンが生成されます。
+Logto では、コールバック関数 `getCustomJwtClaims` を通じて `access token` にカスタムクレーム (Claim) を挿入できます。`getCustomJwtClaims` 関数の実装を用意し、カスタムクレームのオブジェクトを返すことができます。戻り値は元のトークンペイロードとマージされ、署名されて最終的なアクセス トークンが生成されます。
```mermaid
sequenceDiagram
@@ -48,11 +48,11 @@ sequenceDiagram
```
:::warning
-Logto の組み込みトークンクレームは上書きや変更ができません。カスタムクレームは追加クレームとしてトークンに追加されます。組み込みクレームとカスタムクレームが競合した場合、カスタムクレームは無視されます。
+Logto の組み込みトークンクレームは上書きや変更できません。カスタムクレームは追加クレームとしてトークンに追加されます。組み込みクレームとカスタムクレームが競合した場合、カスタムクレームは無視されます。
:::
## 関連リソース \{#related-resources}
- Logto で JWT アクセストークンにカスタムクレームを追加して認可 (Authorization) を強化する
+ Logto で JWT アクセス トークンにカスタムクレームを追加して認可 (Authorization) を強化する
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
index edbec1c97af..5088e835dfc 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
@@ -7,34 +7,34 @@ sidebar_position: 2
# よくあるユースケース (Common use cases)
-このセクションでは、[カスタムトークンクレーム](/developers/custom-token-claims) が役立つシナリオの例をいくつか紹介し、参考情報を提供します。これにより、アクセス管理で課題に直面した際に、カスタムトークンクレームが利便性をもたらすかどうかを判断できます。
+このセクションでは、[カスタムアクセス トークン (Access token) クレーム (Claims)](/developers/custom-token-claims) が役立つシナリオの例をいくつか紹介し、参考となる情報を提供します。これにより、アクセス管理で困難に直面した際に、カスタムアクセス トークン (Access token) クレーム (Claims) が利便性をもたらすかどうかを判断できます。
## 属性ベースのアクセス制御 (ABAC) を実現する \{#make-attribute-based-access-control-abac-possible}
-[属性ベースのアクセス制御 (ABAC)](https://auth.wiki/abac) は、属性(ユーザーのロール、リソースのプロパティ、環境条件など)を利用してアクセス制御の判断を行うアクセス制御モデルです。保護されたリソースへのアクセスを柔軟かつ動的に管理できる方法です。
+[属性ベースのアクセス制御 (ABAC)](https://auth.wiki/abac) は、属性(ユーザーのロール (Role)、リソースのプロパティ、環境条件など)を利用してアクセス制御の判断を行うアクセス制御モデルです。これは、保護されたリソースへのアクセスを柔軟かつ動的に管理する方法です。
-たとえば、アプリを開発していて、そのリリースが「パブリックベータ」と「正式リリース」の 2 段階に分かれているとします。アプリが正式リリースされた後も、パブリックベータに参加した古いユーザーには有料機能を引き続き利用させたいと考えています。
+例えば、アプリを開発していて、そのリリースが「パブリックベータ」と「正式リリース」の2段階に分かれているとします。アプリが正式リリースされた後も、パブリックベータに参加していた古いユーザーには有料機能を引き続き利用させたいと考えています。
-アプリが正式リリースされた後は、Logto の [ロールベースのアクセス制御 (RBAC)](/authorization/role-based-access-control) 機能を使って有料機能の利用にアクセス制御を実装します。ユーザーがパブリックベータ期間中にすでにアプリを利用していたかどうかを簡単に判定するために、`getCustomJwtClaims()` メソッドを使ってトークンペイロードに `createdAt` というクレームを追加できます。
+アプリの正式リリース後は、Logto の [ロールベースのアクセス制御 (RBAC)](/authorization/role-based-access-control) 機能を利用して有料機能の利用に対するアクセス制御を実装します。ユーザーがパブリックベータ期間中からアプリを利用していたかどうかを簡単に判定するために、`getCustomJwtClaims()` メソッドを使ってトークンペイロードに `createdAt` クレーム (Claim) を追加できます。
-その後、保護された API でアクセス制御を行う際、次のいずれかの条件を満たすアクセストークンを許可する必要があります:
+その後、保護された API でアクセス制御を行う際、次のいずれかの条件を満たすアクセス トークン (Access token) を許可する必要があります:
-1. RBAC のコンテキストで、有料リソースにアクセスするためのスコープを持っている。
-2. `createdAt` がパブリックベータ期間の終了時刻よりも前である。
+1. RBAC の文脈で、有料リソースにアクセスするためのスコープ (Scope) を持っている。
+2. `createdAt` がパブリックベータ期間の終了時刻より前である。
-カスタムトークンクレーム機能がない場合、[認可 (Authorization)](/authorization) の権限を検証する際、Logto Management API を呼び出して、現在のアクセストークンを持つユーザーが特定の API リソースに必要なロールに対応する権限を持っているかどうかを確認する必要があります。
+カスタム トークン クレーム (Claims) 機能がない場合、[認可 (Authorization)](/authorization) の権限検証時に、Logto Management API を呼び出して、現在のアクセス トークン (Access token) を持つユーザーが特定の API リソースに必要なロール (Role) に対応する権限 (Permission) を持っているかどうかを確認する必要があります。
-同様のシナリオとして、たとえばアプリのログインページでユーザーの誕生日が近い場合にバースデーメッセージを表示したい場合、カスタムトークンクレームを使って [トークンペイロード](/user-management/personal-access-token#example-token-exchange) に誕生日フィールドを追加し、特定のメッセージを表示するかどうかを判定できます。
+同様のシナリオとして、ユーザーの誕生日が近い場合にログインページで誕生日メッセージを表示したい場合も考えられます。カスタム トークン クレーム (Claims) を利用して [トークンペイロード](/user-management/personal-access-token#example-token-exchange) に誕生日フィールドを追加し、特定のメッセージを表示するかどうかを判定できます。
## トークン発行を手動でブロックする \{#manually-block-token-issuance}
-Joe さんはオンラインゲームを運営しており、Logto を [アイデンティティおよびアクセス管理 (IAM)](https://auth.wiki/iam) システムとして利用しています。
+Joe さんがオンラインゲームを運営しており、Logto を [アイデンティティおよびアクセス管理 (IAM)](https://auth.wiki/iam) システムとして利用しているとします。
-このゲームでは、プレイ時間を購入するためにチャージ(課金)が必要だとします。Joe さんは各ユーザーの残高をゲームサービスで記録し、プレイ時間の経過に応じて残高を継続的に減算しています。Joe さんは、アカウント残高がなくなったときに強制的にプレイヤーをログアウトさせ、再チャージを促したいと考えています。
+このゲームでは、プレイ時間を購入するためにチャージが必要です。Joe さんは各ユーザーの残高をゲームサービスで記録し、プレイ時間の経過に応じて残高を継続的に減算しています。Joe さんは、アカウント残高がなくなったときに強制的にプレイヤーをログアウトさせ、再チャージを促したいと考えています。
-このとき、Logto のカスタムトークンクレーム機能を活用できます:
+この場合も、Logto のカスタム トークン クレーム (Claims) 機能を利用して実現できます:
-1. スクリプト内で外部 API 呼び出し [外部データの取得](/developers/custom-token-claims/create-script/#step-3-fetch-external-data) を利用し、Joe さんのゲームサーバーから現在のプレイヤーの残高を取得します。
+1. スクリプト内で、外部 API コール [外部データの取得](/developers/custom-token-claims/create-script/#step-3-fetch-external-data) を使い、Joe さんのゲームサーバーから現在のプレイヤーの残高を取得します。
2. 残高が 0 以下の場合、[`api.denyAccess()`](/developers/custom-token-claims/create-script/#api) メソッドを使ってトークン発行をブロックします。
-このとき、新しい有効なアクセストークンが取得できなくなるため、プレイヤーは強制的にゲームからログアウトされます。
+このとき、新しい有効なアクセス トークン (Access token) を取得できなくなるため、プレイヤーは強制的にゲームからログアウトされます。
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
index e6f2c2766ce..4c91c3eb3dd 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
@@ -1,26 +1,26 @@
---
id: create-script
-title: カスタムトークンクレームスクリプトの作成
-sidebar_label: カスタムトークンクレームスクリプトの作成
+title: カスタムアクセス トークン スクリプトの作成
+sidebar_label: カスタムアクセス トークン スクリプトの作成
sidebar_position: 3
---
-# カスタムトークンクレームスクリプトの作成
+# カスタムアクセス トークン スクリプトの作成
-[アクセス トークン (Access token)](https://auth.wiki/access-token) に [カスタムクレーム (Custom claims)](/developers/custom-token-claims) を追加するには、それらのクレームを含むオブジェクトを返すスクリプトを用意する必要があります。スクリプトは、カスタムクレームを含むオブジェクトを返す `JavaScript` 関数として記述します。
+[カスタムクレームを追加する](/developers/custom-token-claims)ために [アクセス トークン](https://auth.wiki/access-token) にカスタムクレームを追加するには、それらのクレームを含むオブジェクトを返すスクリプトを用意する必要があります。スクリプトは、カスタムクレームを含むオブジェクトを返す `JavaScript` 関数として記述します。
1. コンソール > カスタム JWT に移動します。
-2. カスタマイズ可能なアクセス トークン (Access token) クレームには、2 種類あります:
+2. カスタマイズできるアクセス トークンには 2 種類あります:
- - **ユーザーアクセス トークン (User access token)**:エンドユーザー向けに発行されるアクセス トークン (Access token)。例:Web アプリケーションやモバイルアプリケーション向け。
- - **マシン間通信アクセス トークン (Machine-to-Machine access token)**:サービスやアプリケーション向けに発行されるアクセス トークン (Access token)。例:[マシン間通信アプリケーション](/quick-starts/m2m) 向け。
+ - **ユーザー アクセス トークン**:エンドユーザー向けに発行されるアクセス トークン。例:Web アプリケーションやモバイルアプリケーション向け。
+ - **マシン間通信 (M2M) アクセス トークン**:サービスやアプリケーション向けに発行されるアクセス トークン。例:[マシン間通信アプリケーション](/quick-starts/m2m)向け。
- アクセス トークン (Access token) の種類ごとに、トークンペイロードのコンテキストが異なる場合があります。各種類ごとにトークンクレームを個別にカスタマイズできます。
+ アクセス トークンの種類によって、トークンペイロードのコンテキストが異なる場合があります。各アクセス トークンの種類ごとにトークンクレームを個別にカスタマイズできます。
- カスタマイズしたいアクセス トークン (Access token) の種類を選択し、**カスタムクレームを追加** ボタンをクリックして新しいスクリプトを作成します。
+ カスタマイズしたいアクセス トークンの種類を選択し、**カスタムクレームを追加** ボタンをクリックして新しいスクリプトを作成します。
:::note
-カスタムトークンクレーム機能は、以下のユーザーのみ利用可能です:
+カスタムトークンクレーム機能は以下のユーザーのみ利用可能です:
- [Logto OSS](/logto-oss) ユーザー
- [開発環境を持つ Logto Cloud テナント](/logto-cloud/tenant-settings#development)
@@ -35,7 +35,7 @@ sidebar_position: 3
## ステップ 1: スクリプトの編集 \{#step-1-edit-the-script}
-左側のコードエディタを使ってスクリプトを編集します。デフォルトで空のオブジェクトを返す `getCustomJwtClaims` が用意されているので、ここからカスタムクレームのオブジェクトを返すように関数を修正できます。
+左側のコードエディタを使ってスクリプトを編集します。デフォルトで空のオブジェクトを返す `getCustomJwtClaims` が用意されているので、そこから始められます。関数を修正して独自のカスタムクレームのオブジェクトを返すようにできます。
```jsx
const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
@@ -43,53 +43,53 @@ const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
};
```
-このエディタは JavaScript 言語サーバーを使用しており、基本的な構文ハイライト、コード補完、エラー検出を提供します。入力パラメータは型情報と jsDoc スタイルでドキュメント化されています。エディタの IntelliSense を利用して、入力オブジェクトのプロパティに正しくアクセスできます。詳細なパラメータ定義はページ右側に表示されます。
+このエディタは JavaScript 言語サーバーを使用して、基本的な構文ハイライト、コード補完、エラーチェックを提供します。入力パラメータは型付けされており、jsDoc スタイルでドキュメント化されています。エディタの IntelliSense を利用して、入力オブジェクトのプロパティに正しくアクセスできます。詳細なパラメータ定義はページ右側で確認できます。
:::note
-この関数はモジュールとしてエクスポートされます。関数名は `getCustomJwtClaims` のままにして、モジュールが正しく関数をエクスポートできるようにしてください。
+この関数はモジュールとしてエクスポートされます。関数名を `getCustomJwtClaims` のままにしておくことで、モジュールが正しく関数をエクスポートできます。
:::
## ステップ 2: 入力パラメータ \{#step-2-input-parameters}
-`getCustomJwtClaims` 関数は、オブジェクトを入力パラメータとして受け取ります。入力オブジェクトには次のプロパティが含まれます:
+`getCustomJwtClaims` 関数はオブジェクトを入力パラメータとして受け取ります。入力オブジェクトには以下のプロパティが含まれます:
### token \{#token}
-トークンペイロードオブジェクト。このオブジェクトには、元のトークンクレームやスクリプトで参照可能なメタデータが含まれます。
+トークンペイロードオブジェクト。このオブジェクトには、元のトークンクレームやスクリプト内でアクセスが必要なメタデータが含まれます。
-トークンペイロードオブジェクトやユーザーデータオブジェクトの詳細な型定義は、ページ右側で確認できます。エディタの IntelliSense も、入力オブジェクトのプロパティへのアクセスをサポートします。
+トークンペイロードオブジェクトやユーザーデータオブジェクトの詳細な型定義はページ右側で確認できます。エディタの IntelliSense でもこれらのプロパティに正しくアクセスできます。
-- ユーザーアクセス トークン (User access token) データオブジェクト
+- ユーザー アクセス トークン データオブジェクト
| プロパティ | 説明 | 型 |
| -------------------- | ------------------------------------------------ | ------------- |
| `jti` | 一意の JWT ID | `string` |
- | `aud` | トークンのオーディエンス (Audience) | `string` |
- | `scope` | トークンのスコープ (Scope) | `string` |
+ | `aud` | トークンのオーディエンス | `string` |
+ | `scope` | トークンのスコープ | `string` |
| `clientId` | トークンのクライアント ID | `string` |
| `accountId` | トークンのユーザー ID | `string` |
- | `expiresWithSession` | トークンがセッションとともに失効するか | `boolean` |
+ | `expiresWithSession` | トークンがセッションとともに失効するかどうか | `boolean` |
| `grantId` | トークンの現在の認証 (Authentication) グラント ID | `string` |
| `gty` | トークンのグラントタイプ | `string` |
| `kind` | トークンの種類 | `AccessToken` |
-- マシン間通信アクセス トークン (Machine-to-machine access token) データオブジェクト
+- マシン間通信 (M2M) アクセス トークン データオブジェクト
| プロパティ | 説明 | 型 |
| ---------- | -------------------------- | ------------------- |
| `jti` | 一意の JWT ID | `string` |
- | `aud` | トークンのオーディエンス (Audience) | `string` |
- | `scope` | トークンのスコープ (Scope) | `string` |
+ | `aud` | トークンのオーディエンス | `string` |
+ | `scope` | トークンのスコープ | `string` |
| `clientId` | トークンのクライアント ID | `string` |
| `kind` | トークンの種類 | `ClientCredentials` |
-### context(ユーザーアクセス トークン (User access token) のみ利用可能) \{#context-only-available-for-user-access-token}
+### context(ユーザー アクセス トークンのみ利用可能) \{#context-only-available-for-user-access-token}
context オブジェクトには、現在の認可 (Authorization) プロセスに関連するユーザーデータやグラントデータが含まれます。
- **ユーザーデータオブジェクト**
- ユーザーアクセス トークン (User access token) の場合、Logto は追加のユーザーデータコンテキストを提供します。ユーザーデータオブジェクトには、カスタムクレームの設定に必要なすべてのユーザープロファイルデータや組織 (Organization) メンバーシップデータが含まれます。詳細は [ユーザー](/user-management/user-data) および [組織](/organizations/organization-management#organization-data-structure) をご確認ください。
+ ユーザー アクセス トークンの場合、Logto は追加のユーザーデータコンテキストを提供します。ユーザーデータオブジェクトには、カスタムクレームの設定に必要なすべてのユーザープロファイルデータや組織 (Organization) メンバーシップデータが含まれます。詳細は [ユーザー](/user-management/user-data) および [組織](/organizations/organization-management#organization-data-structure) をご確認ください。
- **グラントデータオブジェクト**
- なりすましトークン交換によって付与されたユーザーアクセス トークン (User access token) の場合、Logto は追加のグラントデータコンテキストを提供します。グラントデータオブジェクトには、サブジェクトトークンからのカスタムコンテキストが含まれます。詳細は [ユーザーなりすまし](/developers/user-impersonation) をご確認ください。
+ なりすましトークン交換によって付与されたユーザー アクセス トークンの場合、Logto は追加のグラントデータコンテキストを提供します。グラントデータオブジェクトには、サブジェクトトークンからのカスタムコンテキストが含まれます。詳細は [ユーザーなりすまし](/developers/user-impersonation) をご確認ください。
- **ユーザーインタラクションデータオブジェクト**
- 特定のユーザーアクセス トークン (User access token) について、現在の認可 (Authorization) セッションのユーザーインタラクション詳細にアクセスする必要がある場合があります。たとえば、サインインに使用されたエンタープライズシングルサインオン (SSO) のアイデンティティを取得したい場合などです。このユーザーインタラクションデータオブジェクトには、ユーザーが直近で送信したインタラクションデータが含まれます:
+ 特定のユーザー アクセス トークンについて、現在の認可 (Authorization) セッションのユーザーインタラクション詳細にアクセスする必要がある場合があります。たとえば、サインインに使用されたエンタープライズ SSO アイデンティティを取得する必要がある場合などです。このユーザーインタラクションデータオブジェクトには、ユーザーが直近で送信したインタラクションデータが含まれます。内容は以下の通りです:
| プロパティ | 説明 | 型 |
| --------------------- | ---------------------------------------------------------------------- | -------------------------- |
@@ -97,7 +97,7 @@ context オブジェクトには、現在の認可 (Authorization) プロセス
| `userId` | 現在のユーザーインタラクションのユーザー ID | `string` |
| `verificationRecords` | インタラクション中にユーザーが本人確認のために提出した認証記録のリスト | `VerificationRecord[]` |
- 検証記録の型:
+ 認証記録の型:
```ts
// VerificationType.Password
@@ -222,18 +222,18 @@ context オブジェクトには、現在の認可 (Authorization) プロセス
```
:::note
- ユーザーインタラクションデータオブジェクトには、複数の検証記録が含まれる場合があります。特に、ユーザーが複数回サインインや登録プロセスを経ている場合です。
+ ユーザーインタラクションデータオブジェクトには、複数の認証記録が含まれる場合があります。特に、ユーザーが複数回サインインや登録プロセスを経ている場合です。
- 例:ユーザーが `Social` 検証記録でサインインし、その後 `EmailVerificationCode` 検証記録で新しいメールアドレスを紐付け、さらに `Totp` 検証記録で MFA 状態を検証した場合など。この場合、スクリプト内で全ての検証記録を適切に処理する必要があります。
+ 例:ユーザーが `Social` 認証記録でサインインし、その後 `EmailVerificationCode` 認証記録で新しいメールアドレスを紐付け、さらに `Totp` 認証記録で MFA 状態を確認した場合。この場合、スクリプト内で全ての認証記録を適切に処理する必要があります。
- 各検証記録の種類は、ユーザーインタラクションデータオブジェクト内に一度だけ存在します。
+ 各認証記録の種類は、ユーザーインタラクションデータオブジェクト内に一度だけ存在します。
:::
### environmentVariables \{#environmentvariables}
-右側の **環境変数の設定** セクションで、スクリプト用の環境変数を設定できます。これらの変数は、スクリプト内でハードコーディングしたくない機密情報や設定データ(例:API キー、シークレット、URL など)を保存するのに利用できます。
+右側の **環境変数を設定** セクションで、スクリプト用の環境変数を設定できます。これらの変数は、スクリプト内でハードコーディングしたくない機密情報や設定データ(例:API キー、シークレット、URL など)を保存するのに利用できます。
-ここで設定したすべての環境変数は、スクリプト内で利用可能です。入力パラメータの `environmentVariables` オブジェクトを使ってアクセスします。
+ここで設定したすべての環境変数はスクリプト内で利用可能です。入力パラメータの `environmentVariables` オブジェクトを使ってアクセスします。
### api \{#api}
@@ -243,11 +243,11 @@ context オブジェクトには、現在の認可 (Authorization) プロセス
api.denyAccess(message?: string): void
```
-`api.denyAccess()` 関数は、カスタムメッセージ付きでトークン発行プロセスを拒否できます。トークン発行プロセスに対して追加のアクセスバリデーションを強制したい場合に利用できます。
+`api.denyAccess()` 関数は、カスタムメッセージ付きでトークン発行プロセスを拒否できます。この関数を使って、トークン発行プロセスに対する追加のアクセスバリデーションを強制できます。
## ステップ 3: 外部データの取得 \{#step-3-fetch-external-data}
-スクリプト内で node 組み込みの `fetch` 関数を使って外部データを取得できます。`fetch` 関数は Promise ベースで、外部 API への HTTP リクエストを行えます。
+スクリプト内で node の組み込み `fetch` 関数を使って外部データを取得できます。`fetch` 関数は Promise ベースで、外部 API への HTTP リクエストを行うことができます。
```jsx
const getCustomJwtClaims = async ({ environmentVariables }) => {
@@ -271,19 +271,19 @@ const getCustomJwtClaims = async ({ environmentVariables }) => {
さらに:
- スクリプト内でエラーやタイムアウトを適切に処理し、トークン発行プロセスがブロックされないようにしてください。
-- 適切な認可 (Authorization) ヘッダーを使用し、外部 API への不正アクセスを防止してください。
+- 適切な認可ヘッダーを使用して、外部 API への不正アクセスを防止してください。
:::
## ステップ 4: スクリプトのテスト \{#step-4-test-the-script}
-スクリプトを保存する前に必ずテストしてください。ページ右側の **テストコンテキスト** タブをクリックし、テスト用のモックトークンペイロードやユーザーデータコンテキストを編集できます。
+スクリプトを保存する前に必ずテストしてください。ページ右側の **テストコンテキスト** タブをクリックして、テスト用のモックトークンペイロードやユーザーデータコンテキストを編集できます。
エディタ右上の **テスト実行** をクリックすると、モックデータでスクリプトを実行できます。スクリプトの出力は **テスト結果** ドロワーに表示されます。
:::note
-テスト結果は、モックデータを使った `getCustomJwtClaims` 関数の出力です([シーケンス図](/developers/custom-token-claims/#how-do-custom-token-claims-work) のステップ 3 で得られる「追加トークンクレーム」)。実際のトークンペイロードやユーザーデータコンテキストは、トークン発行プロセスでスクリプトが実行される際に異なります。
+テスト結果は、モックデータを使った `getCustomJwtClaims` 関数の出力です([シーケンス図](/developers/custom-token-claims/#how-do-custom-token-claims-work) のステップ 3 完了後に得られる「追加トークンクレーム」)。実際のトークンペイロードやユーザーデータコンテキストは、トークン発行プロセスでスクリプトが実行される際に異なります。
:::
-**作成** ボタンをクリックしてスクリプトを保存します。カスタムトークンクレームスクリプトは保存され、アクセス トークン (Access token) 発行プロセスに適用されます。
+**作成** ボタンをクリックしてスクリプトを保存します。カスタムトークンクレームスクリプトは保存され、アクセス トークン発行プロセスに適用されます。
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
index 1274ae21ff2..44f41546f10 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
@@ -2,20 +2,20 @@
id: sdk-conventions
title: プラットフォーム SDK の規約
sidebar_label: プラットフォーム SDK の規約
-sidebar_position: 7
+sidebar_position: 8
---
# プラットフォーム SDK の規約
Logto は非常に強力で柔軟な Web 認証 (Authentication) サービスを提供しています。
-Logto のサービスを実際に使用する際には、開発者が自分のクライアントアプリケーションに Logto SDK を統合して、ユーザーのサインイン状態や権限を管理することが便利です。
+Logto のサービスを実際に利用する際、利便性のために開発者が自身のクライアントアプリケーションに Logto SDK を統合し、ユーザーのサインイン状態や権限などを管理する必要がよくあります。
-Logto がサポートするすべてのプログラミング言語 / フレームワークの SDK は [こちら](/quick-starts) で見つけることができます。
+Logto がサポートするすべてのプログラミング言語 / フレームワーク向けの SDK は [こちら](/quick-starts) で確認できます。
-もし、希望する SDK が見つからない場合は、希望するプログラミング言語用に SDK を実装するための規約を以下に示します。これにより、Logto サービスをより簡単に利用できます。
+もし希望する SDK が見つからなかった場合は、ここで紹介する規約に従って、希望するプログラミング言語向けの SDK を実装することで、Logto サービスをより簡単に利用できるようになります。
-この規約は、次の 3 つの主要な部分で構成されています:
+この規約は主に 3 つのパートで構成されています:
設計戦略
コア SDK の規約
@@ -28,7 +28,7 @@ Logto がサポートするすべてのプログラミング言語 / フレー
- Logto 用の Node.js ベースのフレームワーク SDK を数分で作成
+ 数分で Logto 用 Node.js ベースのフレームワーク SDK を作成する
-Logto 用の Web SDK を数分で作成
+数分で Logto 用 Web SDK を作成する
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
index fd04a368d22..65b09614e6a 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
@@ -2,14 +2,14 @@
id: signing-keys
title: 署名鍵
sidebar_label: 署名鍵
-sidebar_position: 4
+sidebar_position: 5
---
# 署名鍵
-Logto の [OIDC 署名鍵](https://auth.wiki/signing-key)(「OIDC プライベート鍵」や「OIDC クッキー鍵」とも呼ばれます)は、Logto の [サインインセッション](/end-user-flows/sign-out#sign-in-session) で JWT([アクセス トークン](https://auth.wiki/access-token) や [ID トークン](https://auth.wiki/id-token))およびブラウザクッキーに署名するために使用される鍵です。これらの署名鍵は、Logto データベースの初期化時([オープンソース](/logto-oss))や新しいテナント作成時([Cloud](/logto-cloud))に生成され、[CLI](/logto-oss/using-cli)(オープンソース)、Management API、またはコンソール UI から管理できます。
+Logto の [OIDC 署名鍵](https://auth.wiki/signing-key)(「OIDC プライベート鍵」や「OIDC クッキー鍵」とも呼ばれます)は、Logto の [サインインセッション](/end-user-flows/sign-out#sign-in-session) において JWT([アクセス トークン](https://auth.wiki/access-token) や [ID トークン](https://auth.wiki/id-token))およびブラウザクッキーに署名するために使用される鍵です。これらの署名鍵は、Logto データベースの初期化時([オープンソース](/logto-oss))や新しいテナントの作成時([Cloud](/logto-cloud))に生成され、[CLI](/logto-oss/using-cli)(オープンソース)、Management API、またはコンソール UI を通じて管理できます。
-デフォルトでは、Logto は楕円曲線(EC)アルゴリズムを使用してデジタル署名を生成します。しかし、ユーザーが JWT 署名を検証する必要がある場合や、多くの古いツールが EC アルゴリズムをサポートしておらず(RSA のみサポート)、このためプライベート鍵のローテーション機能と署名アルゴリズム(RSA と EC の両方を含む)の選択機能を実装しています。これにより、古い署名検証ツールを使用するサービスとの互換性が確保されます。
+デフォルトでは、Logto は楕円曲線(EC)アルゴリズムを使用してデジタル署名を生成します。しかし、ユーザーが JWT 署名を検証する必要がある場合や、多くの古いツールが EC アルゴリズムをサポートしておらず(RSA のみサポート)、このためプライベート鍵のローテーション機能と署名アルゴリズムの選択(RSA と EC の両方を含む)を実装しています。これにより、古い署名検証ツールを使用するサービスとの互換性が確保されます。
:::note
理論的には、署名鍵は漏洩してはならず、有効期限もありません。つまり、ローテーションの必要はありません。しかし、一定期間ごとに署名鍵をローテーションすることでセキュリティを強化できます。
@@ -18,28 +18,28 @@ Logto の [OIDC 署名鍵](https://auth.wiki/signing-key)(「OIDC プライベ
## 仕組み \{#how-it-works}
- **OIDC プライベート鍵**
- Logto インスタンスの初期化時に、公開鍵とプライベート鍵のペアが自動的に生成され、基盤となる OIDC プロバイダーに登録されます。これにより、Logto が新しい JWT(アクセス トークンや ID トークン)を発行する際、そのトークンはプライベート鍵で署名されます。同時に、JWT を受け取ったクライアントアプリケーションは、ペアとなる公開鍵を使ってトークン署名を検証し、トークンが第三者によって改ざんされていないことを確認できます。プライベート鍵は Logto サーバー上で保護されますが、公開鍵はその名の通り誰でもアクセスでき、OIDC エンドポイントの `/oidc/jwks` インターフェースから取得できます。プライベート鍵生成時に署名鍵アルゴリズムを指定でき、Logto はデフォルトで EC(楕円曲線)アルゴリズムを使用します。管理者ユーザーは、プライベート鍵のローテーションによってデフォルトアルゴリズムを RSA(Rivest-Shamir-Adleman)に変更できます。
+ Logto インスタンスの初期化時に、公開鍵とプライベート鍵のペアが自動的に生成され、基盤となる OIDC プロバイダーに登録されます。これにより、Logto が新しい JWT(アクセス トークンや ID トークン)を発行する際、そのトークンはプライベート鍵で署名されます。同時に、JWT を受け取ったクライアントアプリケーションは、ペアとなる公開鍵を使ってトークン署名を検証し、トークンが第三者によって改ざんされていないことを確認できます。プライベート鍵は Logto サーバー上で保護されますが、公開鍵はその名の通り誰でもアクセス可能であり、OIDC エンドポイントの `/oidc/jwks` インターフェースから取得できます。署名鍵のアルゴリズムはプライベート鍵生成時に指定でき、Logto はデフォルトで EC(楕円曲線)アルゴリズムを使用します。管理者ユーザーは、プライベート鍵をローテーションすることでデフォルトのアルゴリズムを RSA(Rivest-Shamir-Adleman)に変更できます。
- **OIDC クッキー鍵**
- ユーザーがサインインまたはサインアップフローを開始すると、サーバー上で「OIDC セッション」が作成され、同時に一連のブラウザクッキーも生成されます。これらのクッキーにより、ブラウザは Logto 体験 (Experience) API にリクエストを送り、サインイン、サインアップ、パスワードリセットなどの一連の操作をユーザーの代わりに実行できます。ただし、JWT とは異なり、クッキーは Logto OIDC サービス自身のみが署名・検証を行い、非対称暗号化は必要ありません。そのため、クッキー署名鍵には公開鍵のペアや非対称暗号化アルゴリズムはありません。
+ ユーザーがサインインまたはサインアップフローを開始すると、サーバー上に「OIDC セッション」が作成され、同時に一連のブラウザクッキーも生成されます。これらのクッキーにより、ブラウザは Logto 体験 (Experience) API にリクエストを送り、サインイン、サインアップ、パスワードリセットなどの一連の操作をユーザーの代わりに実行できます。ただし、JWT とは異なり、クッキーは Logto OIDC サービス自身のみで署名・検証され、非対称暗号化は必要ありません。そのため、クッキー署名鍵にはペアとなる公開鍵や非対称暗号アルゴリズムはありません。
## コンソール UI から署名鍵をローテーションする \{#rotate-signing-keys-from-console-ui}
Logto には「署名鍵ローテーション」機能があり、テナント内で新しい OIDC プライベート鍵およびクッキー鍵を作成できます。
-1. コンソール > 署名鍵 に移動します。ここで OIDC
- プライベート鍵と OIDC クッキー鍵の両方を管理できます。
-2. 署名鍵をローテーションするには、「プライベート鍵をローテーション」または「クッキー鍵をローテーション」ボタンをクリックします。プライベート鍵をローテーションする際、署名アルゴリズムを変更することも可能です。
+1. コンソール > 署名鍵
+ に移動します。ここで OIDC プライベート鍵と OIDC クッキー鍵の両方を管理できます。
+2. 署名鍵をローテーションするには、「プライベート鍵をローテーション」または「クッキー鍵をローテーション」ボタンをクリックします。プライベート鍵をローテーションする際は、署名アルゴリズムを変更することも可能です。
3. 使用中のすべての署名鍵が一覧表示されたテーブルが表示されます。注意:前の鍵は削除できますが、現在の鍵は削除できません。
- | ステータス | 説明 |
- | ---------- | -------------------------------------------------------------------------------------------------------------- |
- | 現在 | この鍵が現在アプリケーションや API でアクティブに使用されていることを示します。 |
- | 前回 | 以前使用されていたがローテーションされた鍵を指します。この署名鍵で発行された既存のトークンは引き続き有効です。 |
+ | ステータス | 説明 |
+ | ---------- | -------------------------------------------------------------------------------------------------------- |
+ | 現在 | この鍵が現在アプリケーションや API でアクティブに使用されていることを示します。 |
+ | 前回 | 以前使用されていたがローテーションされた鍵です。この署名鍵で発行された既存のトークンは引き続き有効です。 |
-ローテーションには以下の 3 つのアクションが含まれることを覚えておいてください:
+ローテーションには次の 3 つのアクションが含まれることを忘れないでください:
1. **新しい署名鍵の作成**:これにより、すべての **アプリケーション** および **API** で新しい署名鍵の採用が必要となります。
-2. **現在の鍵のローテーション**:既存の鍵はローテーション後「前回」として指定され、新規作成されるアプリケーションや API では使用されません。ただし、この鍵で署名されたトークンは引き続き有効です。
+2. **現在の鍵のローテーション**:既存の鍵はローテーション後「前回」として指定され、新しく作成されたアプリケーションや API では使用されません。ただし、この鍵で署名されたトークンは引き続き有効です。
3. **前回の鍵の削除**:ステータスが「前回」となっている鍵は失効し、テーブルから削除されます。
:::warning
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
index cf31d06ca19..4a7975dafdb 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
@@ -2,18 +2,18 @@
id: user-impersonation
title: ユーザーなりすまし (User impersonation)
sidebar_label: ユーザーなりすまし (User impersonation)
-sidebar_position: 3
+sidebar_position: 4
---
import TokenExchangePrerequisites from './fragments/_token-exchange-prerequisites.mdx';
# ユーザーなりすまし (User impersonation)
-TechCorp のサポートエンジニアである Sarah が、重要なリソースにアクセスできないという顧客 Alex から緊急の問い合わせを受けたとします。問題を効率的に診断し解決するために、Sarah はシステム上で Alex とまったく同じ画面を確認する必要があります。ここで Logto のユーザーなりすまし (User impersonation) 機能が役立ちます。
+TechCorp のサポートエンジニアである Sarah が、重要なリソースにアクセスできないという顧客 Alex から緊急のチケットを受け取ったと想像してください。問題を効率的に診断し解決するために、Sarah はシステム内で Alex とまったく同じ画面を確認する必要があります。ここで Logto のユーザーなりすまし (User impersonation) 機能が役立ちます。
-ユーザーなりすまし (User impersonation) を利用すると、Sarah のような権限を持つユーザーが、Alex のような他のユーザーになり代わって一時的にシステムを操作できます。この強力な機能は、トラブルシューティングやカスタマーサポート、管理業務に非常に有用です。
+ユーザーなりすまし (User impersonation) を利用すると、Sarah のような権限を持つユーザーが、Alex のような他のユーザーになりすまして一時的にシステム内で操作できます。この強力な機能は、トラブルシューティングやカスタマーサポート、管理業務に非常に有用です。
-## 仕組み \{#how-it-works}
+## 仕組みは? \{#how-it-works}
```mermaid
sequenceDiagram
@@ -23,7 +23,7 @@ sequenceDiagram
participant LogtoToken as Logto トークンエンドポイント
Sarah->>TechCorp: POST /api/request-impersonation
- Note over Sarah,TechCorp: Alex のなりすましリクエスト
+ Note over Sarah,TechCorp: Alex になりすますリクエスト
TechCorp->>Logto: POST /api/subject-tokens
Note over TechCorp,Logto: Alex のサブジェクトトークンをリクエスト
@@ -32,7 +32,7 @@ sequenceDiagram
TechCorp-->>Sarah: サブジェクトトークンを返却
Sarah->>LogtoToken: POST /oidc/token
- Note over Sarah,LogtoToken: サブジェクトトークンをアクセストークンへ交換
+ Note over Sarah,LogtoToken: サブジェクトトークンをアクセストークンに交換
LogtoToken-->>Sarah: アクセストークンを返却
Note over Sarah: Sarah は Alex としてリソースにアクセス可能
@@ -40,17 +40,17 @@ sequenceDiagram
なりすまし (Impersonation) のプロセスは主に 3 つのステップで構成されます:
-1. Sarah が TechCorp のバックエンドサーバー経由でなりすましをリクエスト
+1. Sarah が TechCorp のバックエンドサーバーを通じてなりすましをリクエスト
2. TechCorp のサーバーが Logto の Management API からサブジェクトトークンを取得
-3. Sarah のアプリがこのサブジェクトトークンをアクセストークンへ交換
+3. Sarah のアプリケーションがこのサブジェクトトークンをアクセストークンに交換
-Sarah がこの機能を使って Alex をサポートする流れを見てみましょう。
+Sarah がどのようにこの機能を使って Alex をサポートできるか見てみましょう。
### ステップ 1: なりすましリクエスト \{#step-1-requesting-impersonation}
まず、Sarah のサポートアプリケーションが TechCorp のバックエンドサーバーに対してなりすましをリクエストします。
-**リクエスト(Sarah のアプリケーション → TechCorp のサーバー)**
+**リクエスト (Sarah のアプリケーション → TechCorp のサーバー)**
```bash
POST /api/request-impersonation HTTP/1.1
@@ -65,13 +65,13 @@ Content-Type: application/json
}
```
-この API では、Sarah が Alex のなりすましを行うための十分な権限を持っているかどうか、バックエンド側で適切な認可 (Authorization) チェックを行う必要があります。
+この API では、Sarah が Alex になりすますための十分な権限を持っているかどうか、バックエンド側で適切な認可 (Authorization) チェックを行う必要があります。
### ステップ 2: サブジェクトトークンの取得 \{#step-2-obtaining-a-subject-token}
Sarah のリクエストを検証した後、TechCorp のサーバーは Logto の [Management API](/integrate-logto/interact-with-management-api) を呼び出してサブジェクトトークンを取得します。
-**リクエスト(TechCorp のサーバー → Logto Management API)**
+**リクエスト (TechCorp のサーバー → Logto Management API)**
```bash
POST /api/subject-tokens HTTP/1.1
@@ -89,7 +89,7 @@ Content-Type: application/json
}
```
-**レスポンス(Logto → TechCorp のサーバー)**
+**レスポンス (Logto → TechCorp のサーバー)**
```json
{
@@ -100,7 +100,7 @@ Content-Type: application/json
TechCorp のサーバーはこのサブジェクトトークンを Sarah のアプリケーションに返却します。
-**レスポンス(TechCorp のサーバー → Sarah のアプリケーション)**
+**レスポンス (TechCorp のサーバー → Sarah のアプリケーション)**
```json
{
@@ -109,15 +109,15 @@ TechCorp のサーバーはこのサブジェクトトークンを Sarah のア
}
```
-### ステップ 3: サブジェクトトークンをアクセストークンへ交換 \{#step-3-exchanging-the-subject-token-for-an-access-token}
+### ステップ 3: サブジェクトトークンをアクセストークンに交換 \{#step-3-exchanging-the-subject-token-for-an-access-token}
-Sarah のアプリケーションは、このサブジェクトトークンを Alex を表すアクセストークンへ交換し、トークンを使用するリソースを指定します。
+次に、Sarah のアプリケーションがこのサブジェクトトークンを Alex を表すアクセストークンに交換し、トークンを使用するリソースを指定します。
-**リクエスト(Sarah のアプリケーション → Logto のトークンエンドポイント)**
+**リクエスト (Sarah のアプリケーション → Logto のトークンエンドポイント)**
-従来の Web アプリやアプリシークレットを持つマシン間通信アプリの場合、`Authorization` ヘッダーに認証情報を含めます:
+従来の Web アプリケーションやアプリシークレットを持つマシン間通信アプリケーションの場合、`Authorization` ヘッダーに認証情報を含めます:
```bash
POST /oidc/token HTTP/1.1
@@ -133,7 +133,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&resource=https://api.techcorp.com/customer-data
```
-SPA やネイティブアプリ(アプリシークレットなし)の場合は、`client_id` をリクエストボディに含めます:
+SPA やアプリシークレットを持たないネイティブアプリケーションの場合、`client_id` をリクエストボディに含めます:
```bash
POST /oidc/token HTTP/1.1
@@ -149,7 +149,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&resource=https://api.techcorp.com/customer-data
```
-**レスポンス(Logto → Sarah のアプリケーション)**
+**レスポンス (Logto → Sarah のアプリケーション)**
```json
{
@@ -208,14 +208,14 @@ async function impersonateUser(
);
if (!impersonationResponse.ok) {
- throw new Error(`HTTP エラーが発生しました。ステータス: ${impersonationResponse.status}`);
+ throw new Error(`HTTP error occurred. Status: ${impersonationResponse.status}`);
}
const { subjectToken } = (await impersonationResponse.json()) as ImpersonationResponse;
- // ステップ 3: サブジェクトトークンをアクセストークンへ交換
+ // ステップ 3: サブジェクトトークンをアクセストークンに交換
// highlight-start
- // 従来の Web や M2M アプリの場合はクライアントシークレットで Basic 認証
+ // 従来の Web または M2M アプリの場合はクライアントシークレットで Basic 認証
// SPA やネイティブアプリの場合はリクエストボディに client_id を含める
const headers: Record = {
'Content-Type': 'application/x-www-form-urlencoded',
@@ -246,7 +246,7 @@ async function impersonateUser(
});
if (!tokenExchangeResponse.ok) {
- throw new Error(`HTTP エラー! ステータス: ${tokenExchangeResponse.status}`);
+ throw new Error(`HTTP error! status: ${tokenExchangeResponse.status}`);
}
const tokenData = (await tokenExchangeResponse.json()) as TokenExchangeResponse;
@@ -261,7 +261,7 @@ async function impersonateUser(
async function performImpersonation(): Promise {
try {
// highlight-start
- // 従来の Web や M2M アプリの場合はクライアントシークレットを渡す
+ // 従来の Web または M2M アプリの場合はクライアントシークレットを渡す
const accessToken = await impersonateUser(
'alex123',
'techcorp_support_app',
@@ -270,7 +270,7 @@ async function performImpersonation(): Promise {
'your-client-secret' // SPA やネイティブアプリの場合は省略
);
// highlight-end
- console.log('Alex のなりすましアクセストークン:', accessToken);
+ console.log('Alex 用のなりすましアクセストークン:', accessToken);
} catch (error) {
console.error('なりすまし実行に失敗しました:', error);
}
@@ -283,18 +283,18 @@ void performImpersonation();
:::note
1. サブジェクトトークンは短命かつ一度きりの利用です。
-2. なりすましアクセストークンには [リフレッシュ トークン (Refresh token)](https://auth.wiki/refresh-token) は付与されません。Sarah はトークンの有効期限が切れる前に問題を解決できなかった場合、このプロセスを繰り返す必要があります。
+2. なりすましアクセストークンには [リフレッシュ トークン (Refresh token)](https://auth.wiki/refresh-token) は付与されません。Sarah はトークンが有効期限切れになる前に問題を解決できなかった場合、このプロセスを繰り返す必要があります。
3. TechCorp のバックエンドサーバーは、Sarah のような権限を持つサポート担当者のみがなりすましをリクエストできるよう、適切な認可 (Authorization) チェックを実装する必要があります。
:::
-## `act` クレーム \{#act-claim}
+## `act` クレーム (Claim) \{#act-claim}
-なりすましのためのトークンエクスチェンジフローを利用する場合、発行されるアクセストークンには追加の `act`(アクター)クレームを含めることができます。このクレームは「なりすましを実行している当事者」(この例では Sarah)のアイデンティティを表します。
+なりすましのためのトークンエクスチェンジフローを利用する場合、発行されるアクセストークンに追加の `act`(アクター)クレームを含めることができます。このクレームは「なりすましを実行している当事者」のアイデンティティ(この例では Sarah)を表します。
`act` クレームを含めるには、Sarah のアプリケーションがトークンエクスチェンジリクエストで `actor_token` を指定する必要があります。このトークンは `openid` スコープを持つ Sarah の有効なアクセストークンでなければなりません。リクエスト例は以下の通りです:
-従来の Web アプリやマシン間通信アプリの場合:
+従来の Web アプリケーションやマシン間通信アプリケーションの場合:
```bash
POST /oidc/token HTTP/1.1
@@ -350,7 +350,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
Logto では、なりすましトークンの [トークンクレームをカスタマイズ](/developers/custom-token-claims) できます。なりすましの理由や関連サポートチケットなど、追加のコンテキストやメタデータを付与したい場合に便利です。
-TechCorp のサーバーが Logto の Management API へサブジェクトトークンをリクエストする際、`context` オブジェクトを含めることができます:
+TechCorp のサーバーが Logto の Management API からサブジェクトトークンをリクエストする際、`context` オブジェクトを含めることができます:
```json
{
@@ -396,10 +396,10 @@ Sarah が受け取るアクセストークンは次のようになります:
}
```
-このようにアクセストークンクレームをカスタマイズすることで、TechCorp はなりすましのコンテキストに関する有用な情報をトークンに含め、システム内でのなりすまし操作の監査や把握が容易になります。
+このようにアクセストークンのクレームをカスタマイズすることで、TechCorp はなりすましのコンテキストに関する有用な情報を含めることができ、システム内でのなりすまし操作の監査や把握が容易になります。
:::note
-トークンにカスタムクレームを追加する際は注意してください。トークンが傍受または漏洩した場合にセキュリティリスクとなるような機微情報は含めないようにしましょう。JWT は署名されていますが暗号化されていないため、クレームはトークンにアクセスできる誰にでも見えてしまいます。
+トークンにカスタムクレームを追加する際は注意してください。トークンが漏洩した場合にセキュリティリスクとなるような機微情報は含めないようにしましょう。JWT は署名されていますが暗号化されていないため、トークンにアクセスできる者にはクレーム内容が見えてしまいます。
:::
## 関連リソース \{#related-resources}
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
index 63d00ec52eb..b16370c8eb7 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
@@ -1,26 +1,26 @@
---
-sidebar_position: 5
+sidebar_position: 6
---
-# Webhook(ウェブフック)
+# Webhook
-Logto の [Webhook](https://auth.wiki/webhook) は、ユーザーアカウント、ロール、権限、組織 (Organizations)、組織ロール、組織権限、[ユーザーインタラクション](/end-user-flows) など、さまざまなイベントに対してリアルタイム通知を提供します。
+Logto の [Webhook](https://auth.wiki/webhook) は、ユーザーアカウント、ロール、権限、組織 (Organizations)、組織ロール、組織権限、[ユーザー操作](/end-user-flows) など、さまざまなイベントに対してリアルタイム通知を提供します。
イベントがトリガーされると、Logto は指定したエンドポイント URL に HTTP リクエストを送信し、ユーザー ID、ユーザー名、メールアドレスなど、イベントに関する詳細情報を含みます(ペイロードやヘッダーに含まれるデータの詳細については [Webhook リクエスト](/developers/webhooks/webhooks-request) を参照してください)。アプリケーション側でこのリクエストを処理し、メール送信やデータベースの更新など、カスタマイズしたアクションを実行できます。
-ユーザーのニーズに応じて、対応イベントを随時追加しています。ビジネスに特有の要件があれば、ぜひご連絡ください。
+ユーザーのニーズに応じて、対応するイベントを随時追加しています。ビジネス要件があれば、ぜひご連絡ください。
## なぜ Webhook を使うのか? \{#why-use-webhook}
-Webhook はアプリケーション間のリアルタイム通信を実現し、ポーリングの必要をなくし、即時のデータ更新を可能にします。複雑なコードや独自 API なしで、アプリケーション統合やワークフロー自動化をシンプルにします。
+Webhook はアプリケーション間のリアルタイム通信を実現し、ポーリングの必要をなくし、即時のデータ更新を可能にします。複雑なコードや独自 API を使わずに、アプリケーション統合やワークフロー自動化をシンプルにします。
CIAM における一般的な Webhook のユースケース例をいくつか紹介します:
-- **メール送信**:Webhook を設定し、新規ユーザー登録時にウェルカムメールを送信したり、新しいデバイスや場所からサインインがあった際に管理者へ通知したりできます。
-- **通知送信**:Webhook を設定し、CRM システムのバーチャルアシスタントをトリガーして、ユーザー登録時にリアルタイムでカスタマーサポートを提供できます。
-- **追加の API コール実行**:Webhook を設定し、ユーザーのメールドメインや IP アドレスをチェックしてアクセスを検証し、その後 Logto Management API を使ってリソース権限付きの適切なロールを割り当てます。
-- **データ同期**:Webhook を設定し、ユーザーアカウントの停止や削除などの変更をアプリケーション側で常に最新に保ちます。
-- **レポート生成**:Webhook を設定し、ユーザーのログインアクティビティデータを受け取り、ユーザーエンゲージメントや利用パターンのレポート作成に活用します。
+- **メール送信**:Webhook を設定して、新規ユーザー登録時にウェルカムメールを送信したり、新しいデバイスや場所からサインインがあった際に管理者へ通知したりできます。
+- **通知送信**:Webhook を設定して、CRM システムと連携したバーチャルアシスタントをトリガーし、ユーザー登録時にリアルタイムでカスタマーサポートを提供できます。
+- **追加の API コール実行**:Webhook を設定して、ユーザーのメールドメインや IP アドレスをチェックし、Logto Management API を使って適切なロールやリソース権限を割り当てることができます。
+- **データ同期**:Webhook を設定して、ユーザーアカウントの停止や削除などの変更をアプリケーション側で常に最新に保つことができます。
+- **レポート生成**:Webhook を設定してユーザーのログインアクティビティデータを受け取り、ユーザーエンゲージメントや利用傾向のレポート作成に活用できます。
## 用語 \{#terms}
@@ -28,10 +28,10 @@ CIAM における一般的な Webhook のユースケース例をいくつか紹
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Event | 特定のアクションが実行されると、特定タイプのフックイベントがトリガーされます。例:ユーザーがサインアップを完了し新しいアカウントを作成した際、Logto は PostRegister フックイベントを発行します。 |
| Hook | 特定イベントにフックする 1 つまたは複数のアクション。アクションには API コールやコードスニペットの実行などが含まれます。 |
-| Webhook | イベントペイロードを使って API を呼び出すことを示すフックのサブタイプです。 |
-| たとえば、開発者がユーザーが新しいデバイスからサインインした際に通知を送りたい場合、PostSignIn イベントに対して自身のセキュリティサービス API を呼び出す webhook を追加できます。 |
+| Webhook | イベントのペイロードを使って API を呼び出すことを示すフックのサブタイプです。 |
+| たとえば、開発者がユーザーが新しいデバイスからサインインした際に通知を送りたい場合、PostSignIn イベントに対して自身のセキュリティサービス API を呼び出す Webhook を追加できます。 |
-以下は、Logto で `PostSignIn` イベントに対して 2 つのウェブフックを有効化する例です:
+以下は、Logto で `PostSignIn` イベントに対して 2 つの Webhook を有効化する例です:
```mermaid
graph LR
@@ -67,7 +67,7 @@ graph LR
-同期 Webhook を利用するとユーザーのサインインフローがよりスムーズになりますが、現時点では未対応です(将来的に対応予定です)。そのため、同期 Webhook に依存するシナリオは現状すべて異なる回避策が必要です。ご質問があればお気軽にご連絡ください。
+同期 Webhook を利用するとユーザーのサインインフローがよりスムーズになりますが、現時点ではサポートしていません(将来的には対応予定です)。そのため、同期 Webhook に依存するシナリオは現状すべて異なる回避策が必要です。ご質問があればお気軽にご連絡ください。
@@ -89,7 +89,7 @@ graph LR
-Webhook を受信するエンドポイントは、Webhook を正常に受信したことを Logto に伝えるため、できるだけ早く 2xx レスポンスを返す必要があります。Webhook の処理ロジックはユーザーごとに大きく異なるため、処理が複雑すぎると数秒かかり、Logto Webhook がタイムアウトする場合があります。ベストプラクティスは独自のイベントキューを用意し、Logto Webhook を受信したらイベントをキューに挿入し、すぐに 2xx レスポンスを Logto に返すことです。その後、独自のワーカーでキュー内のタスクを順次処理します。ワーカーでエラーが発生した場合は、自身のサーバーで対応してください。
+Webhook を受信するエンドポイントは、Webhook を正常に受信したことを Logto に伝えるため、できるだけ早く 2xx レスポンスを返す必要があります。Webhook の処理ロジックはユーザーごとに大きく異なるため、処理が複雑すぎると数秒かかり、Logto Webhook がタイムアウトする場合があります。ベストプラクティスは独自のイベントキューを持つことです。Logto Webhook を受信したら、イベントをキューに挿入し、すぐに 2xx レスポンスを Logto に返します。その後、独自のワーカーでキュー内のタスクを順次処理します。ワーカーでエラーが発生した場合は、自身のサーバーで対応してください。
@@ -100,10 +100,10 @@ Webhook を受信するエンドポイントは、Webhook を正常に受信し
-はい、Webhook のペイロードで IP アドレスやユーザーエージェントなどを取得できます。現在サポートされていない情報が必要な場合は、GitHub issue でフィーチャーリクエストを作成するか、お問い合わせください。
+はい、Webhook のペイロードで IP アドレスやユーザーエージェントなどを取得できます。現在サポートされていない情報が必要な場合は、GitHub issue で機能リクエストを作成するか、お問い合わせください。
## 関連リソース \{#related-resources}
-Webhooks vs. polling
+Webhooks とポーリングの違い
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
index eb0f5f20b08..c189ff5b0b8 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
@@ -8,27 +8,53 @@ import GearIcon from '@site/src/assets/gear.svg';
# アカウント設定
-Logto は、ユーザーが Logto に保存されているアカウントやプロフィールを管理できる 2 種類のアカウント設定 API を提供しています。
+Logto では、ユーザーが Logto に保存されているアカウントやプロフィールを管理するための複数の方法を提供しています。
-## アカウント API の利用(推奨) \{#use-account-apis-recommended}
+## 組み込みアカウントセンター UI を利用する(推奨) \{#use-prebuilt-account-center-ui-recommended}
-Logto のアカウント API は、エンドユーザーが自身の情報を安全に閲覧・更新できる、権限チェック内蔵のフロントエンド向けエンドポイントです。クライアントアプリケーションに組み込むだけで、洗練されたセルフサービス型アカウント設定ページを実現できます。
+Logto には、エンドユーザーがアカウント設定を管理できる、すぐに使えるページを備えた組み込みアカウントセンター UI があります。これはアプリケーションにアカウント管理機能を追加する最速の方法です。
主な特徴:
-- **エンドユーザー設定**:ユーザー自身でサインイン識別子や認証情報、ソーシャルアカウント、多要素認証 (MFA) 方法、プロフィールデータを管理できます。
-- **クライアントサイド統合**:フロントエンドで安全に直接利用できる設計。
-- **最小限のセットアップ**:カスタムサーバー不要のターンキーエンドポイント。
-- **権限コントロール**:どのアカウント API を有効にするかは Management API 設定で切り替え可能。
+- **開発不要**:すぐに使えるページで、すぐに利用可能です。
+- **一貫した体験**:Logto のサインイン体験と同じ見た目と操作感です。
+- **セキュリティ内蔵**:すべての認証フローやセキュリティ対策が自動で処理されます。
+- **フル機能**:メール、電話番号、ユーザー名、パスワード、多要素認証 (MFA) 設定の更新に対応。
,
+ },
+ },
+ ]}
+/>
+
+## アカウント API を利用する \{#use-account-apis}
+
+Logto のアカウント API は、エンドユーザーが自身の情報を安全に閲覧・更新できる、権限チェック内蔵のフロントエンドエンドポイントです。独自の UI でカスタムアカウント設定ページを構築したい場合に利用します。
+
+主な特徴:
+
+- **エンドユーザー設定**:ユーザー自身でサインイン識別子や認証情報、ソーシャルアカウント、MFA 方法、プロフィールデータを管理できます。
+- **クライアントサイド統合**:フロントエンドで安全に直接利用できる設計です。
+- **完全カスタマイズ**:Logto の安全な API を活用しつつ、独自の UI を構築できます。
+- **権限コントロール**:どのアカウント API を有効にするかは Management API 設定で切り替え可能です。
+
+,
},
@@ -36,24 +62,24 @@ Logto のアカウント API は、エンドユーザーが自身の情報を安
]}
/>
-## Management API の利用 \{#use-management-apis}
+## Management API を利用する \{#use-management-apis}
-Management API は Logto の中核となる管理インターフェースであり、管理者やバックエンドサービスのみがアクセスできます。すべてのユーザーアカウントに対して最大限の柔軟性と完全な CRUD コントロールを提供し、カスタム管理ツールの構築が可能です。完全にカスタマイズされたセルフサービスポータルや標準外のユーザー管理機能が必要な場合は、選択した Management API エンドポイントを独自の「アカウント API」レイヤーの裏側で公開し、ビジネスの認証ロジックで保護できます。
+Management API は Logto のコア管理インターフェースであり、管理者やバックエンドサービスのみがアクセスできます。すべてのユーザーアカウントに対して最大限の柔軟性と完全な CRUD コントロールを提供し、カスタム管理ツールの構築が可能です。完全にカスタムなセルフサービスポータルや標準外のユーザー管理機能が必要な場合は、選択した Management API エンドポイントを独自の「アカウント API」レイヤーの裏側に公開し、ビジネスの認証ロジックで保護できます。
主な特徴:
- **管理者専用アクセス**:開発者やバックオフィスシステム向け
-- **ユーザーライフサイクル全体**:アカウントの作成・参照・更新・削除・一時停止・復元
-- **高度な操作**:個人用アクセストークンの発行、ユーザーなりすまし、OAuth アプリの接続、ワークフローのカスタマイズなど
+- **ユーザーライフサイクル全体**:アカウントの作成、閲覧、更新、削除、一時停止、復元
+- **高度な操作**:パーソナルアクセストークンの発行、ユーザーなりすまし、OAuth アプリ連携、ワークフローのカスタマイズなど
,
},
@@ -61,13 +87,14 @@ Management API は Logto の中核となる管理インターフェースであ
]}
/>
-## アカウント API と Management API の比較 \{#account-api-vs-management-api}
+## アカウント設定オプションの比較 \{#comparison-of-account-settings-options}
-| 機能 | アカウント API | Management API |
-| ------------------------ | ---------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
-| **想定ユーザー** | エンドユーザー | 管理者 / 開発者 |
-| **アクセスコンテキスト** | クライアントサイド / フロントエンド | サーバーサイド / バックエンド |
-| **権限モデル** | Management API で有効化するアカウント API を切り替え可能 | 開発者による完全カスタマイズ可能 |
-| **対応機能** | ユーザー名、メール、電話番号、パスワード、ソーシャルアカウント、多要素認証 (MFA)、プロフィールの閲覧・更新・削除 | すべての基本設定 + アカウントの削除/一時停止/復元、個人用アクセストークン、ユーザーなりすまし、OAuth アプリ接続など |
-| **セットアップの複雑さ** | 非常に低い(プラグアンドプレイ) | 中〜高(カスタム実装が必要) |
-| **利用シーン** | クライアントアプリで安全なセルフサービス型アカウント設定ページを最小限のセットアップで素早く導入したい場合 | アカウント API で要件を満たせない場合(例:複雑なアカウント削除ロジック、高リスク操作、バックオフィスツールの構築など) |
+| 機能 | 組み込みアカウントセンター UI | アカウント API | Management API |
+| ------------------------ | ----------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
+| **想定ユーザー** | エンドユーザー | エンドユーザー | 管理者 / 開発者 |
+| **アクセスコンテキスト** | Logto ホストのページへリダイレクト | クライアントサイド / フロントエンド | サーバーサイド / バックエンド |
+| **権限モデル** | アカウントセンター設定で有効フィールドを切り替え | Management API で有効なアカウント API を切り替え | 開発者による完全カスタマイズ |
+| **対応機能** | 更新:メール、電話番号、ユーザー名、パスワード、MFA(TOTP、パスキー、バックアップコード) | 閲覧・更新・削除:ユーザー名、メール、電話番号、パスワード、ソーシャルアカウント、MFA、プロフィール | すべての基本設定+アカウント削除・一時停止・復元、パーソナルアクセストークン、ユーザーなりすまし、OAuth アプリ連携など |
+| **UI カスタマイズ** | サインイン体験のブランディングを継承 | 完全カスタマイズ(独自 UI 構築) | 完全カスタマイズ(独自 UI 構築) |
+| **導入の複雑さ** | なし(組み込みページへのリンクのみ) | 低(API を UI で利用) | 中〜高(カスタム実装が必要) |
+| **利用シーン** | カスタムページを作らず最速でアカウント管理を追加したい場合 | カスタム UI が必要だが Logto の安全な API を活用したい場合 | アカウント API で要件を満たせない場合。例:複雑なアカウント削除ロジック、高リスク操作、バックオフィスツールの構築など |
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
new file mode 100644
index 00000000000..e03c79d6966
--- /dev/null
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
@@ -0,0 +1,149 @@
+---
+description: Logto の組み込み Account Center UI を利用して、ユーザーがアカウントを管理する方法を学びます
+sidebar_position: 2
+---
+
+# 組み込み Account Center UI によるアカウント設定
+
+## 組み込み Account Center UI とは \{#what-is-the-prebuilt-account-center-ui}
+
+Logto では、エンドユーザーがアカウント設定を管理できる、すぐに使えるページを備えた組み込み Account Center UI を提供しています。この組み込み UI は Logto によってホストされており、以下のような一般的なアカウント管理タスクを処理します:
+
+- メールアドレスの更新
+- 電話番号の更新
+- ユーザー名の更新
+- パスワードの設定または更新
+- MFA 設定(TOTP 認証アプリ、パスキー、バックアップコード)の管理
+
+組み込み Account Center UI はアプリケーションとシームレスに連携し、カスタムのアカウント管理ページを作成することなく、一貫したユーザー体験を提供します。
+
+## 組み込み UI を利用するメリット \{#benefits-of-using-the-prebuilt-ui}
+
+- **開発不要**:すぐに使えるページで、追加開発は不要
+- **一貫した体験**:Logto のサインイン体験と統一されたデザイン
+- **セキュリティ内蔵**:すべての認証フローやセキュリティ対策を自動で処理
+- **常に最新**:新機能やセキュリティ強化が自動で反映
+
+## 利用可能なページ \{#available-pages}
+
+組み込み Account Center UI では、Logto テナントエンドポイントの `/account` パス配下で、以下のページが利用できます:
+
+| パス | 説明 |
+| -------------------------------- | -------------------------------- |
+| `/account/email` | メインメールアドレスの更新 |
+| `/account/phone` | メイン電話番号の更新 |
+| `/account/username` | ユーザー名の更新 |
+| `/account/password` | パスワードの設定または更新 |
+| `/account/passkey/add` | 新しいパスキー(WebAuthn)の追加 |
+| `/account/passkey/manage` | 既存パスキーの表示と管理 |
+| `/account/authenticator-app` | TOTP 認証アプリの設定 |
+| `/account/backup-codes/generate` | 新しいバックアップコードの生成 |
+| `/account/backup-codes/manage` | バックアップコードの表示と管理 |
+
+例えば、テナントエンドポイントが `https://example.logto.app` の場合、メール更新ページは `https://example.logto.app/account/email` で利用できます。
+
+## 組み込み UI の利用方法 \{#how-to-use-the-prebuilt-ui}
+
+### ステップ 1: Account API を有効化 \{#step-1-enable-account-api}
+
+組み込み Account Center UI は Account API に依存しています。コンソール > サインイン & アカウント > アカウントセンター
+に移動し、Account API を有効化してください。
+
+必要に応じてフィールド権限を設定します:
+
+- ユーザーが編集できるようにする場合はフィールドを `Edit` に設定
+- 閲覧のみ許可する場合は `ReadOnly` に設定
+- 完全に非表示にする場合は `Off` に設定
+
+### ステップ 2: アプリケーションから組み込みページへリンク \{#step-2-link-to-prebuilt-pages}
+
+組み込み Account Center UI を利用するには、アプリケーションから該当する Logto ページへユーザーをリダイレクトする必要があります。方法は 2 つあります:
+
+#### 方法 A: リダイレクトパラメータ付きの直接リンク \{#approach-a-direct-linking}
+
+アプリケーション内に、組み込みページへリダイレクトするリンクを設置します。`redirect` クエリパラメータを付与し、操作完了後にアプリへ戻れるようにします:
+
+```
+https://[tenant-id].logto.app/account/email?redirect=https://your-app.com/settings
+```
+
+ユーザーがメールアドレスの更新を完了すると、`https://your-app.com/settings` へリダイレクトされます。
+
+#### 方法 B: アカウント設定フローへの組み込み \{#approach-b-embedding}
+
+既存のアカウント設定ワークフローに組み込みページを統合することも可能です:
+
+1. アプリのアカウント設定ページで、ユーザーの現在の情報を表示
+2. 「編集」や「更新」ボタンを設置し、該当する組み込みページへリンク
+3. ユーザーが操作を完了すると、アプリへリダイレクト
+
+実装例:
+
+```tsx
+function AccountSettings() {
+ const tenantEndpoint = 'https://example.logto.app';
+ const redirectUrl = encodeURIComponent(window.location.href);
+
+ return (
+
+
Account Settings
+
+
+
+
+
+
+
+ );
+}
+```
+
+### ステップ 3: 成功時のリダイレクト処理 \{#step-3-handle-success-redirects}
+
+ユーザーが操作を完了すると、指定した URL へ `show_success` クエリパラメータ付きでリダイレクトされます。これを利用して成功メッセージを表示できます:
+
+```tsx
+function SettingsPage() {
+ const searchParams = new URLSearchParams(window.location.search);
+ const showSuccess = searchParams.get('show_success');
+
+ return (
+
+ {showSuccess === 'email' &&
Email updated successfully!
}
+ {showSuccess === 'password' &&
Password updated successfully!
}
+ {/* ... rest of your settings page */}
+
+ );
+}
+```
+
+## セキュリティに関する考慮事項 \{#security-considerations}
+
+組み込み Account Center UI には、以下のセキュリティ対策が組み込まれています:
+
+- **アイデンティティ確認**:重要な変更(メール、電話、パスワード、MFA)の前に、現在のパスワードや既存の認証方法で本人確認を実施
+- **認証コード**:メールや電話番号の更新時には、新しいアドレス/番号へ認証コードを送信
+- **セッション検証**:すべての操作でユーザーのセッションを検証し、不正アクセスを防止
+
+## カスタマイズオプション \{#customization-options}
+
+組み込み Account Center UI は、サインイン体験設定のブランディング(ロゴやカラー、ダーク/ライトモード、言語設定など)を継承します。
+
+組み込み UI 以上のカスタマイズが必要な場合は、[Account API](/end-user-flows/account-settings/by-account-api) を利用して独自のアカウント管理ページを構築することも可能です。
+
+## 関連リソース \{#related-resources}
+
+- [Account API によるアカウント設定](/end-user-flows/account-settings/by-account-api) - API をフル活用したカスタムアカウント管理
+- [Management API によるアカウント設定](/end-user-flows/account-settings/by-management-api) - 管理者向けアカウント管理
+- [MFA 設定](/end-user-flows/mfa) - 多要素認証 (MFA) の設定
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/introduction/README.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/introduction/README.mdx
index e6a66804fbc..998d9f09740 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/introduction/README.mdx
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/introduction/README.mdx
@@ -32,7 +32,7 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
# はじめに
-Logto ドキュメントへようこそ!Logto は、モダンなアプリや SaaS プロダクト向けに設計されたアイデンティティおよびアクセス管理 (IAM) ソリューションです。アプリケーション向けに、安全でスケーラブルかつカスタマイズ可能な認証 (Authentication)・認可 (Authorization) システムを提供します。
+Logto ドキュメントへようこそ!Logto は、モダンなアプリや SaaS プロダクト向けに設計されたアイデンティティおよびアクセス管理 (IAM) ソリューションです。アプリケーションのために、安全でスケーラブルかつカスタマイズ可能な認証 (Authentication)・認可 (Authorization) システムを提供します。
## 機能から探す \{#explore-by-features}
@@ -143,6 +143,10 @@ Logto ドキュメントへようこそ!Logto は、モダンなアプリや S
icon: ,
docId: 'developers/custom-token-claims/README',
},
+ {
+ icon: ,
+ docId: 'developers/custom-id-token/README',
+ },
{
icon: ,
docId: 'developers/user-impersonation',
@@ -169,7 +173,7 @@ Logto の機能は 4 つの主要な柱の上に構築されており、これ
label: 'Logto Console',
href: 'https://cloud.logto.io',
description:
- 'Web ベースのインターフェースでリソースの設定や管理ができ、サインイン体験のクイックセットアップやアイデンティティ管理が簡単に行えます。',
+ 'Web ベースのインターフェースでリソースの設定や管理ができ、サインイン体験の迅速なセットアップやアイデンティティ管理が簡単に行えます。',
customProps: {
icon: ,
},
@@ -179,7 +183,7 @@ Logto の機能は 4 つの主要な柱の上に構築されており、これ
label: 'エンドユーザー体験',
href: '/end-user-flows',
description:
- '完全な認証 (Authentication) フローとユーザーインターフェースを提供し、Logto Console や API を通じて幅広いカスタマイズが可能です。',
+ 'Logto Console や API を通じて幅広いカスタマイズが可能な、完全な認証 (Authentication) フローとユーザーインターフェースを提供します。',
customProps: {
icon: ,
},
@@ -199,7 +203,7 @@ Logto の機能は 4 つの主要な柱の上に構築されており、これ
label: 'SDK',
href: '/quick-starts',
description:
- 'エンドツーエンドのチュートリアルや SDK を活用し、お好みのフレームワークですぐに始められます。',
+ 'エンドツーエンドのチュートリアルや SDK を活用して、お好みのフレームワークですぐに始められます。',
customProps: {
icon: ,
},
@@ -209,7 +213,7 @@ Logto の機能は 4 つの主要な柱の上に構築されており、これ
label: 'Logto MCP サーバー',
href: '/logto-cloud/logto-mcp-server',
description:
- 'AI ツールや IDE を Logto Cloud に接続するリモート MCP サーバーで、リソース管理や認証 (Authentication) 連携を実現します。',
+ 'AI ツールや IDE を Logto Cloud に接続し、リソース管理や認証 (Authentication) 連携を可能にするリモート MCP サーバーです。',
customProps: {
icon: ,
},
@@ -226,7 +230,7 @@ Logto の機能は 4 つの主要な柱の上に構築されており、これ
label: 'Logto Cloud',
href: '/logto-cloud',
description:
- 'クラウドサービスは Free、Pro、Enterprise プランを用意し、さまざまなニーズに対応します。Logto によってホスト・管理されており、開発用テナントでは Logto の全機能をテストできます。',
+ 'クラウドサービスは Free、Pro、Enterprise プランを用意し、さまざまなニーズに対応します。Logto がホスティング・管理を行い、開発用テナントでは Logto の全機能をテストできます。',
customProps: {
icon: ,
},
@@ -244,7 +248,7 @@ Logto の機能は 4 つの主要な柱の上に構築されており、これ
]}
/>
-## コミュニティに参加する \{#join-our-community}
+## コミュニティに参加しよう \{#join-our-community}
[Logto Discord](https://discord.com/invite/UEPaF3j5e6) サーバーに参加しましょう — 開発者やビジネス向けの活発なコミュニティです。ディスカッションに参加し、最新情報を受け取り、フィードバックを共有できます。
@@ -253,5 +257,5 @@ Logto の機能は 4 つの主要な柱の上に構築されており、これ
アイデンティティシステムが初めての場合は、まず以下の基本概念をお読みください:
サインイン体験
-認証 (Authentication) & 認可 (Authorization)
+認証 (Authentication)・認可 (Authorization)
Logto コアサービス
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md b/i18n/ja/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
index a5ff6f52308..158392f5393 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
@@ -1,81 +1,88 @@
こちらはサポートされているスコープと対応するクレーム (Claims) の一覧です:
-**`openid`**
+### 標準 OIDC スコープ {#standard-oidc-scopes}
-| Claim name | Type | 説明 | Needs userinfo? |
-| ---------- | -------- | ---------------------- | --------------- |
-| sub | `string` | ユーザーの一意の識別子 | No |
+**`openid`**(デフォルト)
-**`profile`**
+| クレーム名 | 型 | 説明 |
+| ---------- | -------- | ---------------------- |
+| sub | `string` | ユーザーの一意の識別子 |
-| Claim name | Type | 説明 | Needs userinfo? |
-| ---------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- |
-| name | `string` | ユーザーのフルネーム | No |
-| username | `string` | ユーザーのユーザー名 | No |
-| picture | `string` | エンドユーザーのプロフィール画像の URL。この URL は画像ファイル(例:PNG、JPEG、GIF 画像ファイル)を指す必要があります。画像を含む Web ページではありません。この URL は、エンドユーザーを説明する際に表示するのに適したプロフィール写真を参照するべきであり、エンドユーザーが撮影した任意の写真ではありません。 | No |
-| created_at | `number` | エンドユーザーが作成された時刻。時刻は Unix エポック(1970-01-01T00:00:00Z)からのミリ秒数で表されます。 | No |
-| updated_at | `number` | エンドユーザーの情報が最後に更新された時刻。時刻は Unix エポック(1970-01-01T00:00:00Z)からのミリ秒数で表されます。 | No |
+**`profile`**(デフォルト)
-その他の [標準クレーム (Standard Claims)](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) には、`family_name`、`given_name`、`middle_name`、`nickname`、`preferred_username`、`profile`、`website`、`gender`、`birthdate`、`zoneinfo`、`locale` などがあり、これらも `profile` スコープに含まれ、userinfo エンドポイントをリクエストする必要はありません。上記のクレームとの違いは、これらのクレームは値が空でない場合のみ返される点です。一方、上記のクレームは値が空の場合 `null` が返されます。
+| クレーム名 | 型 | 説明 |
+| ---------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| name | `string` | ユーザーのフルネーム |
+| username | `string` | ユーザーのユーザー名 |
+| picture | `string` | エンドユーザーのプロフィール画像の URL。この URL は画像ファイル(例:PNG、JPEG、GIF 画像ファイル)を指す必要があり、画像を含む Web ページではありません。この URL は、エンドユーザーを説明する際に表示するのに適したプロフィール写真を特に参照するべきであり、エンドユーザーが撮影した任意の写真ではありません。 |
+| created_at | `number` | エンドユーザーが作成された時刻。時刻は Unix エポック(1970-01-01T00:00:00Z)からのミリ秒数で表されます。 |
+| updated_at | `number` | エンドユーザーの情報が最後に更新された時刻。時刻は Unix エポック(1970-01-01T00:00:00Z)からのミリ秒数で表されます。 |
+
+その他の [標準クレーム (Standard Claims)](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) には、`family_name`、`given_name`、`middle_name`、`nickname`、`preferred_username`、`profile`、`website`、`gender`、`birthdate`、`zoneinfo`、`locale` などがあり、これらも `profile` スコープに含まれ、userinfo エンドポイントをリクエストする必要はありません。上記のクレームとの違いは、これらのクレームは値が空でない場合のみ返されるのに対し、上記のクレームは値が空の場合 `null` が返される点です。
:::note
-標準クレームと異なり、`created_at` および `updated_at` クレームは秒ではなくミリ秒を使用しています。
+標準クレームとは異なり、`created_at` および `updated_at` クレームは秒ではなくミリ秒を使用しています。
:::
**`email`**
-| Claim name | Type | 説明 | Needs userinfo? |
-| -------------- | --------- | -------------------------------- | --------------- |
-| email | `string` | ユーザーのメールアドレス | No |
-| email_verified | `boolean` | メールアドレスが認証済みかどうか | No |
+| クレーム名 | 型 | 説明 |
+| -------------- | --------- | -------------------------------- |
+| email | `string` | ユーザーのメールアドレス |
+| email_verified | `boolean` | メールアドレスが認証済みかどうか |
**`phone`**
-| Claim name | Type | 説明 | Needs userinfo? |
-| --------------------- | --------- | -------------------------- | --------------- |
-| phone_number | `string` | ユーザーの電話番号 | No |
-| phone_number_verified | `boolean` | 電話番号が認証済みかどうか | No |
+| クレーム名 | 型 | 説明 |
+| --------------------- | --------- | -------------------------- |
+| phone_number | `string` | ユーザーの電話番号 |
+| phone_number_verified | `boolean` | 電話番号が認証済みかどうか |
**`address`**
アドレスクレームの詳細については [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#AddressClaim) を参照してください。
+:::info
+**(デフォルト)** と記載されたスコープは常に Logto SDK によってリクエストされます。標準 OIDC スコープのクレームは、対応するスコープがリクエストされた場合、常に ID トークンに含まれます — 無効化できません。
+:::
+
+### 拡張スコープ {#extended-scopes}
+
+以下のスコープは Logto によって拡張されており、[userinfo エンドポイント](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo) を通じてクレームが返されます。これらのクレームは Console > Custom JWT
+を通じて ID トークンに直接含めるよう設定することもできます。詳細は [カスタム ID トークン](/developers/custom-id-token) を参照してください。
+
**`custom_data`**
-| Claim name | Type | 説明 | Needs userinfo? |
-| ----------- | -------- | ------------------------ | --------------- |
-| custom_data | `object` | ユーザーのカスタムデータ | Yes |
+| クレーム名 | 型 | 説明 | デフォルトで ID トークンに含まれるか |
+| ----------- | -------- | ------------------------ | ------------------------------------ |
+| custom_data | `object` | ユーザーのカスタムデータ | |
**`identities`**
-| Claim name | Type | 説明 | Needs userinfo? |
-| -------------- | -------- | ----------------------------------------- | --------------- |
-| identities | `object` | ユーザーのリンク済みアイデンティティ | Yes |
-| sso_identities | `array` | ユーザーのリンク済み SSO アイデンティティ | Yes |
+| クレーム名 | 型 | 説明 | デフォルトで ID トークンに含まれるか |
+| -------------- | -------- | ----------------------------------------- | ------------------------------------ |
+| identities | `object` | ユーザーのリンク済みアイデンティティ | |
+| sso_identities | `array` | ユーザーのリンク済み SSO アイデンティティ | |
**`roles`**
-| Claim name | Type | 説明 | Needs userinfo? |
-| ---------- | ---------- | ------------------------ | --------------- |
-| roles | `string[]` | ユーザーのロール (Roles) | No |
+| クレーム名 | 型 | 説明 | デフォルトで ID トークンに含まれるか |
+| ---------- | ---------- | ---------------- | ------------------------------------ |
+| roles | `string[]` | ユーザーのロール | ✅ |
**`urn:logto:scope:organizations`**
-| Claim name | Type | 説明 | Needs userinfo? |
-| ----------------- | ---------- | ----------------------------------------------- | --------------- |
-| organizations | `string[]` | ユーザーが所属する組織 (Organizations) の ID | No |
-| organization_data | `object[]` | ユーザーが所属する組織 (Organizations) のデータ | Yes |
+| クレーム名 | 型 | 説明 | デフォルトで ID トークンに含まれるか |
+| ----------------- | ---------- | ------------------------------ | ------------------------------------ |
+| organizations | `string[]` | ユーザーが所属する組織 ID | ✅ |
+| organization_data | `object[]` | ユーザーが所属する組織のデータ | |
:::note
-これらの組織 (Organizations) クレームは、[不透明トークン (Opaque token)](/concepts/opaque-token) を使用する場合にも userinfo エンドポイント経由で取得できます。ただし、不透明トークン (Opaque token) は組織トークン (Organization token) として組織固有リソースへのアクセスには使用できません。詳細は [不透明トークン (Opaque token) と組織 (Organizations)](/concepts/opaque-token#opaque-token-and-organizations) を参照してください。
+これらの組織クレームは、[不透明トークン (Opaque token)](/concepts/opaque-token) を使用している場合にも userinfo エンドポイント経由で取得できます。ただし、不透明トークンは組織トークンとして組織固有リソースへのアクセスには使用できません。詳細は [不透明トークンと組織](/concepts/opaque-token#opaque-token-and-organizations) を参照してください。
:::
**`urn:logto:scope:organization_roles`**
-| Claim name | Type | 説明 | Needs userinfo? |
-| ------------------ | ---------- | ----------------------------------------------------------------------------------------------- | --------------- |
-| organization_roles | `string[]` | ユーザーが所属する組織 (Organizations) のロール (Roles)。形式は `:` | No |
-
----
-
-パフォーマンスとデータサイズを考慮し、「Needs userinfo?」が「Yes」の場合、そのクレーム (Claim) は ID トークン (ID token) には表示されず、[userinfo エンドポイント](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo) のレスポンスで返されます。
+| クレーム名 | 型 | 説明 | デフォルトで ID トークンに含まれるか |
+| ------------------ | ---------- | ---------------------------------------------------------------------- | ------------------------------------ |
+| organization_roles | `string[]` | ユーザーが所属する組織ロール(`:` の形式) | ✅ |
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx b/i18n/ja/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
index 8e9fc0e7daa..87fce5f57b8 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
@@ -1,6 +1,6 @@
-import ScopeClaimList from './_scope-claim-list.md';
+Logto は OIDC の [スコープ (Scope) とクレーム (Claim) の規約](https://openid.net/specs/openid-connect-core-1_0.html#Claims) を利用して、ID トークンおよび OIDC userinfo エンドポイント からユーザー情報を取得するためのスコープ (Scope) とクレーム (Claim) を定義しています。どちらの「スコープ (Scope)」と「クレーム (Claim)」も OAuth 2.0 および OpenID Connect (OIDC) 仕様の用語です。
-Logto は OIDC の [スコープとクレームの規約](https://openid.net/specs/openid-connect-core-1_0.html#Claims) を使用して、ID トークンおよび OIDC userinfo エンドポイント からユーザー情報を取得するためのスコープとクレームを定義します。「スコープ」と「クレーム」は、OAuth 2.0 および OpenID Connect (OIDC) 仕様からの用語です。
+標準 OIDC クレーム (Claim) の場合、ID トークンへの含有はリクエストされたスコープ (Scope) によって厳密に決定されます。拡張クレーム (Claim)(例:`custom_data` や `organizations`)は、カスタム ID トークン 設定を通じて ID トークンに追加で表示するように設定できます。
{/* TODO: Remove below */}
@@ -8,13 +8,13 @@ Logto は OIDC の [スコープとクレームの規約](https://openid.net/spe
<>
-要するに、スコープをリクエストすると、ユーザー情報の対応するクレームを取得できます。例えば、`email` スコープをリクエストすると、ユーザーの `email` と `email_verified` データを取得できます。
+簡単に言うと、スコープ (Scope) をリクエストすると、対応するクレーム (Claim) がユーザー情報として取得できます。例えば、`email` スコープ (Scope) をリクエストすると、ユーザーの `email` および `email_verified` データが取得できます。
- デフォルトでは、Logto SDK は常に 3 つのスコープをリクエストします:`openid`、`profile`、および
- `offline_access` です。 これらのデフォルトスコープを削除する方法はありませんが、Logto
- を設定する際にさらにスコープを追加することができます:
+ デフォルトで、Logto SDK は常に 3 つのスコープ
+ (Scope)(`openid`、`profile`、`offline_access`)をリクエストします。 これらのデフォルトスコープ
+ (Scope) を削除する方法はありませんが、Logto の設定時に追加のスコープ (Scope) を追加できます:
{props.configScopesCode}
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/developers/README.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/developers/README.mdx
index 9d20842bf7d..f134ca2cc12 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/developers/README.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/developers/README.mdx
@@ -1,6 +1,6 @@
# 개발자
-Logto는 [OAuth 2](https://auth.wiki/oauth-2.0) 및 [OIDC](https://auth.wiki/openid-connect) 프로토콜을 기반으로 한 [아이덴티티 및 접근 관리 (IAM)](https://auth.wiki/iam) 서비스입니다. Logto와 같은 IAM 서비스는 종종 다른 웹 서비스의 기반이 되며, 해당 웹 서비스 내의 다양한 인가 (Authorization) 상태는 Logto에 의해 직접적으로 영향을 받습니다.
+Logto는 [OAuth 2](https://auth.wiki/oauth-2.0) 및 [OIDC](https://auth.wiki/openid-connect) 프로토콜을 기반으로 한 [아이덴티티 및 접근 관리 (IAM)](https://auth.wiki/iam) 서비스입니다. Logto와 같은 IAM 서비스는 종종 다른 웹 서비스의 기반 역할을 하며, 해당 웹 서비스 내의 다양한 인가 (Authorization) 상태는 Logto에 의해 직접적으로 영향을 받습니다.
사용자에게 편의를 제공하기 위해, Logto는 자주 사용되는 개발자 기능들을 제공합니다.
@@ -19,9 +19,18 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
items={[
{
type: 'link',
- label: '커스텀 토큰 클레임 (Custom token claims)',
+ label: '커스텀 액세스 토큰 (Custom access token)',
href: '/developers/custom-token-claims',
- description: '추가 클레임 (Claims)을 첨부하여 접근 제어의 기능을 확장할 수 있으며, ABAC 구현 또는 토큰 발급 거부에 활용할 수 있습니다.',
+ description: '커스텀 스크립트를 사용하여 액세스 토큰 (Access token)에 추가 클레임 (Claim)을 부여하고, ABAC를 활성화하거나 토큰 발급을 거부할 수 있습니다.',
+ customProps: {
+ icon: ,
+ }
+ },
+ {
+ type: 'link',
+ label: '커스텀 ID 토큰 (Custom ID token)',
+ href: '/developers/custom-id-token',
+ description: 'OIDC 명세에 따라 ID 토큰 (ID token)에 포함될 확장 클레임 (Claim)을 제어할 수 있습니다.',
customProps: {
icon: ,
}
@@ -30,7 +39,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: '사용자 가장 (User impersonation)',
href: '/developers/user-impersonation',
- description: '인가된 사용자가 최종 사용자를 대신하여 임시로 행동할 수 있도록 하여, 문제 해결, 고객 지원, 관리 작업에 유용합니다.',
+ description: '인가된 사용자가 최종 사용자 대신 임시로 행동할 수 있도록 허용하여, 문제 해결, 고객 지원, 관리 작업에 유용합니다.',
customProps: {
icon: ,
}
@@ -57,7 +66,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: 'Webhook',
href: '/developers/webhooks',
- description: 'Webhook은 HTTP 요청을 통해 사용자 정보 및 권한 (Permissions) 업데이트에 대한 실시간 알림을 지원하여, Logto 통합의 편의성과 유연성을 높입니다.',
+ description: 'Webhook은 HTTP 요청을 통해 사용자 정보 및 권한 (Permission) 업데이트에 대한 실시간 알림을 지원하여, Logto 통합의 편의성과 유연성을 높입니다.',
customProps: {
icon: ,
}
@@ -75,7 +84,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: 'SDK 규약 (SDK convention)',
href: '/developers/',
- description: 'SDK 내 데이터 구조, 목적, 메서드를 소개하여 사용자가 다양한 비즈니스 시나리오에 맞게 SDK를 커스터마이즈할 수 있도록 합니다.',
+ description: 'SDK 내 데이터 구조, 목적, 메서드를 소개하여, 사용자가 다양한 비즈니스 시나리오에 맞게 SDK를 커스터마이즈할 수 있도록 합니다.',
customProps: {
icon: ,
}
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
index b3ca13e4521..8e046ce540a 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
@@ -1,17 +1,17 @@
---
-sidebar_position: 6
+sidebar_position: 7
---
# 감사 로그
-Logto의 감사 로그를 통해 사용자 활동과 이벤트를 쉽게 모니터링할 수 있습니다. 이는 다양한 사용자 관리 및 상태 점검 비즈니스 시나리오에 강력한 기반을 제공합니다.
+Logto의 감사 로그를 통해 사용자 활동 및 이벤트를 쉽게 모니터링할 수 있습니다. 이는 다양한 사용자 관리 및 상태 점검 비즈니스 시나리오에 강력한 기반을 제공합니다.
## 모든 로그 보기 \{#view-all-logs}
콘솔 > 감사 로그로 이동하세요. Logto는 인증 (Authentication)
이벤트를 캡처하여 표로 정리합니다. 이벤트 이름, 사용자, 애플리케이션, 타임스탬프를 추적합니다.
-이벤트 이름과 애플리케이션 이름을 기준으로 결과를 필터링하여 원하는 로그만 좁혀볼 수 있습니다. 특정
-이벤트를 클릭하면 추가 세부 정보를 확인할 수 있습니다.
+이벤트 이름과 애플리케이션 이름을 기준으로 필터링하여 결과를 좁힐 수 있습니다. 특정 이벤트를
+클릭하면 추가 세부 정보를 확인할 수 있습니다.
:::warning
감사 로그에는 사용자 인증 (Authentication) 과정에서 발생한 로그만 포함되며, Management API 작업 로그는 기록되지 않습니다.
@@ -19,7 +19,7 @@ Logto의 감사 로그를 통해 사용자 활동과 이벤트를 쉽게 모니
## 테넌트 수준에서 사용자 활동 캡처 \{#capture-user-activity-at-the-tenant-level}
-Logto의 로그는 포괄적인 세부 정보를 제공하여 조치의 용이성과 고객 안전을 보장합니다. 다음 정보를 캡처 및 기록합니다:
+Logto의 로그는 포괄적인 세부 정보를 제공하여 조치의 용이성과 고객 안전을 보장합니다. 다음 정보를 캡처하고 기록합니다:
- 이벤트 유형 ([감사 로그 이벤트 전체 목록은 여기](/developers/audit-logs/event-types)에서 확인 가능)
- 관련 애플리케이션
@@ -35,7 +35,7 @@ Logto의 로그는 포괄적인 세부 정보를 제공하여 조치의 용이
## 사용자 수준에서 상세 분석 수행 \{#perform-a-detailed-analysis-at-the-user-level}
-관리자는 특정 사용자와 관련된 로그를 상세하게 분석할 수 있어, 특정 이벤트에 대한 포괄적인 조사가 가능합니다. 탐색 과정은 직관적이고 사용자 친화적입니다.
+관리자는 특정 사용자와 관련된 로그를 상세히 분석할 수 있어, 특정 이벤트에 대한 포괄적인 조사가 가능합니다. 탐색 과정은 직관적이고 사용자 친화적입니다.
사용자별 로그에 접근하려면 다음 단계를 따르세요:
@@ -57,6 +57,6 @@ Logto의 로그는 포괄적인 세부 정보를 제공하여 조치의 용이
-OSS 사용자는 정기적으로 오래된 감사 로그를 정리하는 크론잡을 추가해야 합니다.
+OSS 사용자는 cronjob을 추가하여 오래된 감사 로그를 정기적으로 정리해야 합니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
new file mode 100644
index 00000000000..4f44d9ec26a
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
@@ -0,0 +1,81 @@
+---
+sidebar_position: 3
+---
+
+# 커스텀 ID 토큰
+
+## 소개 \{#introduction}
+
+[ID 토큰](https://auth.wiki/id-token)은 [OpenID Connect (OIDC)](https://auth.wiki/openid-connect) 프로토콜에 의해 정의된 특별한 유형의 토큰입니다. 이는 인가 서버 (Logto)가 사용자가 성공적으로 인증된 후 발급하는 아이덴티티 주장으로, 인증된 사용자의 아이덴티티에 대한 클레임 (Claims)을 담고 있습니다.
+
+[액세스 토큰](/developers/custom-token-claims)이 보호된 리소스에 접근하는 데 사용되는 것과 달리, ID 토큰은 인증된 사용자 아이덴티티를 클라이언트 애플리케이션에 전달하도록 특별히 설계되었습니다. 이들은 인증 이벤트와 인증된 사용자에 대한 클레임 (Claims)을 포함하는 [JSON Web Token (JWT)](https://auth.wiki/jwt)입니다.
+
+## ID 토큰 클레임 (Claims)의 동작 방식 \{#how-id-token-claims-work}
+
+Logto에서 ID 토큰의 클레임 (Claims)은 두 가지 범주로 나뉩니다:
+
+1. **표준 OIDC 클레임 (Claims)**: OIDC 명세에 의해 정의되며, 인증 시 요청된 스코프 (Scope)에 의해 전적으로 결정됩니다.
+2. **확장 클레임 (Claims)**: Logto가 추가 아이덴티티 정보를 전달하기 위해 확장한 클레임 (Claims)으로, **이중 조건 모델**(스코프 + 토글)에 의해 제어됩니다.
+
+```mermaid
+flowchart TD
+ A[사용자 인증 요청] --> B{요청된 스코프}
+ B --> C[표준 OIDC 스코프]
+ B --> D[확장 스코프]
+ C --> E[ID 토큰에 포함된 표준 클레임]
+ D --> F{콘솔 토글이 활성화됨?}
+ F -->|예| G[ID 토큰에 포함된 확장 클레임]
+ F -->|아니오| H[클레임 미포함]
+```
+
+## 표준 OIDC 클레임 (Claims) \{#standard-oidc-claims}
+
+표준 클레임 (Claims)은 OIDC 명세에 의해 완전히 관리됩니다. 이들의 ID 토큰 포함 여부는 인증 시 애플리케이션이 요청하는 스코프 (Scope)에만 의존합니다. Logto는 개별 표준 클레임 (Claims)을 비활성화하거나 선택적으로 제외하는 옵션을 제공하지 않습니다.
+
+다음 표는 표준 스코프와 해당 클레임 (Claims) 간의 매핑을 보여줍니다:
+
+| Scope | Claims |
+| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `openid` | `sub` |
+| `profile` | `name`, `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `picture`, `website`, `gender`, `birthdate`, `zoneinfo`, `locale`, `updated_at` |
+| `email` | `email`, `email_verified` |
+| `phone` | `phone_number`, `phone_number_verified` |
+| `address` | `address` |
+
+예를 들어, 애플리케이션이 `openid profile email` 스코프를 요청하면, ID 토큰에는 `openid`, `profile`, `email` 스코프의 모든 클레임 (Claims)이 포함됩니다.
+
+## 확장 클레임 (Claims) \{#extended-claims}
+
+표준 OIDC 클레임 (Claims) 외에도, Logto는 Logto 생태계에 특화된 추가 아이덴티티 정보를 담는 확장 클레임 (Claims)을 제공합니다. 이러한 확장 클레임 (Claims)은 ID 토큰에 포함되기 위해 **이중 조건 모델**을 따릅니다:
+
+1. **스코프 조건**: 인증 시 애플리케이션이 해당 스코프를 요청해야 합니다.
+2. **콘솔 토글**: 관리자가 Logto 콘솔에서 해당 클레임 (Claims)의 ID 토큰 포함을 활성화해야 합니다.
+
+두 조건이 모두 동시에 충족되어야 합니다. 스코프는 프로토콜 계층의 접근 선언 역할을 하며, 토글은 제품 계층의 노출 제어 역할을 합니다 — 각자의 책임이 명확하고 대체 불가능합니다.
+
+### 사용 가능한 확장 스코프 및 클레임 (Claims) \{#available-extended-scopes-and-claims}
+
+| Scope | Claims | 설명 | 기본 포함 여부 |
+| ------------------------------------ | ------------------------------ | -------------------------------------- | -------------- |
+| `custom_data` | `custom_data` | 사용자 객체에 저장된 커스텀 데이터 | |
+| `identities` | `identities`, `sso_identities` | 사용자의 연결된 소셜 및 SSO 아이덴티티 | |
+| `roles` | `roles` | 사용자의 할당된 역할 | ✅ |
+| `urn:logto:scope:organizations` | `organizations` | 사용자의 조직 ID | ✅ |
+| `urn:logto:scope:organizations` | `organization_data` | 사용자의 조직 데이터 | |
+| `urn:logto:scope:organization_roles` | `organization_roles` | 사용자의 조직 역할 할당 | ✅ |
+
+### Logto 콘솔에서 설정하기 \{#configure-in-logto-console}
+
+ID 토큰에 확장 클레임 (Claims)을 포함하려면:
+
+1. 콘솔 > 커스텀 JWT로 이동하세요.
+2. ID 토큰에 포함하고자 하는 클레임 (Claims)을 토글로 활성화하세요.
+3. 애플리케이션이 인증 시 해당 스코프를 요청하는지 확인하세요.
+
+## 관련 리소스 \{#related-resources}
+
+커스텀 액세스 토큰
+
+
+ OpenID Connect Core - ID 토큰
+
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
index 122ab0779ce..fae2b2d6691 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
@@ -2,26 +2,26 @@
sidebar_position: 2
---
-# 커스텀 토큰 클레임 (Custom token claims)
+# 커스텀 액세스 토큰 (Access token)
-Logto는 액세스 토큰 (액세스 토큰 (Access token), JWT / 불투명 토큰 (Opaque token)) 내에 커스텀 클레임을 추가할 수 있는 유연성을 제공합니다. 이 기능을 통해 비즈니스 로직에 필요한 추가 정보를 토큰에 안전하게 포함시킬 수 있으며, 불투명 토큰의 경우 introspection을 통해 조회할 수 있습니다.
+Logto는 액세스 토큰 (액세스 토큰 (Access token), JWT / 불투명 토큰 (Opaque token)) 내에 커스텀 클레임 (Claim)을 추가할 수 있는 유연성을 제공합니다. 이 기능을 통해 비즈니스 로직에 필요한 추가 정보를 토큰에 안전하게 포함시킬 수 있으며, 불투명 토큰 (Opaque token)의 경우 introspection을 통해 해당 정보를 조회할 수 있습니다.
## 소개 \{#introduction}
-[액세스 토큰 (Access tokens)](https://auth.wiki/access-token)은 인증 (Authentication) 및 인가 (Authorization) 과정에서 중요한 역할을 하며, 주체의 아이덴티티 정보와 권한을 담아 [Logto 서버](/concepts/core-service) (인증 서버 또는 아이덴티티 제공자 (IdP) 역할), 웹 서비스 서버 (리소스 제공자), 클라이언트 애플리케이션 (클라이언트) 간에 전달됩니다.
+[액세스 토큰 (Access token)](https://auth.wiki/access-token)은 인증 (Authentication) 및 인가 (Authorization) 과정에서 중요한 역할을 하며, 주체의 아이덴티티 정보와 권한을 담아 [Logto 서버](/concepts/core-service) (인증 서버 또는 아이덴티티 제공자 (IdP) 역할), 웹 서비스 서버 (리소스 제공자), 클라이언트 애플리케이션 (클라이언트) 간에 전달됩니다.
-[토큰 클레임 (Token claims)](https://auth.wiki/claim)은 엔티티 또는 토큰 자체에 대한 정보를 제공하는 키-값 쌍입니다. 클레임에는 사용자 정보, 토큰 만료 시간, 권한, 그리고 인증 (Authentication) 및 인가 (Authorization) 과정과 관련된 기타 메타데이터가 포함될 수 있습니다.
+[토큰 클레임 (Claim)](https://auth.wiki/claim)은 엔티티 또는 토큰 자체에 대한 정보를 제공하는 키-값 쌍입니다. 클레임에는 사용자 정보, 토큰 만료 시간, 권한, 그리고 인증 (Authentication) 및 인가 (Authorization) 과정과 관련된 기타 메타데이터가 포함될 수 있습니다.
-Logto에는 두 가지 유형의 액세스 토큰이 있습니다:
+Logto에는 두 가지 유형의 액세스 토큰 (Access token)이 있습니다:
-- **JSON Web Token:** [JSON Web Token (JWT)](https://auth.wiki/jwt)은 클레임을 안전하면서도 클라이언트가 읽을 수 있는 방식으로 인코딩하는 인기 있는 포맷입니다. `sub`, `iss`, `aud` 등과 같은 일반적인 클레임은 OAuth 2.0 프로토콜에 따라 사용됩니다 ([자세한 내용은 이 링크](https://datatracker.ietf.org/doc/html/rfc7519#section-4) 참조). JWT는 소비자가 추가 검증 없이 클레임에 직접 접근할 수 있도록 합니다. Logto에서는 특정 리소스 또는 조직에 대한 인가 요청을 클라이언트가 시작할 때 기본적으로 JWT 포맷의 액세스 토큰이 발급됩니다.
-- **불투명 토큰 (Opaque token):** [불투명 토큰 (Opaque token)](http://localhost:3000/concepts/opaque-token)은 자체적으로 정보를 담고 있지 않으며, 항상 [토큰 인트로스펙션 (token introspection)](https://auth.wiki/token-introspection) 엔드포인트를 통한 추가 검증이 필요합니다. 불투명한 포맷임에도 불구하고, 불투명 토큰은 클레임을 안전하게 전달하고, 당사자 간에 안전하게 전송될 수 있습니다. 토큰 클레임은 Logto 서버에 안전하게 저장되며, 클라이언트 애플리케이션은 토큰 인트로스펙션 엔드포인트를 통해 접근할 수 있습니다. 인가 요청에 특정 리소스나 조직이 포함되지 않은 경우, 액세스 토큰은 불투명 포맷으로 발급됩니다. 이 토큰들은 주로 OIDC `userinfo` 엔드포인트 접근 및 기타 일반적인 용도로 사용됩니다.
+- **JSON Web Token:** [JSON Web Token (JWT)](https://auth.wiki/jwt)은 클레임을 안전하면서도 클라이언트가 읽을 수 있는 방식으로 인코딩하는 인기 있는 포맷입니다. `sub`, `iss`, `aud` 등과 같은 일반적인 클레임은 OAuth 2.0 프로토콜에 따라 사용됩니다 ([자세한 내용은 이 링크](https://datatracker.ietf.org/doc/html/rfc7519#section-4) 참조). JWT는 소비자가 추가 검증 없이 클레임에 직접 접근할 수 있도록 합니다. Logto에서는 특정 리소스 또는 조직에 대한 인가 요청을 클라이언트가 시작할 때 기본적으로 JWT 포맷의 액세스 토큰 (Access token)이 발급됩니다.
+- **불투명 토큰 (Opaque token):** [불투명 토큰 (Opaque token)](http://localhost:3000/concepts/opaque-token)은 자체적으로 정보를 담고 있지 않으며, 항상 [토큰 인트로스펙션 (token introspection)](https://auth.wiki/token-introspection) 엔드포인트를 통한 추가 검증이 필요합니다. 불투명한 포맷임에도 불구하고, 불투명 토큰 (Opaque token)은 클레임을 안전하게 전달하고, 당사자 간에 안전하게 전송될 수 있습니다. 토큰 클레임 (Claim)은 Logto 서버에 안전하게 저장되며, 클라이언트 애플리케이션은 토큰 인트로스펙션 엔드포인트를 통해 접근할 수 있습니다. 인가 요청에 특정 리소스 또는 조직이 포함되지 않은 경우, 액세스 토큰 (Access token)은 불투명 포맷으로 발급됩니다. 이러한 토큰은 주로 OIDC `userinfo` 엔드포인트 및 기타 일반적인 용도로 사용됩니다.
-많은 경우, 표준 클레임만으로는 애플리케이션의 특정 요구를 충족할 수 없습니다. JWT 또는 불투명 토큰을 사용하든 관계없이 마찬가지입니다. 이를 해결하기 위해 Logto는 액세스 토큰 내에 커스텀 클레임을 추가할 수 있는 유연성을 제공합니다. 이 기능을 통해 비즈니스 로직에 필요한 추가 정보를 토큰에 안전하게 포함시킬 수 있으며, 불투명 토큰의 경우 introspection을 통해 조회할 수 있습니다.
+많은 경우, 표준 클레임만으로는 애플리케이션의 특정 요구 사항을 충족하기에 충분하지 않습니다. JWT 또는 불투명 토큰 (Opaque token)을 사용하든 관계없이 마찬가지입니다. 이를 해결하기 위해 Logto는 액세스 토큰 (Access token) 내에 커스텀 클레임 (Claim)을 추가할 수 있는 유연성을 제공합니다. 이 기능을 통해 비즈니스 로직에 필요한 추가 정보를 토큰에 안전하게 포함시킬 수 있으며, 불투명 토큰 (Opaque token)의 경우 introspection을 통해 해당 정보를 조회할 수 있습니다.
-## 커스텀 토큰 클레임은 어떻게 동작하나요? \{#how-do-custom-token-claims-work}
+## 커스텀 토큰 클레임 (Claim)은 어떻게 동작하나요? \{#how-do-custom-token-claims-work}
-Logto는 콜백 함수 `getCustomJwtClaims`를 통해 `액세스 토큰 (Access token)`에 커스텀 클레임을 삽입할 수 있도록 지원합니다. `getCustomJwtClaims` 함수의 구현을 제공하여 커스텀 클레임 객체를 반환할 수 있습니다. 반환 값은 원래 토큰 페이로드와 병합되어 서명되어 최종 액세스 토큰이 생성됩니다.
+Logto는 콜백 함수 `getCustomJwtClaims`를 통해 `액세스 토큰 (Access token)`에 커스텀 클레임 (Claim)을 삽입할 수 있도록 지원합니다. `getCustomJwtClaims` 함수의 구현을 제공하여 커스텀 클레임 객체를 반환할 수 있습니다. 반환 값은 원래 토큰 페이로드와 병합되어 서명된 후 최종 액세스 토큰 (Access token)이 생성됩니다.
```mermaid
sequenceDiagram
@@ -32,10 +32,10 @@ sequenceDiagram
autonumber
U ->> IdP: 인증 요청 (자격 증명 포함)
activate IdP
- IdP-->>IdP: 자격 증명 검증 &
원시 액세스 토큰 페이로드 생성
+ IdP-->>IdP: 자격 증명 검증 및
원시 액세스 토큰 페이로드 생성
rect var(--mermaid-rect-fill)
- note over IdP: 커스텀 토큰 클레임
- IdP->>IdP: 커스텀 토큰 클레임 스크립트 실행 (`getCustomJwtClaims`) &
추가 토큰 클레임 획득
+ note over IdP: 커스텀 토큰 클레임 (Claim)
+ IdP->>IdP: 커스텀 토큰 클레임 스크립트 실행 (`getCustomJwtClaims`) 및
추가 토큰 클레임 획득
end
IdP-->>IdP: 원시 액세스 토큰 페이로드와 추가 토큰 클레임 병합
IdP-->>IdP: 페이로드 서명 및 암호화하여 액세스 토큰 획득
@@ -48,11 +48,12 @@ sequenceDiagram
```
:::warning
-Logto 내장 토큰 클레임은 덮어쓰거나 수정할 수 없습니다. 커스텀 클레임은 추가 클레임으로 토큰에 포함됩니다. 만약 커스텀 클레임이 내장 클레임과 충돌할 경우, 해당 커스텀 클레임은 무시됩니다.
+Logto 내장 토큰 클레임 (Claim)은 덮어쓰거나 수정할 수 없습니다. 커스텀 클레임은 토큰에 추가 클레임으로 추가됩니다. 만약 커스텀 클레임이 내장 클레임과 충돌할 경우, 해당 커스텀 클레임은 무시됩니다.
:::
## 관련 리소스 \{#related-resources}
- Logto로 JWT 액세스 토큰에 커스텀 클레임을 추가하여 인가 (Authorization)를 강화하세요
+ Logto로 JWT 액세스 토큰 (Access token)에 커스텀 클레임 (Claim)을 추가하여 인가 (Authorization)를
+ 강화하세요
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
index a7e53b6ba22..2ae2fb55386 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
@@ -7,34 +7,34 @@ sidebar_position: 2
# 일반적인 사용 사례
-이 섹션에서는 [커스텀 토큰 클레임](/developers/custom-token-claims)이 유용하게 사용될 수 있는 몇 가지 시나리오 예시를 제공하여 참고할 수 있도록 도와드립니다. 이를 통해 접근 관리에 어려움을 겪을 때 커스텀 토큰 클레임이 편의를 제공할 수 있는지 평가할 수 있습니다.
+이 섹션에서는 [커스텀 액세스 토큰 클레임](/developers/custom-token-claims)이 유용하게 사용될 수 있는 몇 가지 시나리오 예시를 제공하여 참고할 수 있도록 합니다. 이를 통해 접근 관리에 어려움을 겪을 때, 커스텀 액세스 토큰 클레임이 편의를 제공할 수 있는지 평가할 수 있습니다.
-## 속성 기반 접근 제어 (ABAC)를 가능하게 하기 \{#make-attribute-based-access-control-abac-possible}
+## 속성 기반 접근 제어 (ABAC) 가능하게 만들기 \{#make-attribute-based-access-control-abac-possible}
-[속성 기반 접근 제어 (ABAC)](https://auth.wiki/abac)는 속성(예: 사용자 역할, 리소스 속성, 환경 조건 등)을 사용하여 접근 제어 결정을 내리는 접근 제어 모델입니다. 이는 보호된 리소스에 대한 접근을 유연하고 동적으로 관리할 수 있는 방법입니다.
+[속성 기반 접근 제어 (ABAC)](https://auth.wiki/abac)는 사용자 역할, 리소스 속성, 환경 조건 등 속성을 활용하여 접근 제어 결정을 내리는 접근 제어 모델입니다. 보호된 리소스에 대한 접근을 유연하고 동적으로 관리할 수 있는 방법입니다.
-예를 들어, 앱을 개발 중이고 앱 출시가 공개 베타와 공식 출시의 두 단계로 나뉘어 있다고 가정해봅시다. 공식 출시 후에도 공개 베타에 참여했던 기존 사용자들이 유료 기능을 계속 사용할 수 있도록 하고 싶습니다.
+예를 들어, 앱을 개발 중이고 앱 출시가 공개 베타와 공식 출시 두 단계로 나뉘어 있다고 가정해봅시다. 공식 출시 이후에도, 공개 베타에 참여했던 기존 사용자들이 유료 기능을 계속 사용할 수 있도록 하고 싶습니다.
앱이 공식적으로 출시된 후에는 Logto의 [역할 기반 접근 제어 (RBAC)](/authorization/role-based-access-control) 기능을 사용하여 유료 기능 사용에 대한 접근 제어를 구현합니다. 사용자가 공개 베타 단계에서 이미 앱을 사용하고 있었는지 쉽게 확인하기 위해, `getCustomJwtClaims()` 메서드를 사용하여 토큰 페이로드에 `createdAt` 클레임을 추가할 수 있습니다.
-그런 다음, 보호된 API에서 접근 제어를 할 때 다음 조건 중 하나를 충족하는 액세스 토큰을 허용해야 합니다:
+그런 다음, 보호된 API에서 접근 제어를 할 때 다음 조건 중 하나를 만족하는 액세스 토큰을 허용해야 합니다:
1. RBAC 컨텍스트에서 유료 리소스에 접근할 수 있는 스코프를 가지고 있음.
2. `createdAt`이 공개 베타 종료 시점보다 이전임.
커스텀 토큰 클레임 기능이 없다면, [인가 (Authorization)](/authorization) 권한을 검증할 때 Logto Management API를 호출하여 현재 액세스 토큰을 가진 사용자가 특정 API 리소스에 필요한 역할에 해당하는 권한을 가지고 있는지 확인해야 합니다.
-비슷한 시나리오로, 사용자의 생일이 다가오면 로그인 페이지에 생일 축하 메시지를 표시하고 싶다고 가정해봅시다. 커스텀 토큰 클레임을 사용하여 [토큰 페이로드](/user-management/personal-access-token#example-token-exchange)에 생일 필드를 추가하면, 특정 메시지를 표시할지 여부를 판단하는 데 사용할 수 있습니다.
+비슷한 시나리오로, 사용자의 생일이 다가오면 로그인 페이지에 생일 축하 메시지를 표시하고 싶다고 가정해봅시다. 커스텀 토큰 클레임을 사용하여 [토큰 페이로드](/user-management/personal-access-token#example-token-exchange)에 생일 필드를 추가하고, 이를 통해 특정 메시지 표시 여부를 판단할 수 있습니다.
-## 토큰 발급을 수동으로 차단하기 \{#manually-block-token-issuance}
+## 토큰 발급 수동 차단 \{#manually-block-token-issuance}
Joe가 온라인 게임을 운영하며 Logto를 [아이덴티티 및 접근 관리 (IAM)](https://auth.wiki/iam) 시스템으로 사용한다고 가정해봅시다.
-이 게임은 게임 시간을 구매하기 위해 충전이 필요하다고 가정합니다. Joe는 각 사용자의 잔액을 자신의 게임 서비스에 기록하고, 게임 시간이 누적될수록 잔액을 지속적으로 차감합니다. Joe는 계정 잔액이 소진되면 플레이어가 강제로 로그아웃되어 재충전을 유도하고 싶어합니다.
+이 게임은 게임 시간을 구매하기 위해 충전이 필요합니다. Joe는 각 사용자의 잔액을 게임 서비스에 기록하고, 게임 시간이 누적될수록 잔액을 계속 차감합니다. Joe는 계정 잔액이 소진되면 플레이어가 강제로 로그아웃되어 재충전을 유도하고 싶어합니다.
-이때 Joe는 Logto에서 제공하는 커스텀 토큰 클레임 기능을 활용할 수 있습니다:
+이때, Joe는 Logto에서 제공하는 커스텀 토큰 클레임 기능을 다음과 같이 활용할 수 있습니다:
-1. 스크립트에서 외부 API 호출 [외부 데이터 가져오기](/developers/custom-token-claims/create-script/#step-3-fetch-external-data)를 통해 Joe의 게임 서버에서 현재 플레이어의 잔액을 조회할 수 있습니다.
+1. 스크립트에서 외부 API 호출 [외부 데이터 가져오기](/developers/custom-token-claims/create-script/#step-3-fetch-external-data)를 통해 Joe의 게임 서버에서 현재 플레이어의 잔액을 조회합니다.
2. 잔액이 0 이하인 경우, [`api.denyAccess()`](/developers/custom-token-claims/create-script/#api) 메서드를 사용하여 토큰 발급을 차단할 수 있습니다.
-이렇게 하면 새로운 유효한 액세스 토큰을 얻을 수 없으므로, 플레이어는 게임에서 강제로 로그아웃됩니다.
+이렇게 하면, 새로운 유효한 액세스 토큰을 발급받을 수 없으므로 플레이어는 게임에서 강제로 로그아웃됩니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
index 98b8c05f997..122ced0a822 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
@@ -1,26 +1,26 @@
---
id: create-script
-title: 커스텀 토큰 클레임 스크립트 생성하기
-sidebar_label: 커스텀 토큰 클레임 스크립트 생성하기
+title: 커스텀 액세스 토큰 스크립트 생성
+sidebar_label: 커스텀 액세스 토큰 스크립트 생성
sidebar_position: 3
---
-# 커스텀 토큰 클레임 스크립트 생성하기
+# 커스텀 액세스 토큰(Access token) 스크립트 생성
-[액세스 토큰 (Access token)](https://auth.wiki/access-token)에 [커스텀 클레임 (Claim)](/developers/custom-token-claims)을 추가하려면, 해당 클레임을 포함하는 객체를 반환하는 스크립트를 제공해야 합니다. 이 스크립트는 커스텀 클레임이 포함된 객체를 반환하는 `JavaScript` 함수로 작성되어야 합니다.
+[액세스 토큰(Access token)](https://auth.wiki/access-token)에 [커스텀 클레임(Claim)](/developers/custom-token-claims)을 추가하려면, 해당 클레임(Claim)을 포함하는 객체를 반환하는 스크립트를 제공해야 합니다. 이 스크립트는 커스텀 클레임(Claim)이 포함된 객체를 반환하는 `JavaScript` 함수로 작성해야 합니다.
1. 콘솔 > 커스텀 JWT로 이동하세요.
-2. 액세스 토큰에는 두 가지 유형이 있으며, 각각의 액세스 토큰 클레임을 커스터마이즈할 수 있습니다:
+2. 액세스 토큰(Access token) 클레임(Claim)을 커스터마이즈할 수 있는 두 가지 유형의 액세스 토큰(Access token)이 있습니다:
- - **사용자 액세스 토큰**: 최종 사용자에게 발급되는 액세스 토큰입니다. 예: 웹 애플리케이션 또는 모바일 애플리케이션용.
- - **기계 간 (Machine-to-Machine) 액세스 토큰**: 서비스 또는 애플리케이션에 발급되는 액세스 토큰입니다. 예: [기계 간 애플리케이션](/quick-starts/m2m)용.
+ - **사용자 액세스 토큰(Access token)**: 최종 사용자에게 발급되는 액세스 토큰(Access token). 예: 웹 애플리케이션 또는 모바일 애플리케이션용.
+ - **기계 간(M2M) 액세스 토큰(Access token)**: 서비스 또는 애플리케이션에 발급되는 액세스 토큰(Access token). 예: [기계 간 애플리케이션](/quick-starts/m2m)용.
- 액세스 토큰의 유형에 따라 토큰 페이로드 컨텍스트가 다를 수 있습니다. 각 액세스 토큰 유형별로 토큰 클레임을 개별적으로 커스터마이즈할 수 있습니다.
+ 액세스 토큰(Access token)의 유형에 따라 토큰 페이로드 컨텍스트가 다를 수 있습니다. 각 액세스 토큰(Access token) 유형별로 토큰 클레임(Claim)을 개별적으로 커스터마이즈할 수 있습니다.
- 커스터마이즈할 액세스 토큰 유형을 선택한 후, **Add custom claims** 버튼을 클릭하여 새 스크립트를 생성하세요.
+ 커스터마이즈할 액세스 토큰(Access token) 유형을 선택한 후, **커스텀 클레임(Claim) 추가** 버튼을 클릭하여 새 스크립트를 생성하세요.
:::note
-커스텀 토큰 클레임 기능은 다음 사용자에게만 제공됩니다:
+커스텀 토큰 클레임(Claim) 기능은 다음 사용자에게만 제공됩니다:
- [Logto OSS](/logto-oss) 사용자
- [개발 환경이 있는 Logto Cloud 테넌트](/logto-cloud/tenant-settings#development)
@@ -29,13 +29,13 @@ sidebar_position: 3
## `getCustomJwtClaims()` 함수 구현하기 \{#implement-getcustomjwtclaims-function}
-**커스텀 JWT** 상세 페이지에서 커스텀 토큰 클레임 스크립트를 작성할 수 있는 스크립트 에디터를 찾을 수 있습니다. 이 스크립트는 커스텀 클레임 객체를 반환하는 `JavaScript` 함수여야 합니다.
+**커스텀 JWT** 상세 페이지에서 커스텀 토큰 클레임(Claim) 스크립트를 작성할 수 있는 스크립트 에디터를 찾을 수 있습니다. 이 스크립트는 커스텀 클레임(Claim) 객체를 반환하는 `JavaScript` 함수여야 합니다.
-
+
-## 1단계: 스크립트 편집하기 \{#step-1-edit-the-script}
+## 1단계: 스크립트 수정 \{#step-1-edit-the-script}
-좌측의 코드 에디터를 사용하여 스크립트를 수정하세요. 기본적으로 빈 객체를 반환하는 `getCustomJwtClaims` 함수가 제공됩니다. 이 함수를 수정하여 원하는 커스텀 클레임 객체를 반환할 수 있습니다.
+좌측의 코드 에디터를 사용하여 스크립트를 수정하세요. 기본적으로 빈 객체를 반환하는 `getCustomJwtClaims` 함수가 제공됩니다. 이 함수를 수정하여 원하는 커스텀 클레임(Claim) 객체를 반환할 수 있습니다.
```jsx
const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
@@ -43,10 +43,10 @@ const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
};
```
-이 에디터는 JavaScript 언어 서버를 사용하여 기본적인 구문 강조, 코드 완성, 오류 검사를 제공합니다. 입력 파라미터는 잘 타입 지정되어 있으며 jsDoc 스타일로 문서화되어 있습니다. 에디터의 IntelliSense를 활용하여 입력 객체의 속성에 올바르게 접근할 수 있습니다. 상세한 파라미터 정의는 페이지 우측에서 확인할 수 있습니다.
+이 에디터는 JavaScript 언어 서버를 사용하여 기본적인 문법 하이라이트, 코드 자동완성, 오류 검사를 제공합니다. 입력 파라미터는 잘 타입이 지정되어 있으며 jsDoc 스타일로 문서화되어 있습니다. 에디터의 IntelliSense를 활용하여 입력 객체의 속성에 올바르게 접근할 수 있습니다. 자세한 파라미터 정의는 페이지 우측에서 확인할 수 있습니다.
:::note
-이 함수는 모듈로 export됩니다. 함수 이름을 반드시 `getCustomJwtClaims`로 유지해야 모듈이 올바르게 함수를 export할 수 있습니다.
+이 함수는 모듈로 export됩니다. 함수명이 `getCustomJwtClaims`로 유지되어야 모듈이 올바르게 함수를 export할 수 있습니다.
:::
## 2단계: 입력 파라미터 \{#step-2-input-parameters}
@@ -55,49 +55,49 @@ const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
### token \{#token}
-토큰 페이로드 객체입니다. 이 객체에는 원본 토큰 클레임과 스크립트에서 접근할 수 있는 메타데이터가 포함되어 있습니다.
+토큰 페이로드 객체입니다. 이 객체에는 원본 토큰 클레임(Claim)과 스크립트에서 접근할 수 있는 메타데이터가 포함되어 있습니다.
-토큰 페이로드 객체와 사용자 데이터 객체의 상세 타입 정의는 페이지 우측에서 확인할 수 있습니다. 에디터의 IntelliSense를 통해 입력 객체의 속성에 올바르게 접근할 수 있습니다.
+토큰 페이로드 객체와 사용자 데이터 객체의 자세한 타입 정의는 페이지 우측에서 확인할 수 있습니다. 에디터의 IntelliSense를 통해 입력 객체의 속성에 올바르게 접근할 수 있습니다.
-- 사용자 액세스 토큰 데이터 객체
+- 사용자 액세스 토큰(Access token) 데이터 객체
| Property | Description | Type |
| -------------------- | ------------------------------------------------ | ------------- |
| `jti` | 고유 JWT id | `string` |
- | `aud` | 토큰의 대상 (Audience) | `string` |
- | `scope` | 토큰의 스코프 (Scope) | `string` |
+ | `aud` | 토큰의 대상(Audience) | `string` |
+ | `scope` | 토큰의 스코프(Scope) | `string` |
| `clientId` | 토큰의 클라이언트 id | `string` |
| `accountId` | 토큰의 사용자 id | `string` |
| `expiresWithSession` | 토큰이 세션과 함께 만료되는지 여부 | `boolean` |
- | `grantId` | 토큰의 현재 인증 (Authentication) grant id | `string` |
- | `gty` | 토큰의 grant type | `string` |
+ | `grantId` | 토큰의 현재 인증(인증(Authentication)) grant id | `string` |
+ | `gty` | 토큰의 grant 타입 | `string` |
| `kind` | 토큰 종류 | `AccessToken` |
-- 기계 간 액세스 토큰 데이터 객체
+- 기계 간 액세스 토큰(Access token) 데이터 객체
| Property | Description | Type |
| ---------- | -------------------------- | ------------------- |
| `jti` | 고유 JWT id | `string` |
- | `aud` | 토큰의 대상 (Audience) | `string` |
- | `scope` | 토큰의 스코프 (Scope) | `string` |
+ | `aud` | 토큰의 대상(Audience) | `string` |
+ | `scope` | 토큰의 스코프(Scope) | `string` |
| `clientId` | 토큰의 클라이언트 id | `string` |
| `kind` | 토큰 종류 | `ClientCredentials` |
-### context (사용자 액세스 토큰에서만 사용 가능) \{#context-only-available-for-user-access-token}
+### context (사용자 액세스 토큰(Access token)에서만 사용 가능) \{#context-only-available-for-user-access-token}
-context 객체에는 현재 인가 (Authorization) 과정과 관련된 사용자 데이터 및 grant 데이터가 포함되어 있습니다.
+context 객체에는 현재 인가(Authorization) 과정과 관련된 사용자 데이터 및 grant 데이터가 포함되어 있습니다.
- **사용자 데이터 객체**
- 사용자 액세스 토큰의 경우, Logto는 커스텀 클레임 설정에 필요한 모든 사용자 프로필 데이터와 조직 멤버십 데이터를 포함한 추가 사용자 데이터 컨텍스트를 제공합니다. 자세한 내용은 [사용자](/user-management/user-data) 및 [조직](/organizations/organization-management#organization-data-structure)을 확인하세요.
+ 사용자 액세스 토큰(Access token)의 경우, Logto는 추가적인 사용자 데이터 컨텍스트를 제공합니다. 사용자 데이터 객체에는 커스텀 클레임(Claim) 설정에 필요한 모든 사용자 프로필 데이터와 조직(Organization) 멤버십 데이터가 포함되어 있습니다. 자세한 내용은 [사용자](/user-management/user-data) 및 [조직](/organizations/organization-management#organization-data-structure)을 참고하세요.
- **Grant 데이터 객체**
- impersonation 토큰 교환으로 부여된 사용자 액세스 토큰의 경우, Logto는 추가 grant 데이터 컨텍스트를 제공합니다. grant 데이터 객체에는 subject 토큰의 커스텀 컨텍스트가 포함되어 있습니다. 자세한 내용은 [사용자 가장 (User impersonation)](/developers/user-impersonation)을 확인하세요.
+ 임퍼서네이션 토큰 교환으로 부여된 사용자 액세스 토큰(Access token)의 경우, Logto는 추가적인 grant 데이터 컨텍스트를 제공합니다. grant 데이터 객체에는 subject 토큰에서 전달된 커스텀 컨텍스트가 포함되어 있습니다. 자세한 내용은 [사용자 가장(User impersonation)](/developers/user-impersonation)을 참고하세요.
- **사용자 상호작용 데이터 객체**
- 특정 사용자 액세스 토큰의 경우, 현재 인가 세션에 대한 사용자의 상호작용 세부 정보를 접근해야 할 때가 있습니다. 예를 들어, 사용자가 로그인에 사용한 엔터프라이즈 SSO 아이덴티티를 조회해야 할 수 있습니다. 이 사용자 상호작용 데이터 객체에는 최근 사용자가 제출한 상호작용 데이터가 포함되어 있습니다. 예시:
+ 특정 사용자 액세스 토큰(Access token)의 경우, 현재 인가(Authorization) 세션에서 사용자의 상호작용 세부 정보를 접근해야 할 때가 있습니다. 예를 들어, 사용자가 로그인에 사용한 엔터프라이즈 SSO 아이덴티티를 조회해야 할 수 있습니다. 이 사용자 상호작용 데이터 객체에는 최근 사용자가 제출한 상호작용 데이터가 포함되어 있습니다. 주요 속성은 다음과 같습니다:
- | Property | Description | Type |
- | --------------------- | ----------------------------------------------------------------------------- | ------------------------ |
- | `interactionEvent` | 현재 사용자 상호작용의 이벤트 | `SignIn` 또는 `Register` |
- | `userId` | 현재 사용자 상호작용의 사용자 id | `string` |
- | `verificationRecords` | 상호작용 중 사용자가 아이덴티티를 식별 및 검증하기 위해 제출한 검증 기록 목록 | `VerificationRecord[]` |
+ | Property | Description | Type |
+ | --------------------- | ------------------------------------------------------------------------- | ------------------------ |
+ | `interactionEvent` | 현재 사용자 상호작용 이벤트 | `SignIn` 또는 `Register` |
+ | `userId` | 현재 사용자 상호작용의 사용자 id | `string` |
+ | `verificationRecords` | 상호작용 중 사용자가 본인 확인을 위해 제출한 검증(Verification) 기록 목록 | `VerificationRecord[]` |
- 검증 기록 타입 예시:
+ 검증(Verification) 기록 타입 예시:
```ts
// VerificationType.Password
@@ -222,28 +222,28 @@ context 객체에는 현재 인가 (Authorization) 과정과 관련된 사용자
```
:::note
- 사용자 상호작용 데이터 객체에는 여러 개의 검증 기록이 존재할 수 있습니다. 특히 사용자가 여러 번 로그인 또는 회원가입 과정을 거친 경우에 그렇습니다.
+ 사용자 상호작용 데이터 객체에는 여러 개의 검증(Verification) 기록이 존재할 수 있습니다. 특히 사용자가 여러 번 로그인 또는 회원가입 과정을 거친 경우에 해당합니다.
- 예: 사용자가 `Social` 검증 기록으로 로그인한 후, `EmailVerificationCode` 검증 기록을 통해 새 이메일 주소를 바인딩하고, `Totp` 검증 기록으로 MFA 상태를 검증한 경우. 이 경우, 스크립트에서 모든 검증 기록을 적절히 처리해야 할 수 있습니다.
+ 예를 들어, 사용자가 `Social` 검증(Verification) 기록으로 로그인한 후, `EmailVerificationCode` 검증(Verification) 기록을 통해 새 이메일을 바인딩하고, 이어서 `Totp` 검증(Verification) 기록으로 MFA 상태를 검증한 경우가 있습니다. 이 경우, 스크립트에서 모든 검증(Verification) 기록을 적절히 처리해야 합니다.
- 각 검증 기록 타입은 사용자 상호작용 데이터 객체에 한 번만 존재합니다.
+ 각 검증(Verification) 기록 타입은 사용자 상호작용 데이터 객체에 한 번만 존재합니다.
:::
### environmentVariables \{#environmentvariables}
-우측의 **환경 변수 설정 (Set environment variables)** 섹션을 사용하여 스크립트에 사용할 환경 변수를 설정하세요. 이 변수들은 스크립트 내에 하드코딩하고 싶지 않은 민감 정보나 설정 데이터를 저장하는 데 사용할 수 있습니다. 예: API 키, 시크릿, URL 등.
+우측의 **환경 변수 설정** 섹션을 사용하여 스크립트에 사용할 환경 변수를 설정하세요. 이 변수들은 스크립트 내에서 하드코딩하지 않고 민감 정보나 설정 데이터를 저장하는 데 사용할 수 있습니다. 예: API 키, 시크릿, URL 등.
여기서 설정한 모든 환경 변수는 스크립트 내에서 사용할 수 있습니다. 입력 파라미터의 `environmentVariables` 객체를 통해 접근하세요.
### api \{#api}
-`api` 객체는 토큰 발급 과정에서 추가 접근 제어를 위해 사용할 수 있는 유틸리티 함수 집합을 제공합니다. `api` 객체에는 다음과 같은 함수가 포함되어 있습니다:
+`api` 객체는 토큰 발급 과정에서 추가적인 접근 제어를 위해 사용할 수 있는 유틸리티 함수 집합을 제공합니다. `api` 객체에는 다음과 같은 함수가 포함되어 있습니다:
```jsx
api.denyAccess(message?: string): void
```
-`api.denyAccess()` 함수는 커스텀 메시지와 함께 토큰 발급 과정을 거부할 수 있게 해줍니다. 이 함수를 사용하여 토큰 발급 과정에서 추가 접근 검증을 강제할 수 있습니다.
+`api.denyAccess()` 함수는 커스텀 메시지와 함께 토큰 발급 과정을 거부할 수 있습니다. 이 함수를 사용하여 토큰 발급 과정에서 추가적인 접근 검증을 강제할 수 있습니다.
## 3단계: 외부 데이터 가져오기 \{#step-3-fetch-external-data}
@@ -266,24 +266,24 @@ const getCustomJwtClaims = async ({ environmentVariables }) => {
```
:::note
-외부 데이터 가져오기는 토큰 발급 과정에 지연을 초래할 수 있으니 주의하세요. 외부 API가 충분히 신뢰할 수 있고 빠른지 반드시 확인하세요.
+외부 데이터를 가져오는 과정은 토큰 발급 과정에 지연을 초래할 수 있습니다. 외부 API가 충분히 신뢰할 수 있고 빠른지 반드시 확인하세요.
추가로:
-- 스크립트 내에서 오류 및 타임아웃을 적절히 처리하여 토큰 발급 과정이 차단되지 않도록 하세요.
-- 적절한 인가 (Authorization) 헤더를 사용하여 외부 API가 무단 접근으로부터 보호되도록 하세요.
+- 토큰 발급 과정이 차단되지 않도록 스크립트 내에서 오류 및 타임아웃을 적절히 처리하세요.
+- 외부 API가 무단 접근으로부터 보호될 수 있도록 적절한 인가(Authorization) 헤더를 사용하세요.
:::
-## 4단계: 스크립트 테스트하기 \{#step-4-test-the-script}
+## 4단계: 스크립트 테스트 \{#step-4-test-the-script}
-스크립트를 저장하기 전에 반드시 테스트하세요. 페이지 우측의 **Test context** 탭을 클릭하여 테스트용 모의 토큰 페이로드와 사용자 데이터 컨텍스트를 수정할 수 있습니다.
+스크립트를 저장하기 전에 반드시 테스트하세요. 페이지 우측의 **테스트 컨텍스트** 탭을 클릭하여 테스트용 모의 토큰 페이로드 및 사용자 데이터 컨텍스트를 수정할 수 있습니다.
-에디터 우측 상단의 **Run test**를 클릭하여 모의 데이터로 스크립트를 실행하세요. 스크립트의 출력 결과는 **Test Result** 드로어에 표시됩니다.
+에디터 우측 상단의 **테스트 실행**을 클릭하여 모의 데이터로 스크립트를 실행하세요. 스크립트의 출력 결과는 **테스트 결과** 드로어에 표시됩니다.
:::note
-테스트 결과는 설정한 모의 데이터로 `getCustomJwtClaims` 함수가 실행된 출력값입니다 ("추가 토큰 클레임"은 [시퀀스 다이어그램](/developers/custom-token-claims/#how-do-custom-token-claims-work) 3단계 완료 후 얻은 값). 실제 토큰 페이로드와 사용자 데이터 컨텍스트는 토큰 발급 과정에서 실행될 때와 다를 수 있습니다.
+테스트 결과는, [시퀀스 다이어그램](/developers/custom-token-claims/#how-do-custom-token-claims-work) 3단계 완료 후 얻은 "추가 토큰 클레임(Claim)"(extra token claims)과 같이, 모의 데이터로 실행한 `getCustomJwtClaims` 함수의 출력입니다. 실제 토큰 페이로드 및 사용자 데이터 컨텍스트는 토큰 발급 과정에서 실행될 때와 다를 수 있습니다.
:::
-**Create** 버튼을 클릭하여 스크립트를 저장하세요. 커스텀 토큰 클레임 스크립트가 저장되어 액세스 토큰 발급 과정에 적용됩니다.
+**생성** 버튼을 클릭하여 스크립트를 저장하세요. 커스텀 토큰 클레임(Claim) 스크립트가 저장되어 액세스 토큰(Access token) 발급 과정에 적용됩니다.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
index 4c282c16094..2552783fa0f 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
@@ -1,36 +1,34 @@
---
id: sdk-conventions
-title: 플랫폼 SDK 규칙
-sidebar_label: 플랫폼 SDK 규칙
-sidebar_position: 7
+title: 플랫폼 SDK 규약
+sidebar_label: 플랫폼 SDK 규약
+sidebar_position: 8
---
-# 플랫폼 SDK 규칙
+# 플랫폼 SDK 규약
Logto는 매우 강력하고 유연한 웹 인증 (Authentication) 서비스를 제공합니다.
-Logto의 서비스를 실제로 사용할 때, 개발자가 사용자 로그인 상태, 권한 등을 관리하기 위해 Logto SDK를 자신의 클라이언트 애플리케이션에 통합하는 것이 편리한 경우가 많습니다.
+실제 Logto 서비스를 사용할 때, 개발자는 사용자 로그인 상태, 권한 등 관리를 위해 Logto SDK를 자신의 클라이언트 애플리케이션에 통합하는 것이 편리합니다.
-Logto가 지원하는 모든 프로그래밍 언어 / 프레임워크에 대한 SDK는 [여기](/quick-starts)에서 찾을 수 있습니다.
+Logto가 지원하는 모든 프로그래밍 언어 / 프레임워크용 SDK는 [여기](/quick-starts)에서 확인할 수 있습니다.
-원하는 SDK를 찾지 못한 경우, 원하는 프로그래밍 언어에 대한 SDK를 구현하기 위해 따를 수 있는 규칙이 있습니다. 이를 통해 Logto 서비스를 더 쉽게 사용할 수 있습니다.
+원하는 SDK가 없다면, 아래의 규약을 참고하여 원하는 프로그래밍 언어용 SDK를 직접 구현할 수 있습니다. 이를 통해 Logto 서비스를 더 쉽게 사용할 수 있습니다.
-이 규칙은 세 가지 주요 부분으로 구성되어 있습니다:
+이 규약은 세 가지 주요 부분으로 구성되어 있습니다:
-디자인 전략
-코어 SDK 규칙
-플랫폼 SDK 규칙
+설계 전략
+코어 SDK 규약
+플랫폼 SDK 규약
## 관련 리소스 \{#related-resources}
- 간단한 클라이언트 측 OIDC SDK 구현
+ 간단한 클라이언트 측 OIDC SDK 구현하기
- Logto를 위한 Node.js 기반 프레임워크 SDK를 몇 분 만에 제작하기
+ 몇 분 만에 Logto용 Node.js 기반 프레임워크 SDK 만들기
-
- Logto를 위한 웹 SDK를 몇 분 만에 제작하기
-
+몇 분 만에 Logto용 웹 SDK 만들기
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
index e3bf6b3ed35..adb3bccfec1 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
@@ -2,14 +2,14 @@
id: signing-keys
title: 서명 키
sidebar_label: 서명 키
-sidebar_position: 4
+sidebar_position: 5
---
# 서명 키
-Logto [OIDC 서명 키](https://auth.wiki/signing-key)는 "OIDC 개인 키" 및 "OIDC 쿠키 키"라고도 하며, Logto [로그인 세션](/end-user-flows/sign-out#sign-in-session)에서 JWT([액세스 토큰](https://auth.wiki/access-token) 및 [ID 토큰](https://auth.wiki/id-token))과 브라우저 쿠키를 서명하는 데 사용되는 서명 키입니다. 이러한 서명 키는 Logto 데이터베이스를 시드할 때([오픈소스](/logto-oss)) 또는 새 테넌트를 생성할 때([Cloud](/logto-cloud)) 생성되며, [CLI](/logto-oss/using-cli) (오픈소스), Management API 또는 Console UI를 통해 관리할 수 있습니다.
+Logto [OIDC 서명 키](https://auth.wiki/signing-key)는 "OIDC 개인 키" 및 "OIDC 쿠키 키"라고도 하며, Logto [로그인 세션](/end-user-flows/sign-out#sign-in-session)에서 JWT([액세스 토큰](https://auth.wiki/access-token) 및 [ID 토큰](https://auth.wiki/id-token))과 브라우저 쿠키를 서명하는 데 사용되는 서명 키입니다. 이 서명 키는 Logto 데이터베이스를 시드할 때([오픈소스](/logto-oss)) 또는 새 테넌트를 생성할 때([Cloud](/logto-cloud)) 생성되며, [CLI](/logto-oss/using-cli) (오픈소스), Management API 또는 Console UI를 통해 관리할 수 있습니다.
-기본적으로 Logto는 타원 곡선(EC) 알고리즘을 사용하여 디지털 서명을 생성합니다. 하지만 사용자가 JWT 서명을 검증해야 하는 경우가 많고, 많은 구버전 도구들이 EC 알고리즘을 지원하지 않고 RSA만 지원하는 점을 고려하여, 개인 키를 교체하고 서명 알고리즘(RSA 및 EC 모두 포함)을 선택할 수 있는 기능을 구현했습니다. 이를 통해 구식 서명 검증 도구를 사용하는 서비스와의 호환성을 보장합니다.
+기본적으로 Logto는 타원 곡선(EC) 알고리즘을 사용하여 디지털 서명을 생성합니다. 하지만 사용자가 JWT 서명을 검증해야 하는 경우가 많고, 많은 구버전 도구들이 EC 알고리즘을 지원하지 않고 RSA만 지원하는 점을 고려하여, 개인 키를 교체(로테이션)하고 서명 알고리즘(RSA 및 EC 모두 포함)을 선택할 수 있는 기능을 구현했습니다. 이를 통해 구식 서명 검증 도구를 사용하는 서비스와의 호환성을 보장합니다.
:::note
이론적으로 서명 키는 유출되어서는 안 되며 만료 시간이 없으므로 교체할 필요가 없습니다. 그러나 일정 기간이 지난 후 주기적으로 서명 키를 교체하면 보안을 강화할 수 있습니다.
@@ -18,9 +18,9 @@ Logto [OIDC 서명 키](https://auth.wiki/signing-key)는 "OIDC 개인 키" 및
## 동작 방식은? \{#how-it-works}
- **OIDC 개인 키**
- Logto 인스턴스를 초기화할 때, 공개 키와 개인 키 쌍이 자동으로 생성되어 기본 OIDC 제공자에 등록됩니다. 따라서 Logto가 새로운 JWT(액세스 토큰 또는 ID 토큰)를 발급할 때, 해당 토큰은 개인 키로 서명됩니다. 동시에, JWT를 받은 클라이언트 애플리케이션은 쌍으로 제공된 공개 키를 사용하여 토큰 서명을 검증할 수 있으므로, 토큰이 제3자에 의해 변조되지 않았음을 보장할 수 있습니다. 개인 키는 Logto 서버에서 안전하게 보호됩니다. 반면, 공개 키는 이름 그대로 모두에게 공개되어 있으며, OIDC 엔드포인트의 `/oidc/jwks` 인터페이스를 통해 접근할 수 있습니다. 개인 키를 생성할 때 서명 키 알고리즘을 지정할 수 있으며, Logto는 기본적으로 EC(타원 곡선) 알고리즘을 사용합니다. 관리자는 개인 키를 교체하여 기본 알고리즘을 RSA(Rivest-Shamir-Adleman)로 변경할 수 있습니다.
+ Logto 인스턴스를 초기화할 때, 공개 키와 개인 키 쌍이 자동으로 생성되어 기본 OIDC 공급자에 등록됩니다. 따라서 Logto가 새로운 JWT(액세스 토큰 또는 ID 토큰)를 발급할 때, 해당 토큰은 개인 키로 서명됩니다. 동시에 JWT를 수신하는 모든 클라이언트 애플리케이션은 쌍으로 제공된 공개 키를 사용하여 토큰 서명을 검증할 수 있으므로, 토큰이 제3자에 의해 변조되지 않았음을 보장할 수 있습니다. 개인 키는 Logto 서버에서 안전하게 보호됩니다. 반면, 공개 키는 이름 그대로 모두에게 공개되어 있으며, OIDC 엔드포인트의 `/oidc/jwks` 인터페이스를 통해 접근할 수 있습니다. 개인 키를 생성할 때 서명 키 알고리즘을 지정할 수 있으며, Logto는 기본적으로 EC(타원 곡선) 알고리즘을 사용합니다. 관리자는 개인 키를 교체(로테이션)하여 기본 알고리즘을 RSA(Rivest-Shamir-Adleman)로 변경할 수 있습니다.
- **OIDC 쿠키 키**
- 사용자가 로그인 또는 회원가입 플로우를 시작하면, 서버에 "OIDC 세션"이 생성되고 브라우저 쿠키 세트도 함께 생성됩니다. 이 쿠키를 통해 브라우저는 Logto Experience API에 요청하여 로그인, 회원가입, 비밀번호 재설정 등 일련의 상호작용을 사용자를 대신해 수행할 수 있습니다. 하지만 JWT와 달리, 쿠키는 Logto OIDC 서비스 자체에서만 서명 및 검증되며, 비대칭 암호화가 필요하지 않습니다. 따라서 쿠키 서명 키에는 쌍으로 된 공개 키가 없으며, 비대칭 암호화 알고리즘도 사용하지 않습니다.
+ 사용자가 로그인 또는 회원가입 플로우를 시작하면, 서버에서 "OIDC 세션"이 생성되고 브라우저 쿠키 세트도 함께 생성됩니다. 이 쿠키를 통해 브라우저는 Logto Experience API에 요청하여 로그인, 회원가입, 비밀번호 재설정 등 일련의 상호작용을 사용자를 대신하여 수행할 수 있습니다. 하지만 JWT와 달리, 쿠키는 Logto OIDC 서비스 자체에서만 서명 및 검증되며, 비대칭 암호화가 필요하지 않습니다. 따라서 쿠키 서명 키에는 쌍으로 된 공개 키가 없으며, 비대칭 암호화 알고리즘도 사용하지 않습니다.
## Console UI에서 서명 키 교체하기 \{#rotate-signing-keys-from-console-ui}
@@ -29,24 +29,24 @@ Logto는 "서명 키 교체" 기능을 도입하여, 테넌트에서 새로운 O
1. Console > 서명 키로 이동하세요. 여기서 OIDC 개인 키와
OIDC 쿠키 키를 모두 관리할 수 있습니다.
2. 서명 키를 교체하려면 "개인 키 교체" 또는 "쿠키 키 교체" 버튼을 클릭하세요. 개인 키를 교체할 때는 서명 알고리즘을 변경할 수도 있습니다.
-3. 사용 중인 모든 서명 키가 나열된 테이블을 확인할 수 있습니다. 참고: 이전 키는 삭제할 수 있지만, 현재 사용 중인 키는 삭제할 수 없습니다.
+3. 사용 중인 모든 서명 키가 나열된 테이블을 확인할 수 있습니다. 참고: 이전 키는 삭제할 수 있지만, 현재 키는 삭제할 수 없습니다.
- | 상태 | 설명 |
- | ---- | ---------------------------------------------------------------------------------------------- |
- | 현재 | 이 키가 현재 애플리케이션 및 API에서 활성 상태로 사용되고 있음을 나타냅니다. |
- | 이전 | 이전에 사용되었으나 교체된 키를 의미합니다. 이 서명 키로 서명된 기존 토큰은 여전히 유효합니다. |
+ | 상태 | 설명 |
+ | ---- | -------------------------------------------------------------------------------------------------------- |
+ | 현재 | 이 키가 현재 애플리케이션 및 API에서 활성 상태로 사용 중임을 나타냅니다. |
+ | 이전 | 이전에 사용되었으나 교체(로테이션)된 키를 의미합니다. 이 서명 키로 서명된 기존 토큰은 여전히 유효합니다. |
-회전(교체)에는 다음 세 가지 작업이 포함됨을 기억하세요:
+교체(로테이션)는 다음 세 가지 작업을 포함한다는 점을 기억하세요:
-1. **새 서명 키 생성**: 모든 **애플리케이션** 및 **API**가 새 서명 키를 사용해야 합니다.
-2. **현재 키 교체**: 기존 키는 교체 후 "이전"으로 지정되며, 새로 생성되는 애플리케이션 및 API에서는 사용되지 않습니다. 하지만 이 키로 서명된 토큰은 여전히 유효합니다.
+1. **새 서명 키 생성**: 이 작업 후 모든 **애플리케이션** 및 **API**가 새 서명 키를 사용해야 합니다.
+2. **현재 키 교체(로테이션)**: 기존 키는 교체 후 "이전"으로 지정되며, 새로 생성되는 애플리케이션 및 API에서는 사용되지 않습니다. 하지만 이 키로 서명된 토큰은 여전히 유효합니다.
3. **이전 키 삭제**: "이전"으로 표시된 키는 폐기되어 테이블에서 제거됩니다.
:::warning
서명 키를 연속적으로(두 번 이상) 교체하지 마세요. 이는 발급된 모든 토큰을 무효화할 수 있습니다.
-- OSS 사용자의 경우, 서명 키를 교체한 후 Logto 인스턴스를 재시작해야 새 서명 키가 적용됩니다.
-- Cloud 사용자의 경우, 서명 키 교체 후 즉시 새 키가 적용되지만, 연속적으로 여러 번 교체하지 않도록 주의하세요.
+- OSS 사용자는 서명 키 교체 후, 새 서명 키가 적용되도록 Logto 인스턴스를 재시작해야 합니다.
+- Cloud 사용자는 서명 키 교체 후 즉시 새 키가 적용되지만, 연속적으로 여러 번 교체하지 않도록 주의하세요.
:::
## 관련 리소스 \{#related-resources}
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
index e36b3e84434..4551f2c6248 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
@@ -1,17 +1,17 @@
---
id: user-impersonation
-title: 사용자 가장 (User impersonation)
-sidebar_label: 사용자 가장 (User impersonation)
-sidebar_position: 3
+title: 사용자 가장
+sidebar_label: 사용자 가장
+sidebar_position: 4
---
import TokenExchangePrerequisites from './fragments/_token-exchange-prerequisites.mdx';
# 사용자 가장 (User impersonation)
-TechCorp의 지원 엔지니어 Sarah가 Alex라는 고객으로부터 중요한 리소스에 접근할 수 없다는 긴급 티켓을 받았다고 상상해 보세요. 문제를 효율적으로 진단하고 해결하기 위해 Sarah는 시스템에서 Alex가 보는 것과 똑같이 볼 필요가 있습니다. 이럴 때 Logto의 사용자 가장 (User impersonation) 기능이 유용하게 사용됩니다.
+TechCorp의 지원 엔지니어 Sarah가 Alex라는 고객으로부터 중요한 리소스에 접근할 수 없다는 긴급 티켓을 받았다고 상상해 보세요. 문제를 효율적으로 진단하고 해결하기 위해 Sarah는 시스템에서 Alex가 보는 것과 똑같이 볼 필요가 있습니다. 이럴 때 Logto의 사용자 가장 기능이 유용하게 사용됩니다.
-사용자 가장 (User impersonation)은 Sarah와 같은 인가 (Authorization)된 사용자가 시스템 내에서 Alex와 같은 다른 사용자를 대신하여 임시로 행동할 수 있도록 해줍니다. 이 강력한 기능은 문제 해결, 고객 지원, 관리 작업 수행에 매우 유용합니다.
+사용자 가장은 Sarah와 같은 인가 (Authorization)된 사용자가 시스템 내에서 Alex와 같은 다른 사용자를 대신하여 임시로 행동할 수 있도록 해줍니다. 이 강력한 기능은 문제 해결, 고객 지원, 관리 작업 수행에 매우 유용합니다.
## 어떻게 동작하나요? \{#how-it-works}
@@ -23,7 +23,7 @@ sequenceDiagram
participant LogtoToken as Logto 토큰 엔드포인트
Sarah->>TechCorp: POST /api/request-impersonation
- Note over Sarah,TechCorp: Alex를 가장 (impersonate) 요청
+ Note over Sarah,TechCorp: Alex를 가장 요청
TechCorp->>Logto: POST /api/subject-tokens
Note over TechCorp,Logto: Alex를 위한 subject 토큰 요청
@@ -38,17 +38,17 @@ sequenceDiagram
Note over Sarah: 이제 Sarah는 Alex로서 리소스에 접근 가능
```
-가장 (impersonation) 과정은 세 가지 주요 단계로 이루어집니다:
+가장(impersonation) 프로세스는 세 가지 주요 단계로 이루어집니다:
-1. Sarah가 TechCorp의 백엔드 서버를 통해 가장 (impersonation)을 요청합니다.
+1. Sarah가 TechCorp의 백엔드 서버를 통해 가장을 요청합니다.
2. TechCorp의 서버가 Logto의 Management API에서 subject 토큰을 발급받습니다.
3. Sarah의 애플리케이션이 이 subject 토큰을 액세스 토큰으로 교환합니다.
-Sarah가 이 기능을 사용하여 Alex를 도울 수 있는 방법을 살펴보겠습니다.
+Sarah가 이 기능을 사용해 Alex를 도울 수 있는 방법을 살펴보겠습니다.
-### 1단계: 가장 (impersonation) 요청하기 \{#step-1-requesting-impersonation}
+### 1단계: 가장 요청하기 \{#step-1-requesting-impersonation}
-먼저, Sarah의 지원 애플리케이션이 TechCorp의 백엔드 서버에 가장 (impersonation)을 요청해야 합니다.
+먼저, Sarah의 지원 애플리케이션이 TechCorp의 백엔드 서버에 가장을 요청해야 합니다.
**요청 (Sarah의 애플리케이션 → TechCorp의 서버)**
@@ -65,7 +65,7 @@ Content-Type: application/json
}
```
-이 API에서는 백엔드가 Sarah가 Alex를 가장할 수 있는 적절한 권한 (Permission)이 있는지 인가 (Authorization) 검사를 수행해야 합니다.
+이 API에서 백엔드는 Sarah가 Alex를 가장할 수 있는 적절한 권한 (Permission)이 있는지 인가 (Authorization) 검사를 수행해야 합니다.
### 2단계: subject 토큰 발급받기 \{#step-2-obtaining-a-subject-token}
@@ -113,11 +113,11 @@ TechCorp의 서버는 이 subject 토큰을 Sarah의 애플리케이션에 반
-이제 Sarah의 애플리케이션은 이 subject 토큰을 Alex를 대표하는 액세스 토큰으로 교환하며, 토큰이 사용될 리소스를 명시합니다.
+이제 Sarah의 애플리케이션은 이 subject 토큰을 Alex를 대표하는 액세스 토큰으로 교환하며, 토큰이 사용될 리소스를 지정합니다.
**요청 (Sarah의 애플리케이션 → Logto 토큰 엔드포인트)**
-전통적인 웹 애플리케이션 또는 app secret이 있는 기계 간 (M2M) 애플리케이션의 경우, `Authorization` 헤더에 자격 증명을 포함하세요:
+전통적인 웹 애플리케이션 또는 앱 시크릿이 있는 기계 간 애플리케이션의 경우, `Authorization` 헤더에 자격 증명을 포함하세요:
```bash
POST /oidc/token HTTP/1.1
@@ -133,7 +133,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&resource=https://api.techcorp.com/customer-data
```
-app secret이 없는 싱글 페이지 애플리케이션 (SPA) 또는 네이티브 애플리케이션의 경우, `client_id`를 요청 본문에 포함하세요:
+앱 시크릿이 없는 싱글 페이지 애플리케이션(SPA) 또는 네이티브 애플리케이션의 경우, 요청 본문에 `client_id`를 포함하세요:
```bash
POST /oidc/token HTTP/1.1
@@ -187,10 +187,10 @@ async function impersonateUser(
ticketId: string,
resource: string,
// highlight-next-line
- clientSecret?: string // 전통적인 웹 또는 기계 간 (M2M) 앱에서는 필수
+ clientSecret?: string // 전통적인 웹 또는 기계 간 앱의 경우 필요
): Promise {
try {
- // 1, 2단계: 가장 (impersonation) 요청 및 subject 토큰 획득
+ // 1, 2단계: 가장 요청 및 subject 토큰 획득
const impersonationResponse = await fetch(
'https://api.techcorp.com/api/request-impersonation',
{
@@ -215,7 +215,7 @@ async function impersonateUser(
// 3단계: subject 토큰을 액세스 토큰으로 교환
// highlight-start
- // 전통적인 웹 또는 M2M 앱: client secret과 함께 Basic 인증 사용
+ // 전통적인 웹 또는 M2M 앱: client secret으로 Basic 인증 사용
// SPA 또는 네이티브 앱: 본문에 client_id 포함
const headers: Record = {
'Content-Type': 'application/x-www-form-urlencoded',
@@ -234,7 +234,7 @@ async function impersonateUser(
headers['Authorization'] =
`Basic ${Buffer.from(`${clientId}:${clientSecret}`).toString('base64')}`;
} else {
- // 공개 클라이언트: 본문에 client_id 추가
+ // 공개 클라이언트: 본문에 client_id 포함
tokenExchangeBody.append('client_id', clientId);
}
// highlight-end
@@ -252,49 +252,49 @@ async function impersonateUser(
const tokenData = (await tokenExchangeResponse.json()) as TokenExchangeResponse;
return tokenData.access_token;
} catch (error) {
- console.error('가장 (impersonation) 실패:', error);
+ console.error('가장 실패:', error);
throw error;
}
}
-// Sarah가 이 함수를 사용하여 Alex를 가장합니다
+// Sarah가 이 함수를 사용해 Alex를 가장합니다
async function performImpersonation(): Promise {
try {
// highlight-start
- // 전통적인 웹 또는 M2M 앱에서는 client secret을 전달
+ // 전통적인 웹 또는 M2M 앱의 경우 client secret 전달
const accessToken = await impersonateUser(
'alex123',
'techcorp_support_app',
'TECH-1234',
'https://api.techcorp.com/customer-data',
- 'your-client-secret' // SPA 또는 네이티브 앱에서는 생략
+ 'your-client-secret' // SPA 또는 네이티브 앱의 경우 생략
);
// highlight-end
- console.log('Alex를 위한 가장 (impersonation) 액세스 토큰:', accessToken);
+ console.log('Alex를 위한 가장 액세스 토큰:', accessToken);
} catch (error) {
- console.error('가장 (impersonation) 수행 실패:', error);
+ console.error('가장 수행 실패:', error);
}
}
-// 가장 (impersonation) 실행
+// 가장 실행
void performImpersonation();
```
:::note
-1. subject 토큰은 단기 유효하며 1회성입니다.
-2. 가장 (impersonation) 액세스 토큰에는 [리프레시 토큰 (Refresh token)](https://auth.wiki/refresh-token)이 포함되지 않습니다. 만약 토큰이 만료되기 전에 Alex의 문제가 해결되지 않으면 Sarah는 이 과정을 반복해야 합니다.
-3. TechCorp의 백엔드 서버는 Sarah와 같은 인가 (Authorization)된 지원 인력만 가장 (impersonation)을 요청할 수 있도록 적절한 인가 (Authorization) 검사를 반드시 구현해야 합니다.
+1. subject 토큰은 단기 유효하며 1회용입니다.
+2. 가장 액세스 토큰에는 [리프레시 토큰 (Refresh token)](https://auth.wiki/refresh-token)이 포함되지 않습니다. 만약 토큰이 만료되기 전에 Alex의 문제가 해결되지 않으면 Sarah는 이 과정을 반복해야 합니다.
+3. TechCorp의 백엔드 서버는 Sarah와 같은 인가 (Authorization)된 지원 인력만 가장을 요청할 수 있도록 적절한 인가 (Authorization) 검사를 구현해야 합니다.
:::
## `act` 클레임 \{#act-claim}
-가장 (impersonation)을 위한 토큰 교환 플로우를 사용할 때, 발급된 액세스 토큰에는 추가적으로 `act` (actor) 클레임이 포함될 수 있습니다. 이 클레임은 "행동 주체"의 아이덴티티를 나타냅니다. 즉, 예시에서 Sarah가 Alex를 대신하여 행동하고 있음을 의미합니다.
+가장을 위한 토큰 교환 플로우를 사용할 때, 발급된 액세스 토큰에는 추가적으로 `act` (actor) 클레임이 포함될 수 있습니다. 이 클레임은 "행동 주체"의 아이덴티티를 나타냅니다. 즉, 예시에서 Sarah가 Alex를 가장하고 있다는 것을 의미합니다.
`act` 클레임을 포함하려면, Sarah의 애플리케이션이 토큰 교환 요청에 `actor_token`을 제공해야 합니다. 이 토큰은 `openid` 스코프가 포함된 Sarah의 유효한 액세스 토큰이어야 합니다. 요청 예시는 다음과 같습니다:
-전통적인 웹 애플리케이션 또는 기계 간 (M2M) 애플리케이션의 경우:
+전통적인 웹 애플리케이션 또는 기계 간 애플리케이션의 경우:
```bash
POST /oidc/token HTTP/1.1
@@ -344,11 +344,11 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
}
```
-이 `act` 클레임은 Sarah(sarah789)가 Alex(alex123)를 대신하여 행동하고 있음을 명확하게 나타냅니다. `act` 클레임은 감사를 위한 추적 및 가장 (impersonation) 활동 기록에 유용합니다.
+이 `act` 클레임은 Sarah(sarah789)가 Alex(alex123)를 대신해 행동하고 있음을 명확히 나타냅니다. `act` 클레임은 감사를 위한 추적 및 가장 활동 기록에 유용합니다.
## 토큰 클레임 커스터마이징 \{#customizing-token-claims}
-Logto는 가장 (impersonation) 토큰에 대해 [토큰 클레임 커스터마이징](/developers/custom-token-claims)을 지원합니다. 이는 가장 (impersonation) 과정에 추가적인 컨텍스트나 메타데이터(예: 가장 사유, 관련 지원 티켓 등)를 추가할 때 유용합니다.
+Logto는 가장 토큰에 대해 [토큰 클레임을 커스터마이징](/developers/custom-token-claims)할 수 있도록 지원합니다. 이는 가장 과정에 대한 추가적인 컨텍스트나 메타데이터(예: 가장 사유, 관련 지원 티켓 등)를 추가하는 데 유용합니다.
TechCorp의 서버가 Logto Management API에 subject 토큰을 요청할 때, `context` 객체를 포함할 수 있습니다:
@@ -396,7 +396,7 @@ Sarah가 받게 되는 최종 액세스 토큰은 다음과 같이 보일 수
}
```
-이처럼 액세스 토큰의 클레임을 커스터마이징하면, TechCorp는 가장 (impersonation) 컨텍스트에 대한 유용한 정보를 포함시켜 시스템 내에서 가장 (impersonation) 활동을 감사하고 이해하기 쉽게 만들 수 있습니다.
+이와 같이 액세스 토큰 클레임을 커스터마이징함으로써, TechCorp는 가장 컨텍스트에 대한 유용한 정보를 포함시켜 시스템 내에서 가장 활동을 감사하고 이해하기 쉽게 만들 수 있습니다.
:::note
토큰에 커스텀 클레임을 추가할 때는 주의하세요. 토큰이 탈취되거나 유출될 경우 보안 위험이 될 수 있는 민감한 정보를 포함하지 마세요. JWT는 서명되어 있지만 암호화되어 있지 않으므로, 토큰에 접근할 수 있는 누구나 클레임을 볼 수 있습니다.
@@ -405,6 +405,6 @@ Sarah가 받게 되는 최종 액세스 토큰은 다음과 같이 보일 수
## 관련 리소스 \{#related-resources}
- 사이버보안 및 아이덴티티 관리에서 가장 (impersonation)이란 무엇인가요? AI 에이전트가 어떻게 사용할
- 수 있나요?
+ 사이버 보안 및 아이덴티티 관리에서 가장 (Impersonation)이란 무엇인가요? AI 에이전트가 이를 어떻게
+ 활용할 수 있나요?
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
index 48828a1da82..d2990ef542b 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
@@ -1,24 +1,24 @@
---
-sidebar_position: 5
+sidebar_position: 6
---
# Webhook
Logto [Webhook](https://auth.wiki/webhook)은 사용자 계정, 역할, 권한, 조직, 조직 역할, 조직 권한, 그리고 [사용자 상호작용](/end-user-flows) 등 다양한 이벤트에 대한 실시간 알림을 제공합니다.
-이벤트가 발생하면, Logto는 여러분이 제공한 Endpoint URL로 HTTP 요청을 전송하며, 이 요청에는 사용자 ID, 사용자명, 이메일 등 이벤트에 대한 상세 정보가 포함되어 있습니다 (페이로드와 헤더에 포함된 데이터에 대한 자세한 내용은 [Webhook 요청](/developers/webhooks/webhooks-request)을 참조하세요). 여러분의 애플리케이션은 이 요청을 처리하여 이메일 발송이나 데이터베이스 내 데이터 업데이트 등 맞춤형 작업을 수행할 수 있습니다.
+이벤트가 발생하면, Logto는 여러분이 제공한 Endpoint URL로 HTTP 요청을 전송하며, 이 요청에는 사용자 ID, 사용자명, 이메일 등 이벤트에 대한 상세 정보가 포함됩니다 (페이로드 및 헤더에 포함된 데이터에 대한 자세한 내용은 [Webhook 요청](/developers/webhooks/webhooks-request)을 참고하세요). 여러분의 애플리케이션은 이 요청을 처리하여 이메일 발송이나 데이터베이스 내 데이터 업데이트 등 맞춤형 작업을 수행할 수 있습니다.
우리는 사용자 요구에 따라 더 많은 이벤트를 지속적으로 추가하고 있습니다. 비즈니스에 필요한 특정 요구 사항이 있다면 언제든 알려주세요.
-## Webhook을 사용하는 이유는 무엇인가요? \{#why-use-webhook}
+## 왜 Webhook을 사용해야 하나요? \{#why-use-webhook}
-Webhook은 애플리케이션 간 실시간 통신을 제공하여 폴링이 필요 없고 즉각적인 데이터 업데이트가 가능합니다. 복잡한 코드나 독점 API 없이도 애플리케이션 통합 및 워크플로 자동화를 간소화합니다.
+Webhook은 애플리케이션 간 실시간 통신을 제공하여 폴링이 필요 없고 즉각적인 데이터 업데이트가 가능합니다. 복잡한 코드나 독점 API 없이도 애플리케이션 통합 및 워크플로우 자동화를 간소화합니다.
다음은 CIAM에서 일반적으로 사용되는 Webhook 활용 사례입니다:
-- **이메일 발송:** Webhook을 구성하여 신규 사용자가 등록할 때 환영 이메일을 보내거나, 사용자가 새로운 기기나 위치에서 로그인할 때 관리자를 알릴 수 있습니다.
-- **알림 전송:** Webhook을 구성하여 사용자가 가입할 때 CRM 시스템과 연동된 가상 비서를 트리거하여 실시간 고객 지원을 제공할 수 있습니다.
-- **추가 API 호출 수행:** Webhook을 구성하여 사용자의 이메일 도메인이나 IP 주소를 확인한 뒤, Logto Management API를 사용해 적절한 역할과 리소스 권한을 할당할 수 있습니다.
+- **이메일 발송:** Webhook을 구성하여 신규 사용자가 가입할 때 환영 이메일을 보내거나, 사용자가 새로운 기기 또는 위치에서 로그인할 때 관리자가 알림을 받도록 할 수 있습니다.
+- **알림 전송:** Webhook을 구성하여 사용자가 가입할 때 CRM 시스템과 연동된 가상 비서를 호출하여 실시간 고객 지원을 제공할 수 있습니다.
+- **추가 API 호출 수행:** Webhook을 구성하여 사용자의 이메일 도메인이나 IP 주소를 확인한 후, Logto Management API를 사용해 적절한 역할과 리소스 권한을 할당할 수 있습니다.
- **데이터 동기화:** Webhook을 구성하여 사용자 계정 정지 또는 삭제와 같은 변경 사항을 애플리케이션에 실시간으로 반영할 수 있습니다.
- **리포트 생성:** Webhook을 설정하여 사용자 로그인 활동 데이터를 수신하고, 이를 활용해 사용자 참여도나 사용 패턴에 대한 리포트를 생성할 수 있습니다.
@@ -26,12 +26,12 @@ Webhook은 애플리케이션 간 실시간 통신을 제공하여 폴링이 필
| Item | Description |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| Event | 특정 작업이 수행되면, 해당 작업에 맞는 타입의 hook 이벤트가 트리거됩니다. 예: 사용자가 회원가입을 완료하고 새 계정을 생성하면 Logto는 PostRegister hook 이벤트를 발생시킵니다. |
-| Hook | 특정 이벤트에 연결된 하나 또는 일련의 작업입니다. 작업에는 API 호출, 코드 스니펫 실행 등이 포함될 수 있습니다. |
+| Event | 특정 동작이 수행되면, 해당 동작에 맞는 타입의 hook 이벤트가 트리거됩니다. 예: 사용자가 회원가입을 완료하고 새 계정을 생성하면 Logto는 PostRegister hook 이벤트를 발생시킵니다. |
+| Hook | 특정 이벤트에 연결된 하나 또는 일련의 동작입니다. 동작에는 API 호출, 코드 스니펫 실행 등이 포함될 수 있습니다. |
| Webhook | 이벤트 페이로드와 함께 API를 호출하는 hook의 하위 유형입니다. |
| 예를 들어, 개발자가 사용자가 새로운 기기로 로그인할 때 알림을 보내고 싶다면, PostSignIn 이벤트에 자신의 보안 서비스 API를 호출하는 webhook을 추가할 수 있습니다. |
-다음은 Logto에서 `PostSignIn` 이벤트에 대해 두 개의 web hook을 활성화하는 예시입니다:
+다음은 Logto에서 `PostSignIn` 이벤트에 대해 두 개의 웹훅을 활성화하는 예시입니다:
```mermaid
graph LR
@@ -63,11 +63,11 @@ graph LR
-### Logto는 동기화된 webhook을 지원하나요? \{#does-logto-support-synced-webhooks}
+### Logto는 동기 Webhook을 지원하나요? \{#does-logto-support-synced-webhooks}
-동기화된 webhook은 사용자 로그인 흐름을 더 원활하게 만들 수 있지만, 아직 지원하지 않습니다 (향후 지원 예정입니다). 따라서 현재 동기화된 webhook에 의존하는 시나리오는 모두 별도의 우회 방법이 필요합니다. 궁금한 점이 있다면 언제든 문의해 주세요.
+동기 Webhook이 사용자 로그인 흐름을 더 원활하게 만들 수 있지만, 아직 지원하지 않습니다 (향후 지원 예정). 따라서 현재 동기 Webhook에 의존하는 시나리오는 모두 별도의 우회 방법이 필요합니다. 궁금한 점이 있으면 언제든 문의해 주세요.
@@ -85,22 +85,22 @@ graph LR
-### webhook 타임아웃은 어떻게 디버깅하나요? \{#how-to-debug-webhook-timeout}
+### Webhook 타임아웃은 어떻게 디버깅하나요? \{#how-to-debug-webhook-timeout}
-Webhook을 수신하는 엔드포인트는 Logto에 Webhook이 성공적으로 수신되었음을 알리기 위해 가능한 한 빨리 2xx 응답을 반환해야 합니다. 사용자마다 Webhook 처리 로직이 매우 다르기 때문에, 지나치게 복잡한 작업은 몇 초가 걸릴 수 있어 Logto Webhook이 타임아웃될 수 있습니다. 최선의 방법은 자체 이벤트 큐를 유지하는 것입니다. Logto Webhook을 수신하면 이벤트를 큐에 삽입하고 Logto에 2xx 응답을 반환하세요. 이후 자체 워커가 큐의 작업을 단계별로 처리하도록 하세요. 워커에서 오류가 발생하면 자체 서버에서 처리하면 됩니다.
+Webhook을 수신하는 엔드포인트는 Logto에 Webhook이 성공적으로 수신되었음을 알리기 위해 가능한 한 빨리 2xx 응답을 반환해야 합니다. 사용자마다 Webhook 처리 로직이 매우 다르기 때문에, 지나치게 복잡한 작업은 몇 초가 걸릴 수 있어 Logto Webhook이 타임아웃될 수 있습니다. 최선의 방법은 자체 이벤트 큐를 유지하는 것입니다. Logto Webhook을 수신하면 이벤트를 큐에 삽입하고 Logto에 2xx 응답을 반환하세요. 이후 워커가 큐의 작업을 단계별로 처리하도록 하세요. 워커에서 오류가 발생하면 자체 서버에서 처리하면 됩니다.
-### `PostSignIn` webhook에서 클라이언트 IP 주소를 얻을 수 있나요? \{#can-i-get-the-client-ip-address-from-postsignin-webhooks}
+### `PostSignIn` webhook에서 클라이언트 IP 주소를 받을 수 있나요? \{#can-i-get-the-client-ip-address-from-postsignin-webhooks}
-네, Webhook 페이로드에서 IP 주소, 사용자 에이전트 등을 얻을 수 있습니다. 현재 지원되지 않는 정보가 필요하다면 GitHub 이슈에 기능 요청을 생성하거나, 저희에게 연락해 주세요.
+네, Webhook 페이로드에서 IP 주소, 사용자 에이전트 등을 받을 수 있습니다. 현재 지원되지 않는 정보가 필요하다면 GitHub 이슈에 기능 요청을 하거나, 저희에게 연락해 주세요.
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
index 07e355fc4c1..e5884914ab2 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
@@ -8,27 +8,51 @@ import GearIcon from '@site/src/assets/gear.svg';
# 계정 설정
-Logto는 사용자가 Logto에 저장된 자신의 계정 및 프로필을 관리할 수 있도록 두 가지 계정 설정 API 컬렉션을 제공합니다.
+Logto는 사용자가 Logto에 저장된 자신의 계정 및 프로필을 관리할 수 있는 다양한 방법을 제공합니다.
-## 계정 API 사용 (권장) \{#use-account-apis-recommended}
+## 기본 제공 Account Center UI 사용 (권장) \{#use-prebuilt-account-center-ui-recommended}
-Logto의 Account API는 즉시 사용할 수 있는 프론트엔드 엔드포인트로, 최종 사용자가 내장된 권한 검사와 함께 자신의 정보를 안전하게 조회 및 업데이트할 수 있도록 해줍니다. 클라이언트 애플리케이션에 간단히 임베드하여 세련된 셀프 서비스 계정 설정 페이지를 구현할 수 있습니다.
+Logto는 사용자가 계정 설정을 관리할 수 있도록 즉시 사용할 수 있는 페이지를 제공하는 기본 제공 Account Center UI를 제공합니다. 이는 애플리케이션에 계정 관리를 추가하는 가장 빠른 방법입니다.
주요 특징:
-- **최종 사용자 설정**: 사용자는 자신의 로그인 식별자 및 자격 증명, 소셜 계정, MFA 방법, 프로필 데이터를 직접 관리할 수 있습니다.
-- **클라이언트 측 통합**: 프론트엔드에서 안전하게 직접 사용할 수 있도록 설계되었습니다.
-- **최소한의 설정**: 별도의 커스텀 서버 없이 바로 사용할 수 있는 엔드포인트.
+- **개발 작업 불필요**: 즉시 사용할 수 있는 페이지로 바로 동작합니다.
+- **일관된 경험**: Logto의 로그인 경험과 동일한 룩앤필을 제공합니다.
+- **내장된 보안**: 모든 인증 (Authentication) 플로우와 보안 조치가 자동으로 처리됩니다.
+- **완전한 기능**: 이메일, 전화번호, 사용자명, 비밀번호, MFA 설정 업데이트를 지원합니다.
+
+,
+ },
+ },
+ ]}
+/>
+
+## Account API 사용 \{#use-account-apis}
+
+Logto의 Account API는 내장된 권한 (Permission) 체크와 함께 최종 사용자가 자신의 정보를 안전하게 조회 및 업데이트할 수 있도록 하는 프론트엔드 엔드포인트입니다. 자체 UI로 맞춤형 계정 설정 페이지를 구축해야 할 때 사용하세요.
+
+주요 특징:
+
+- **최종 사용자 설정**: 사용자가 자신의 로그인 식별자 및 자격 증명, 소셜 계정, MFA 방식, 프로필 데이터를 직접 관리합니다.
+- **클라이언트 사이드 통합**: 프론트엔드에서 안전하게 직접 사용할 수 있도록 설계되었습니다.
+- **완전한 커스터마이징**: Logto의 보안 API를 활용하면서 자체 UI를 구축할 수 있습니다.
- **권한 제어**: Management API 설정을 통해 어떤 Account API를 활성화할지 토글할 수 있습니다.
,
},
@@ -38,12 +62,12 @@ Logto의 Account API는 즉시 사용할 수 있는 프론트엔드 엔드포인
## Management API 사용 \{#use-management-apis}
-Management API는 Logto의 핵심 관리 인터페이스로, 관리자 또는 백엔드 서비스만 접근할 수 있습니다. 모든 사용자 계정에 대해 최대한의 유연성과 완전한 CRUD 제어를 제공하며, 커스텀 관리 도구를 구축할 수 있습니다. 완전히 커스텀된 셀프 서비스 포털이나 비표준 사용자 관리 기능이 필요하다면, 선택한 Management API 엔드포인트를 자체 “Account API” 레이어 뒤에 노출하고 비즈니스 인증 로직으로 보호할 수 있습니다.
+Management API는 Logto의 핵심 관리 인터페이스로, 관리자 또는 백엔드 서비스만 접근할 수 있습니다. 모든 사용자 계정에 대해 최대한의 유연성과 완전한 CRUD 제어를 제공하며, 맞춤형 관리 도구를 구축할 수 있습니다. 완전히 커스텀된 셀프 서비스 포털이나 비표준 사용자 관리 기능이 필요하다면, 선택한 Management API 엔드포인트를 자체 “Account API” 레이어 뒤에 노출하고 비즈니스 인증 (Authentication) 로직으로 보호할 수 있습니다.
주요 특징:
- **관리자 전용 접근**: 개발자 및 백오피스 시스템을 위한 용도
-- **전체 사용자 라이프사이클**: 계정 생성, 조회, 수정, 삭제, 정지, 복원
+- **전체 사용자 라이프사이클**: 계정 생성, 조회, 수정, 삭제, 정지, 복구 등
- **고급 작업**: 개인 액세스 토큰 생성, 사용자 가장, OAuth 앱 연결, 워크플로우 커스터마이즈 등
,
},
@@ -61,13 +85,14 @@ Management API는 Logto의 핵심 관리 인터페이스로, 관리자 또는
]}
/>
-## Account API vs. Management API \{#account-api-vs-management-api}
+## 계정 설정 옵션 비교 \{#comparison-of-account-settings-options}
-| 기능 | Account API | Management API |
-| ----------------- | ------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- |
-| **대상 사용자** | 최종 사용자 | 관리자 / 개발자 |
-| **접근 컨텍스트** | 클라이언트 측 / 프론트엔드 | 서버 측 / 백엔드 |
-| **권한 모델** | Management API를 통해 어떤 Account API를 활성화할지 토글 | 개발자가 완전히 커스터마이즈 가능 |
-| **지원 기능** | 사용자명, 이메일, 전화번호, 비밀번호, 소셜 계정, MFA, 프로필 조회/수정/삭제 | 모든 기본 설정 + 계정 삭제/정지/복원, 개인 액세스 토큰, 사용자 가장, OAuth 앱 연결 등 |
-| **설정 난이도** | 매우 낮음 (플러그 앤 플레이) | 중간~높음 (커스텀 구현 필요) |
-| **사용 시점** | 최소한의 설정으로 클라이언트 앱에서 안전한 셀프 서비스 계정 설정 페이지를 빠르게 출시할 때 | Account API로 충족되지 않는 경우. 예: 복잡한 계정 삭제 로직, 고위험 작업, 백오피스 도구 구축 등 |
+| 기능 | 기본 제공 Account Center UI | Account API | Management API |
+| ------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
+| **대상 사용자** | 최종 사용자 | 최종 사용자 | 관리자 / 개발자 |
+| **접근 컨텍스트** | Logto 호스팅 페이지로 리디렉션 | 클라이언트 사이드 / 프론트엔드 | 서버 사이드 / 백엔드 |
+| **권한 모델** | Account Center 설정에서 활성화할 필드 토글 | Management API를 통해 활성화할 Account API 토글 | 개발자가 완전히 커스터마이즈 가능 |
+| **지원 기능** | 이메일, 전화번호, 사용자명, 비밀번호, MFA (TOTP, 패스키, 백업 코드) 업데이트 | 사용자명, 이메일, 전화번호, 비밀번호, 소셜 계정, MFA, 프로필 조회/업데이트/삭제 | 모든 기본 설정 + 계정 삭제/정지/복구, 개인 액세스 토큰, 사용자 가장, OAuth 앱 연결 등 |
+| **UI 커스터마이징** | 로그인 경험 브랜딩 상속 | 완전한 커스터마이징 (직접 UI 구축) | 완전한 커스터마이징 (직접 UI 구축) |
+| **설정 복잡도** | 없음 (기본 제공 페이지에 링크만 하면 됨) | 낮음 (API와 UI만 사용) | 중~높음 (커스텀 구현 필요) |
+| **사용 시점** | 커스텀 페이지 없이 가장 빠르게 계정 관리를 추가하고 싶을 때 | 커스텀 UI가 필요하지만 Logto의 보안 API를 활용하고 싶을 때 | Account API로 충족되지 않는 경우. 예: 복잡한 계정 삭제 로직, 고위험 작업, 백오피스 도구 구축 등 |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
new file mode 100644
index 00000000000..e767ef89be6
--- /dev/null
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
@@ -0,0 +1,148 @@
+---
+description: Logto의 기본 제공 Account Center UI를 사용하여 사용자가 계정을 관리하는 방법을 알아보세요
+sidebar_position: 2
+---
+
+# 기본 제공 Account Center UI로 계정 설정
+
+## 기본 제공 Account Center UI란? \{#what-is-the-prebuilt-account-center-ui}
+
+Logto는 사용자가 계정 설정을 관리할 수 있도록 즉시 사용할 수 있는 페이지를 제공하는 기본 제공 Account Center UI를 제공합니다. 이 기본 UI는 Logto에서 호스팅되며 다음과 같은 일반적인 계정 관리 작업을 처리합니다:
+
+- 이메일 주소 업데이트
+- 전화번호 업데이트
+- 사용자 이름 업데이트
+- 비밀번호 설정 또는 업데이트
+- MFA 설정 관리 (TOTP 인증 앱, 패스키, 백업 코드)
+
+기본 제공 Account Center UI는 애플리케이션과 원활하게 작동하도록 설계되어, 별도의 계정 관리 페이지를 직접 구축하지 않아도 일관된 사용자 경험을 제공합니다.
+
+## 기본 UI 사용의 장점 \{#benefits-of-using-the-prebuilt-ui}
+
+- **개발 작업 불필요**: 즉시 사용할 수 있는 페이지 제공
+- **일관된 경험**: Logto의 로그인 경험과 동일한 스타일 및 느낌 제공
+- **내장된 보안**: 모든 인증 흐름과 보안 조치가 자동으로 처리됨
+- **항상 최신 상태**: 새로운 기능과 보안 개선 사항이 자동으로 적용됨
+
+## 제공되는 페이지 \{#available-pages}
+
+기본 제공 Account Center UI는 Logto 테넌트 엔드포인트의 `/account` 경로 아래에서 다음 페이지를 제공합니다:
+
+| 경로 | 설명 |
+| -------------------------------- | --------------------------- |
+| `/account/email` | 기본 이메일 주소 업데이트 |
+| `/account/phone` | 기본 전화번호 업데이트 |
+| `/account/username` | 사용자 이름 업데이트 |
+| `/account/password` | 비밀번호 설정 또는 업데이트 |
+| `/account/passkey/add` | 새 패스키 추가 (WebAuthn) |
+| `/account/passkey/manage` | 기존 패스키 보기 및 관리 |
+| `/account/authenticator-app` | TOTP 인증 앱 설정 |
+| `/account/backup-codes/generate` | 새 백업 코드 생성 |
+| `/account/backup-codes/manage` | 백업 코드 보기 및 관리 |
+
+예를 들어, 테넌트 엔드포인트가 `https://example.logto.app`인 경우, 이메일 업데이트 페이지는 `https://example.logto.app/account/email`에서 접근할 수 있습니다.
+
+## 기본 UI 사용 방법 \{#how-to-use-the-prebuilt-ui}
+
+### 1단계: Account API 활성화 \{#step-1-enable-account-api}
+
+기본 제공 Account Center UI는 Account API에 의존합니다. 콘솔 > 로그인 & 계정 > Account center로 이동하여 Account API를 활성화하세요.
+
+필드 권한을 필요에 따라 구성하세요:
+
+- 사용자가 수정할 수 있도록 하려면 필드를 `Edit`로 설정
+- 사용자가 보기만 할 수 있도록 하려면 `ReadOnly`로 설정
+- 완전히 숨기려면 `Off`로 설정
+
+### 2단계: 애플리케이션에서 기본 제공 페이지로 연결 \{#step-2-link-to-prebuilt-pages}
+
+기본 제공 Account Center UI를 사용하려면, 애플리케이션에서 적절한 Logto 페이지로 사용자를 리디렉션해야 합니다. 두 가지 접근 방식이 있습니다:
+
+#### 접근 방식 A: 리디렉션 파라미터를 이용한 직접 연결 \{#approach-a-direct-linking}
+
+애플리케이션에 사용자를 기본 제공 페이지로 리디렉션하는 링크를 추가하세요. 작업 완료 후 앱으로 돌아올 수 있도록 `redirect` 쿼리 파라미터를 포함하세요:
+
+```
+https://[tenant-id].logto.app/account/email?redirect=https://your-app.com/settings
+```
+
+사용자가 이메일 업데이트를 완료하면 `https://your-app.com/settings`로 다시 리디렉션됩니다.
+
+#### 접근 방식 B: 계정 설정 흐름에 임베딩 \{#approach-b-embedding}
+
+기존 계정 설정 워크플로우에 기본 제공 페이지를 통합할 수 있습니다:
+
+1. 앱의 계정 설정 페이지에서 사용자의 현재 정보를 표시
+2. 해당 기본 제공 페이지로 연결되는 "수정" 또는 "업데이트" 버튼 제공
+3. 사용자가 작업을 완료하면 다시 앱으로 리디렉션
+
+예시 구현:
+
+```tsx
+function AccountSettings() {
+ const tenantEndpoint = 'https://example.logto.app';
+ const redirectUrl = encodeURIComponent(window.location.href);
+
+ return (
+
+
Account Settings
+
+
+
+
+
+
+
+ );
+}
+```
+
+### 3단계: 성공 리디렉션 처리 \{#step-3-handle-success-redirects}
+
+사용자가 작업을 완료하면, 선택적으로 `show_success` 쿼리 파라미터와 함께 지정한 URL로 리디렉션됩니다. 이를 활용해 성공 메시지를 표시할 수 있습니다:
+
+```tsx
+function SettingsPage() {
+ const searchParams = new URLSearchParams(window.location.search);
+ const showSuccess = searchParams.get('show_success');
+
+ return (
+
+ {showSuccess === 'email' &&
Email updated successfully!
}
+ {showSuccess === 'password' &&
Password updated successfully!
}
+ {/* ... 나머지 설정 페이지 */}
+
+ );
+}
+```
+
+## 보안 고려 사항 \{#security-considerations}
+
+기본 제공 Account Center UI에는 다음과 같은 내장 보안 조치가 포함되어 있습니다:
+
+- **아이덴티티 확인**: 민감한 변경(이메일, 전화번호, 비밀번호, MFA) 전, 사용자는 현재 비밀번호 또는 기존 인증 방법으로 본인 확인 필요
+- **인증 코드**: 이메일 및 전화번호 업데이트 시 새 주소/번호로 인증 코드 전송 필요
+- **세션 검증**: 모든 작업에서 사용자의 세션을 검증하여 무단 접근 방지
+
+## 커스터마이징 옵션 \{#customization-options}
+
+기본 제공 Account Center UI는 로그인 경험 설정에서 지정한 브랜딩(로고, 색상, 다크/라이트 모드, 언어 설정 등)을 상속받습니다.
+
+기본 제공 UI 이상의 커스터마이징이 필요하다면, [Account API](/end-user-flows/account-settings/by-account-api)를 사용하여 맞춤형 계정 관리 페이지를 직접 구축할 수 있습니다.
+
+## 관련 리소스 \{#related-resources}
+
+- [Account API로 계정 설정](/end-user-flows/account-settings/by-account-api) - 전체 API 제어로 맞춤형 계정 관리 구축
+- [Management API로 계정 설정](/end-user-flows/account-settings/by-management-api) - 관리자 수준 계정 관리
+- [MFA 구성](/end-user-flows/mfa) - 다단계 인증 (MFA) 설정
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/introduction/README.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/introduction/README.mdx
index 5f5a00f3121..39f0516fb76 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/introduction/README.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/introduction/README.mdx
@@ -1,5 +1,5 @@
---
-description: Logto를 통합하여 아이덴티티 및 접근 관리 시스템을 빠르게 시작하세요. 인증 (Authentication), 인가 (Authorization), 다중 테넌트 관리까지 한 번에 누릴 수 있습니다.
+description: Logto를 통합하여 아이덴티티 및 접근 관리 시스템을 빠르게 시작하세요. 인증 (Authentication), 인가 (Authorization), 멀티 테넌트 관리를 한 번에 경험할 수 있습니다.
---
import AuditLogIcon from '@site/src/assets/audit-log.svg';
@@ -32,9 +32,9 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
# 소개
-Logto 문서에 오신 것을 환영합니다! Logto는 현대 앱과 SaaS 제품을 위해 설계된 아이덴티티 및 접근 관리 (IAM) 솔루션입니다. 애플리케이션을 위한 안전하고 확장 가능하며 맞춤화 가능한 인증 (Authentication) 및 인가 (Authorization) 시스템을 제공합니다.
+Logto 문서에 오신 것을 환영합니다! Logto는 현대 앱과 SaaS 제품을 위해 설계된 아이덴티티 및 접근 관리 (IAM) 솔루션입니다. 애플리케이션을 위한 안전하고, 확장 가능하며, 맞춤화 가능한 인증 (Authentication) 및 인가 (Authorization) 시스템을 제공합니다.
-## 기능별로 살펴보기 \{#explore-by-features}
+## 기능별 탐색 \{#explore-by-features}
,
docId: 'developers/custom-token-claims/README',
},
+ {
+ icon: ,
+ docId: 'developers/custom-id-token/README',
+ },
{
icon: ,
docId: 'developers/user-impersonation',
@@ -158,7 +162,7 @@ Logto 문서에 오신 것을 환영합니다! Logto는 현대 앱과 SaaS 제
]}
/>
-## 지원 도구별로 살펴보기 \{#explore-by-support-toolkit}
+## 지원 도구별 탐색 \{#explore-by-support-toolkit}
Logto의 역량은 네 가지 핵심 축을 기반으로 하며, 여러분의 제품이나 비즈니스에 쉽게 통합할 수 있는 기능의 토대가 됩니다.
@@ -169,7 +173,7 @@ Logto의 역량은 네 가지 핵심 축을 기반으로 하며, 여러분의
label: 'Logto Console',
href: 'https://cloud.logto.io',
description:
- '웹 기반 인터페이스로 리소스 구성 및 관리를 지원하며, 빠른 로그인 경험 설정과 손쉬운 아이덴티티 관리를 제공합니다.',
+ '웹 기반 인터페이스로 리소스 구성 및 관리를 지원하며, 빠른 로그인 경험 설정과 쉬운 아이덴티티 관리를 제공합니다.',
customProps: {
icon: ,
},
@@ -179,7 +183,7 @@ Logto의 역량은 네 가지 핵심 축을 기반으로 하며, 여러분의
label: '최종 사용자 경험',
href: '/end-user-flows',
description:
- '완전한 인증 (Authentication) 플로우와 사용자 인터페이스를 제공하며, Logto Console 및 API를 통한 광범위한 커스터마이징이 가능합니다.',
+ '완전한 인증 (Authentication) 플로우와 사용자 인터페이스를 제공하며, Logto Console과 API를 통한 광범위한 커스터마이징이 가능합니다.',
customProps: {
icon: ,
},
@@ -189,7 +193,7 @@ Logto의 역량은 네 가지 핵심 축을 기반으로 하며, 여러분의
label: 'Logto API',
href: 'https://openapi.logto.io',
description:
- 'Logto의 백엔드는 다양한 인증 (Authentication) 및 인가 (Authorization) 기능을 지원하는 API를 제공합니다. Logto Management API, Experience API, Account API 등이 포함됩니다.',
+ 'Logto의 백엔드는 다양한 인증 (Authentication) 및 인가 (Authorization) 기능을 지원하는 API 세트를 제공합니다. Logto Management API, Experience API, Account API 등이 포함됩니다.',
customProps: {
icon: ,
},
@@ -216,7 +220,7 @@ Logto의 역량은 네 가지 핵심 축을 기반으로 하며, 여러분의
]}
/>
-## 배포 유형별로 살펴보기 \{#explore-by-deployment-types}
+## 배포 유형별 탐색 \{#explore-by-deployment-types}
Console > Custom JWT를 통해 ID 토큰 (ID token)에 직접 포함되도록 설정할 수도 있습니다. 자세한 내용은 [커스텀 ID 토큰](/developers/custom-id-token)을 참고하세요.
**`custom_data`**
-| 클레임 이름 | 타입 | 설명 | userinfo 필요 여부 |
-| ----------- | -------- | ---------------------- | ------------------ |
-| custom_data | `object` | 사용자의 커스텀 데이터 | 예 |
+| 클레임 이름 | 타입 | 설명 | 기본적으로 ID 토큰에 포함됨 |
+| ----------- | -------- | ---------------------- | --------------------------- |
+| custom_data | `object` | 사용자의 커스텀 데이터 | |
**`identities`**
-| 클레임 이름 | 타입 | 설명 | userinfo 필요 여부 |
-| -------------- | -------- | ------------------------------ | ------------------ |
-| identities | `object` | 사용자의 연결된 아이덴티티 | 예 |
-| sso_identities | `array` | 사용자의 연결된 SSO 아이덴티티 | 예 |
+| 클레임 이름 | 타입 | 설명 | 기본적으로 ID 토큰에 포함됨 |
+| -------------- | -------- | ------------------------------ | --------------------------- |
+| identities | `object` | 사용자의 연결된 아이덴티티 | |
+| sso_identities | `array` | 사용자의 연결된 SSO 아이덴티티 | |
**`roles`**
-| 클레임 이름 | 타입 | 설명 | userinfo 필요 여부 |
-| ----------- | ---------- | ------------- | ------------------ |
-| roles | `string[]` | 사용자의 역할 | 아니오 |
+| 클레임 이름 | 타입 | 설명 | 기본적으로 ID 토큰에 포함됨 |
+| ----------- | ---------- | --------------------- | --------------------------- |
+| roles | `string[]` | 사용자의 역할 (Roles) | ✅ |
**`urn:logto:scope:organizations`**
-| 클레임 이름 | 타입 | 설명 | userinfo 필요 여부 |
-| ----------------- | ---------- | ------------------------- | ------------------ |
-| organizations | `string[]` | 사용자가 속한 조직 ID | 아니오 |
-| organization_data | `object[]` | 사용자가 속한 조직 데이터 | 예 |
+| 클레임 이름 | 타입 | 설명 | 기본적으로 ID 토큰에 포함됨 |
+| ----------------- | ---------- | ----------------------------------------- | --------------------------- |
+| organizations | `string[]` | 사용자가 속한 조직 (Organizations) ID | ✅ |
+| organization_data | `object[]` | 사용자가 속한 조직 (Organizations) 데이터 | |
:::note
-이러한 조직 클레임은 [불투명 토큰](/concepts/opaque-token) 사용 시에도 userinfo 엔드포인트를 통해 조회할 수 있습니다. 그러나 불투명 토큰은 조직별 리소스에 접근하는 조직 토큰으로 사용할 수 없습니다. 자세한 내용은 [불투명 토큰과 조직](/concepts/opaque-token#opaque-token-and-organizations) 을 참고하세요.
+이 조직(Organization) 클레임들은 [불투명 토큰](/concepts/opaque-token)을 사용할 때도 userinfo 엔드포인트를 통해 조회할 수 있습니다. 그러나 불투명 토큰은 조직별 리소스에 접근하는 조직 토큰 (Organization token)으로 사용할 수 없습니다. 자세한 내용은 [불투명 토큰과 조직](/concepts/opaque-token#opaque-token-and-organizations)을 참고하세요.
:::
**`urn:logto:scope:organization_roles`**
-| 클레임 이름 | 타입 | 설명 | userinfo 필요 여부 |
-| ------------------ | ---------- | -------------------------------------------------------------- | ------------------ |
-| organization_roles | `string[]` | 사용자가 속한 조직 역할 (`:` 형식) | 아니오 |
-
----
-
-성능 및 데이터 크기를 고려하여, "userinfo 필요 여부"가 "예"인 경우 해당 클레임은 ID 토큰에 포함되지 않고, [userinfo 엔드포인트](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo) 응답에서 반환됩니다.
+| 클레임 이름 | 타입 | 설명 | 기본적으로 ID 토큰에 포함됨 |
+| ------------------ | ---------- | ----------------------------------------------------------------------------------- | --------------------------- |
+| organization_roles | `string[]` | 사용자가 속한 조직 역할 (Organization roles), 형식: `:` | ✅ |
diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
index 1d127f874cc..18d98e779b8 100644
--- a/i18n/ko/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
+++ b/i18n/ko/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
@@ -1,20 +1,22 @@
import ScopeClaimList from './_scope-claim-list.md';
-Logto는 OIDC [스코프 및 클레임 규약](https://openid.net/specs/openid-connect-core-1_0.html#Claims)을 사용하여 ID 토큰 및 OIDC userinfo 엔드포인트에서 사용자 정보를 가져오기 위한 스코프와 클레임을 정의합니다. "스코프"와 "클레임"은 OAuth 2.0 및 OpenID Connect (OIDC) 사양의 용어입니다.
+Logto는 OIDC [스코프 (Scope) 및 클레임 (Claim) 규약](https://openid.net/specs/openid-connect-core-1_0.html#Claims)을 사용하여 ID 토큰 및 OIDC userinfo 엔드포인트에서 사용자 정보를 가져오기 위한 스코프 (Scope)와 클레임 (Claim)을 정의합니다. "스코프 (Scope)"와 "클레임 (Claim)" 모두 OAuth 2.0 및 OpenID Connect (OIDC) 명세의 용어입니다.
-{/* TODO: 아래 제거 */}
+표준 OIDC 클레임 (Claim)의 경우, ID 토큰에 포함되는지는 요청된 스코프 (Scope)에 의해 엄격하게 결정됩니다. 확장 클레임 (예: `custom_data`, `organizations`)은 커스텀 ID 토큰 설정을 통해 ID 토큰에 추가로 포함되도록 구성할 수 있습니다.
+
+{/* TODO: 아래 내용 삭제 예정 */}
{props.configScopesCode &&
<>
-간단히 말해, 스코프를 요청하면 사용자 정보에서 해당 클레임을 받게 됩니다. 예를 들어, `email` 스코프를 요청하면 사용자의 `email` 및 `email_verified` 데이터를 받게 됩니다.
+요약하자면, 스코프 (Scope)를 요청하면 해당하는 클레임 (Claim)을 사용자 정보에서 받을 수 있습니다. 예를 들어, `email` 스코프 (Scope)를 요청하면 사용자의 `email` 및 `email_verified` 데이터를 받을 수 있습니다.
- 기본적으로, Logto SDK는 항상 세 가지 스코프를 요청합니다: `openid`, `profile`, 그리고
- `offline_access`. 이 기본 스코프들은 제거할 수 없습니다. 그러나 Logto를 구성할 때 더 많은 스코프를
- 추가할 수 있습니다:
+ 기본적으로 Logto SDK는 항상 세 가지 스코프 (Scope)를 요청합니다: `openid`, `profile`, 그리고
+ `offline_access`입니다. 이 기본 스코프 (Scope)는 제거할 수 없습니다. 하지만 Logto를 구성할 때 더
+ 많은 스코프 (Scope)를 추가할 수 있습니다:
{props.configScopesCode}
diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/README.mdx b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/README.mdx
index 783426d28d8..023daee6aa6 100644
--- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/README.mdx
+++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/README.mdx
@@ -19,16 +19,25 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
items={[
{
type: 'link',
- label: 'Reivindicações personalizadas de token',
+ label: 'Token de acesso personalizado',
href: '/developers/custom-token-claims',
- description: 'Expanda as capacidades do controle de acesso anexando reivindicações adicionais, o que pode ajudar a alcançar ABAC ou rejeitar a emissão de tokens.',
+ description: 'Use scripts personalizados para anexar reivindicações adicionais aos tokens de acesso, habilitando ABAC ou rejeitando a emissão do token.',
customProps: {
icon: ,
}
},
{
type: 'link',
- label: 'Imitação de usuário (User impersonation)',
+ label: 'Token de ID personalizado',
+ href: '/developers/custom-id-token',
+ description: 'Controle quais reivindicações estendidas são incluídas nos tokens de ID, seguindo a especificação OIDC.',
+ customProps: {
+ icon: ,
+ }
+ },
+ {
+ type: 'link',
+ label: 'Imitação de usuário',
href: '/developers/user-impersonation',
description: 'Permita que usuários autorizados atuem temporariamente em nome de usuários finais, útil para solução de problemas, suporte ao cliente e tarefas administrativas.',
customProps: {
@@ -39,7 +48,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
/>
```
-## Recursos genéricos para desenvolvedores \{#generics-for-developers}
+## Genéricos para desenvolvedores \{#generics-for-developers}
```mdx-code-block
,
}
@@ -75,7 +84,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: 'Convenção do SDK',
href: '/developers/',
- description: 'Apresente as estruturas de dados, finalidades e métodos no SDK, permitindo que os usuários personalizem o SDK para se adequar a vários cenários de negócios.',
+ description: 'Apresente as estruturas de dados, finalidades e métodos no SDK, permitindo que os usuários personalizem o SDK para se adequar a diversos cenários de negócio.',
customProps: {
icon: ,
}
diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
index 223a71c4ad2..823a67e4e7d 100644
--- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
+++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
@@ -1,5 +1,5 @@
---
-sidebar_position: 6
+sidebar_position: 7
---
# Logs de auditoria
@@ -26,7 +26,7 @@ Os logs do Logto oferecem detalhes abrangentes, garantindo facilidade de ação
- Carimbo de data / hora
- User-agent
-Ao manter esses registros de eventos, as organizações podem detectar possíveis riscos de segurança de forma eficaz e agir rapidamente para evitar acessos não autorizados ao sistema.
+Ao manter esses registros de eventos, as organizações podem detectar efetivamente possíveis riscos de segurança e agir rapidamente para evitar acessos não autorizados ao sistema.
Console > Gerenciamento de usuários.
2. Selecione o usuário desejado e vá para a página de detalhes.
-3. Clique em "Logs do usuário". A tabela resultante exibirá exclusivamente eventos de log realizados e acionados por aquele usuário em particular.
+3. Clique em "Logs do usuário". A tabela resultante exibirá exclusivamente eventos de log realizados e acionados por esse usuário em particular.
-## Perguntas frequentes (FAQs) \{#faqs}
+## Perguntas frequentes \{#faqs}
diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
new file mode 100644
index 00000000000..228a847158e
--- /dev/null
+++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
@@ -0,0 +1,81 @@
+---
+sidebar_position: 3
+---
+
+# Token de ID personalizado
+
+## Introdução \{#introduction}
+
+[Token de ID (ID token)](https://auth.wiki/id-token) é um tipo especial de token definido pelo protocolo [OpenID Connect (OIDC)](https://auth.wiki/openid-connect). Ele serve como uma asserção de identidade emitida pelo servidor de autorização (Logto) após um usuário ser autenticado com sucesso, carregando reivindicações sobre a identidade do usuário autenticado.
+
+Diferente dos [tokens de acesso (Access tokens)](/developers/custom-token-claims), que são usados para acessar recursos protegidos, os tokens de ID são projetados especificamente para transmitir a identidade do usuário autenticado para aplicativos clientes. Eles são [JSON Web Tokens (JWTs)](https://auth.wiki/jwt) que contêm reivindicações sobre o evento de autenticação e o usuário autenticado.
+
+## Como funcionam as reivindicações do token de ID \{#how-id-token-claims-work}
+
+No Logto, as reivindicações do token de ID são divididas em duas categorias:
+
+1. **Reivindicações OIDC padrão**: Definidas pela especificação OIDC, essas reivindicações são totalmente determinadas pelos escopos solicitados durante a autenticação.
+2. **Reivindicações estendidas**: Reivindicações estendidas pelo Logto para carregar informações adicionais de identidade, controladas por um **modelo de dupla condição** (Escopo + Alternância).
+
+```mermaid
+flowchart TD
+ A[Solicitação de autenticação do usuário] --> B{Escopos solicitados}
+ B --> C[Escopos OIDC padrão]
+ B --> D[Escopos estendidos]
+ C --> E[Reivindicações padrão incluídas no token de ID]
+ D --> F{Alternância ativada no Console?}
+ F -->|Sim| G[Reivindicações estendidas incluídas no token de ID]
+ F -->|Não| H[Reivindicações não incluídas]
+```
+
+## Reivindicações OIDC padrão \{#standard-oidc-claims}
+
+As reivindicações padrão são completamente regidas pela especificação OIDC. Sua inclusão no token de ID depende exclusivamente dos escopos que seu aplicativo solicita durante a autenticação. O Logto não oferece nenhuma opção para desabilitar ou excluir seletivamente reivindicações padrão individuais.
+
+A tabela a seguir mostra o mapeamento entre escopos padrão e suas respectivas reivindicações:
+
+| Escopo | Reivindicações |
+| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `openid` | `sub` |
+| `profile` | `name`, `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `picture`, `website`, `gender`, `birthdate`, `zoneinfo`, `locale`, `updated_at` |
+| `email` | `email`, `email_verified` |
+| `phone` | `phone_number`, `phone_number_verified` |
+| `address` | `address` |
+
+Por exemplo, se seu aplicativo solicitar os escopos `openid profile email`, o token de ID incluirá todas as reivindicações dos escopos `openid`, `profile` e `email`.
+
+## Reivindicações estendidas \{#extended-claims}
+
+Além das reivindicações OIDC padrão, o Logto estende reivindicações adicionais que carregam informações de identidade específicas do ecossistema Logto. Essas reivindicações estendidas seguem um **modelo de dupla condição** para serem incluídas no token de ID:
+
+1. **Condição de escopo**: O aplicativo deve solicitar o escopo correspondente durante a autenticação.
+2. **Alternância no Console**: O administrador deve ativar a inclusão da reivindicação no token de ID através do Logto Console.
+
+Ambas as condições devem ser satisfeitas simultaneamente. O escopo serve como declaração de acesso na camada de protocolo, enquanto a alternância serve como controle de exposição na camada de produto — suas responsabilidades são claras e não substituíveis.
+
+### Escopos e reivindicações estendidas disponíveis \{#available-extended-scopes-and-claims}
+
+| Escopo | Reivindicações | Descrição | Incluído por padrão |
+| ------------------------------------ | ------------------------------ | ----------------------------------------------- | ------------------- |
+| `custom_data` | `custom_data` | Dados personalizados armazenados no usuário | |
+| `identities` | `identities`, `sso_identities` | Identidades sociais e SSO vinculadas do usuário | |
+| `roles` | `roles` | Papéis atribuídos ao usuário | ✅ |
+| `urn:logto:scope:organizations` | `organizations` | IDs das organizações do usuário | ✅ |
+| `urn:logto:scope:organizations` | `organization_data` | Dados da organização do usuário | |
+| `urn:logto:scope:organization_roles` | `organization_roles` | Papéis do usuário nas organizações | ✅ |
+
+### Configurar no Logto Console \{#configure-in-logto-console}
+
+Para habilitar reivindicações estendidas no token de ID:
+
+1. Navegue até Console > Custom JWT.
+2. Ative as reivindicações que deseja incluir no token de ID.
+3. Certifique-se de que seu aplicativo solicite os escopos correspondentes durante a autenticação.
+
+## Recursos relacionados \{#related-resources}
+
+Token de acesso personalizado
+
+
+ OpenID Connect Core - Token de ID
+
diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
index 46e708274c8..b517219c0ce 100644
--- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
+++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
@@ -2,26 +2,26 @@
sidebar_position: 2
---
-# Reivindicações personalizadas de token
+# Token de acesso personalizado
-O Logto oferece flexibilidade para adicionar reivindicações personalizadas dentro dos tokens de acesso (JWT / Token opaco). Com esse recurso, você pode incluir informações adicionais para sua lógica de negócio, todas transmitidas com segurança nos tokens e recuperáveis via introspecção no caso de tokens opacos.
+O Logto oferece flexibilidade para adicionar reivindicações personalizadas dentro dos tokens de acesso (Token de acesso JWT / Token opaco). Com esse recurso, você pode incluir informações adicionais para sua lógica de negócio, todas transmitidas com segurança nos tokens e recuperáveis via introspecção no caso de tokens opacos.
## Introdução \{#introduction}
[Tokens de acesso (Access tokens)](https://auth.wiki/access-token) desempenham um papel fundamental no processo de autenticação (Authentication) e autorização (Authorization), carregando as informações de identidade e permissões do sujeito, e são passados entre o [servidor Logto](/concepts/core-service) (atua como servidor de autenticação ou provedor de identidade, IdP), seu servidor de serviço web (provedor de recurso) e aplicativos clientes (clientes).
-[Reivindicações de token (Token claims)](https://auth.wiki/claim) são pares chave-valor que fornecem informações sobre uma entidade ou sobre o próprio token. As reivindicações podem incluir informações do usuário, tempo de expiração do token, permissões e outros metadados relevantes para o processo de autenticação (Authentication) e autorização (Authorization).
+[Reivindicações do token (Token claims)](https://auth.wiki/claim) são pares chave-valor que fornecem informações sobre uma entidade ou sobre o próprio token. As reivindicações podem incluir informações do usuário, tempo de expiração do token, permissões e outros metadados relevantes para o processo de autenticação (Authentication) e autorização (Authorization).
Existem dois tipos de tokens de acesso no Logto:
- **JSON Web Token:** [JSON Web Token (JWT)](https://auth.wiki/jwt) é um formato popular que codifica reivindicações de forma segura e legível pelos clientes. Reivindicações comuns como `sub`, `iss`, `aud` etc. são usadas em conformidade com o protocolo OAuth 2.0 (Veja [este link](https://datatracker.ietf.org/doc/html/rfc7519#section-4) para mais detalhes). JWTs permitem que consumidores acessem diretamente as reivindicações sem etapas adicionais de validação. No Logto, tokens de acesso são emitidos no formato JWT por padrão quando um cliente inicia solicitações de autorização de recursos ou organizações específicas.
- **Token opaco (Opaque token):** Um [token opaco](http://localhost:3000/concepts/opaque-token) não é autocontido e sempre requer uma etapa adicional de validação via endpoint de [introspecção de token](https://auth.wiki/token-introspection). Apesar do formato não transparente, tokens opacos podem ajudar a obter reivindicações e serem transmitidos com segurança entre as partes. As reivindicações do token são armazenadas com segurança no servidor Logto e acessadas pelos aplicativos clientes via endpoint de introspecção de token. Tokens de acesso são emitidos no formato opaco quando nenhum recurso ou organização específica é incluído na solicitação de autorização. Esses tokens são usados principalmente para acessar o endpoint OIDC `userinfo` e outros propósitos gerais.
-Em muitos casos, as reivindicações padrão não são suficientes para atender às necessidades específicas dos seus aplicativos, seja você usando JWT ou tokens opacos. Para resolver isso, o Logto oferece flexibilidade para adicionar reivindicações personalizadas dentro dos tokens de acesso. Com esse recurso, você pode incluir informações adicionais para sua lógica de negócio, todas transmitidas com segurança nos tokens e recuperáveis via introspecção no caso de tokens opacos.
+Em muitos casos, as reivindicações padrão não são suficientes para atender às necessidades específicas de seus aplicativos, seja usando JWT ou tokens opacos. Para resolver isso, o Logto oferece flexibilidade para adicionar reivindicações personalizadas dentro dos tokens de acesso. Com esse recurso, você pode incluir informações adicionais para sua lógica de negócio, todas transmitidas com segurança nos tokens e recuperáveis via introspecção no caso de tokens opacos.
## Como funcionam as reivindicações personalizadas de token? \{#how-do-custom-token-claims-work}
-O Logto permite inserir reivindicações personalizadas no `token de acesso (access token)` através de uma função de callback `getCustomJwtClaims`. Você pode fornecer sua implementação da função `getCustomJwtClaims` para retornar um objeto de reivindicações personalizadas. O valor retornado será mesclado com o payload original do token e assinado para gerar o token de acesso final.
+O Logto permite inserir reivindicações personalizadas no `token de acesso` através de uma função de callback `getCustomJwtClaims`. Você pode fornecer sua implementação da função `getCustomJwtClaims` para retornar um objeto de reivindicações personalizadas. O valor retornado será mesclado com o payload original do token e assinado para gerar o token de acesso final.
```mermaid
sequenceDiagram
@@ -34,11 +34,11 @@ sequenceDiagram
activate IdP
IdP-->>IdP: Validar credenciais &
gerar payload bruto do token de acesso
rect var(--mermaid-rect-fill)
- note over IdP: Reivindicações personalizadas de token
- IdP->>IdP: Executar script de reivindicações personalizadas (`getCustomJwtClaims`) &
obter reivindicações extras do token
+ note over IdP: Reivindicações personalizadas do token
+ IdP->>IdP: Executar script de reivindicações personalizadas do token (`getCustomJwtClaims`) &
obter reivindicações extras do token
end
IdP-->>IdP: Mesclar payload bruto do token de acesso e reivindicações extras
- IdP-->>IdP: Assinar & criptografar payload para obter o token de acesso
+ IdP-->>IdP: Assinar & criptografar payload para obter token de acesso
deactivate IdP
IdP-->>U: Emitir token de acesso no formato JWT
par Obter serviço via API
@@ -48,12 +48,12 @@ sequenceDiagram
```
:::warning
-As reivindicações internas do Logto NÃO podem ser sobrescritas ou modificadas. As reivindicações personalizadas serão adicionadas ao token como reivindicações adicionais. Se alguma reivindicação personalizada conflitar com as reivindicações internas, essas reivindicações personalizadas serão ignoradas.
+As reivindicações internas do token do Logto NÃO podem ser sobrescritas ou modificadas. As reivindicações personalizadas serão adicionadas ao token como reivindicações adicionais. Se houver conflito entre reivindicações personalizadas e as internas, as personalizadas serão ignoradas.
:::
## Recursos relacionados \{#related-resources}
Adicione reivindicações personalizadas para tokens de acesso JWT com Logto para potencializar sua
- autorização (Authorization)
+ autorização
diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
index 80834b8484e..e3c114c3b93 100644
--- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
+++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
@@ -7,32 +7,32 @@ sidebar_position: 2
# Casos de uso comuns
-Nesta seção, forneceremos alguns exemplos para ajudar você a entender cenários onde as [reivindicações personalizadas de token](/developers/custom-token-claims) podem ser úteis, oferecendo algumas referências. Assim, quando você encontrar dificuldades no gerenciamento de acesso, poderá avaliar se as reivindicações personalizadas de token podem trazer mais conveniência.
+Nesta seção, forneceremos alguns exemplos para ajudar você a entender cenários onde [reivindicações personalizadas em tokens de acesso](/developers/custom-token-claims) podem ser úteis, oferecendo algumas referências. Assim, quando você encontrar dificuldades no gerenciamento de acesso, poderá avaliar se as reivindicações personalizadas em tokens de acesso podem trazer conveniência.
## Tornar o controle de acesso baseado em atributos (ABAC) possível \{#make-attribute-based-access-control-abac-possible}
-[Controle de acesso baseado em atributos (ABAC)](https://auth.wiki/abac) é um modelo de controle de acesso que utiliza atributos (como papéis de usuário, propriedades do recurso e condições ambientais) para tomar decisões de controle de acesso. É uma forma flexível e dinâmica de gerenciar o acesso a recursos protegidos.
+[Controle de acesso baseado em atributos (ABAC)](https://auth.wiki/abac) é um modelo de controle de acesso que utiliza atributos (como papéis de usuário, propriedades de recursos e condições ambientais) para tomar decisões de controle de acesso. É uma forma flexível e dinâmica de gerenciar o acesso a recursos protegidos.
-Suponha que você esteja desenvolvendo um aplicativo, e o lançamento do app seja dividido em duas fases: beta público e lançamento oficial. Mesmo após o lançamento oficial do app, você deseja que os usuários antigos que participaram do beta público continuem usando os recursos pagos.
+Suponha que você esteja desenvolvendo um aplicativo, e o lançamento do app seja dividido em duas fases: beta público e lançamento oficial. Mesmo após o lançamento oficial do app, você deseja que os usuários antigos que participaram do beta público continuem utilizando os recursos pagos.
Após o lançamento oficial do app, você utiliza o recurso de [controle de acesso baseado em papel (RBAC)](/authorization/role-based-access-control) do Logto para implementar o controle de acesso ao uso dos recursos pagos. Para verificar facilmente se um usuário já utilizava o app durante a fase beta pública, você pode usar o método `getCustomJwtClaims()` para adicionar uma reivindicação `createdAt` no payload do token.
Então, ao realizar o controle de acesso em suas APIs protegidas, você precisa permitir tokens de acesso que atendam a uma das seguintes condições:
1. Com o contexto RBAC, possuir o escopo para acessar recursos pagos.
-2. O campo `createdAt` ser anterior ao término da fase beta pública.
+2. O campo `createdAt` ser anterior ao horário de término da fase beta pública.
-Se não houver o recurso de reivindicações personalizadas de token, ao verificar permissões para [autorização (Authorization)](/authorization), seria necessário chamar a Management API do Logto para verificar se o usuário com o token de acesso atual possui as permissões correspondentes ao papel exigido por determinado recurso de API.
+Se não houver o recurso de reivindicações personalizadas em tokens, ao verificar permissões para [autorização](/authorization), seria necessário chamar a Management API do Logto para verificar se o usuário com o token de acesso atual possui as permissões correspondentes ao papel exigido por determinado recurso de API.
-Em um cenário semelhante, suponha que seu app exiba mensagens de aniversário na página de login se o aniversário do usuário estiver próximo. Você pode usar reivindicações personalizadas de token para adicionar um campo de aniversário ao [payload do token](/user-management/personal-access-token#example-token-exchange), que pode ser usado para determinar se uma mensagem específica deve ser exibida.
+Em um cenário semelhante, suponha que seu app exiba mensagens de aniversário na página de login se o aniversário do usuário estiver próximo. Você pode usar reivindicações personalizadas em tokens para adicionar um campo de aniversário ao [payload do token](/user-management/personal-access-token#example-token-exchange), que pode ser utilizado para determinar se uma mensagem específica deve ser exibida.
## Bloquear manualmente a emissão de tokens \{#manually-block-token-issuance}
-Suponha que Joe esteja administrando um jogo online e utilize o Logto como sistema de [gerenciamento de identidade e acesso (IAM)](https://auth.wiki/iam).
+Suponha que Joe administre um jogo online e utilize o Logto como sistema de [gerenciamento de identidade e acesso (IAM)](https://auth.wiki/iam).
-Imagine que esse jogo exige recargas para comprar tempo de jogo. Joe registra o saldo de cada usuário em seu serviço de jogo e desconta continuamente do saldo conforme o tempo de jogo é utilizado. Joe deseja forçar os jogadores a fazer logout quando o saldo da conta for esgotado, incentivando-os a recarregar.
+Imagine que esse jogo exige recargas para comprar tempo de jogo. Joe registra o saldo de cada usuário em seu serviço de jogos e faz deduções contínuas do saldo conforme o tempo de jogo é utilizado. Joe deseja forçar os jogadores a sair do jogo quando o saldo da conta for esgotado, incentivando-os a recarregar.
-Neste caso, Joe também pode usar o recurso de reivindicações personalizadas de token fornecido pelo Logto para alcançar esse objetivo:
+Neste caso, Joe também pode usar o recurso de reivindicações personalizadas em tokens fornecido pelo Logto para alcançar esse objetivo:
1. No script, uma chamada de API externa [buscar dados externos](/developers/custom-token-claims/create-script/#step-3-fetch-external-data) pode ser usada para recuperar o saldo atual do jogador no servidor de jogos do Joe.
2. Se o saldo for menor ou igual a 0, o método [`api.denyAccess()`](/developers/custom-token-claims/create-script/#api) pode ser utilizado para bloquear a emissão do token.
diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
index 4e40e3882b5..71b6bb37a01 100644
--- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
+++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
@@ -1,19 +1,19 @@
---
id: create-script
-title: Criar um script de reivindicações personalizadas de token
-sidebar_label: Criar um script de reivindicações personalizadas de token
+title: Criar um script de token de acesso personalizado
+sidebar_label: Criar um script de token de acesso personalizado
sidebar_position: 3
---
-# Criar um script de reivindicações personalizadas de token
+# Criar um script de token de acesso personalizado
-Para [adicionar reivindicações personalizadas](/developers/custom-token-claims) ao [token de acesso (Access token)](https://auth.wiki/access-token), você precisa fornecer um script que retorne um objeto contendo essas reivindicações. O script deve ser escrito como uma função `JavaScript` que retorna um objeto com as reivindicações personalizadas.
+Para [adicionar reivindicações personalizadas](/developers/custom-token-claims) ao [token de acesso](https://auth.wiki/access-token), você precisa fornecer um script que retorne um objeto contendo essas reivindicações. O script deve ser escrito como uma função `JavaScript` que retorna um objeto com as reivindicações personalizadas.
-1. Navegue até Console > JWT personalizado.
+1. Navegue até Console > JWT Personalizado.
2. Existem dois tipos diferentes de tokens de acesso para os quais você pode personalizar as reivindicações do token de acesso:
- - **Token de acesso do usuário**: O token de acesso emitido para usuários finais. Ex.: para aplicativos Web ou aplicativos móveis.
- - **Token de acesso máquina para máquina**: O token de acesso emitido para serviços ou aplicativos. Ex.: para [aplicativos máquina para máquina](/quick-starts/m2m).
+ - **Token de acesso do usuário**: O token de acesso emitido para usuários finais. Ex.: para aplicações Web ou aplicações móveis.
+ - **Token de acesso máquina para máquina**: O token de acesso emitido para serviços ou aplicativos. Ex.: para [aplicações máquina para máquina](/quick-starts/m2m).
Diferentes tipos de tokens de acesso podem ter diferentes contextos de payload do token. Você pode personalizar as reivindicações do token para cada tipo de token de acesso separadamente.
@@ -29,16 +29,16 @@ O recurso de reivindicações personalizadas de token está disponível apenas p
## Implementar a função `getCustomJwtClaims()` \{#implement-getcustomjwtclaims-function}
-Na página de detalhes do **JWT personalizado**, você encontrará o editor de script para escrever seu script de reivindicações personalizadas de token. O script deve ser uma função `JavaScript` que retorna um objeto de reivindicações personalizadas.
+Na página de detalhes do **JWT Personalizado**, você encontrará o editor de script para escrever seu script de reivindicações personalizadas de token. O script deve ser uma função `JavaScript` que retorna um objeto de reivindicações personalizadas.
## Passo 1: Edite o script \{#step-1-edit-the-script}
-Use o editor de código no lado esquerdo para modificar o script. Um `getCustomJwtClaims` padrão com um valor de retorno de objeto vazio é fornecido para você começar. Você pode modificar a função para retornar um objeto com suas próprias reivindicações personalizadas.
+Use o editor de código no lado esquerdo para modificar o script. Um `getCustomJwtClaims` padrão com valor de retorno de objeto vazio é fornecido para você começar. Você pode modificar a função para retornar um objeto com suas próprias reivindicações personalizadas.
```jsx
const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
@@ -58,9 +58,9 @@ A função `getCustomJwtClaims` recebe um objeto como parâmetro de entrada. O o
### token \{#token}
-O objeto payload do token. Este objeto contém as reivindicações originais do token e metadados que você pode precisar acessar no script.
+O objeto de payload do token. Este objeto contém as reivindicações originais do token e metadados que você pode precisar acessar no script.
-Você pode encontrar a definição de tipo detalhada do objeto payload do token e do objeto de dados do usuário no lado direito da página. O IntelliSense do editor também ajudará você a acessar corretamente essas propriedades do objeto de entrada.
+Você pode encontrar a definição de tipo detalhada do objeto de payload do token e do objeto de dados do usuário no lado direito da página. O IntelliSense do editor também ajudará você a acessar corretamente essas propriedades do objeto de entrada.
- Objeto de dados do token de acesso do usuário
| Propriedade | Descrição | Tipo |
@@ -85,12 +85,12 @@ Você pode encontrar a definição de tipo detalhada do objeto payload do token
### context (Disponível apenas para token de acesso do usuário) \{#context-only-available-for-user-access-token}
-O objeto context contém os dados do usuário e dados da concessão relevantes para o processo atual de autorização (Authorization).
+O objeto de contexto contém os dados do usuário e dados da concessão relevantes para o processo atual de autorização.
- **Objeto de dados do usuário**
- Para token de acesso do usuário, o Logto fornece contexto adicional de dados do usuário para você acessar. O objeto de dados do usuário contém todos os dados de perfil do usuário e dados de associação à organização que você pode precisar para configurar as reivindicações personalizadas. Consulte [Usuários](/user-management/user-data) e [Organizações](/organizations/organization-management#organization-data-structure) para mais detalhes.
+ Para token de acesso do usuário, o Logto fornece contexto adicional de dados do usuário para você acessar. O objeto de dados do usuário contém todos os dados do perfil do usuário e dados de associação à organização que você pode precisar para configurar as reivindicações personalizadas. Consulte [Usuários](/user-management/user-data) e [Organizações](/organizations/organization-management#organization-data-structure) para mais detalhes.
- **Objeto de dados da concessão**
- Para token de acesso do usuário concedido por troca de token de imitação, o Logto fornece contexto adicional de dados da concessão para você acessar. O objeto de dados da concessão contém o contexto personalizado do token de sujeito. Consulte [Imitação de usuário (User impersonation)](/developers/user-impersonation) para mais detalhes.
+ Para token de acesso do usuário concedido por troca de token de imitação, o Logto fornece contexto adicional de dados da concessão para você acessar. O objeto de dados da concessão contém o contexto personalizado do token de sujeito. Consulte [Imitação de usuário](/developers/user-impersonation) para mais detalhes.
- **Objeto de dados de interação do usuário**
Para um determinado token de acesso do usuário, pode haver situações em que você precise acessar os detalhes de interação do usuário para a sessão de autorização atual. Por exemplo, você pode precisar recuperar a identidade SSO corporativa do usuário usada para login. Este objeto de dados de interação do usuário contém os dados de interação mais recentes enviados pelo usuário, incluindo:
@@ -225,7 +225,7 @@ O objeto context contém os dados do usuário e dados da concessão relevantes p
```
:::note
- Pode haver vários registros de verificação no objeto de dados de interação do usuário, especialmente quando o usuário passou por vários processos de login ou registro.
+ Pode haver vários registros de verificação no objeto de dados de interação do usuário, especialmente quando o usuário passou por múltiplos processos de login ou registro.
Ex.: o usuário fez login usando um registro de verificação `Social`, depois vinculou um novo endereço de e-mail através de um registro de verificação `EmailVerificationCode` e, em seguida, verificou o status MFA com um registro de verificação `Totp`. Nesse caso, você pode precisar tratar todos os registros de verificação adequadamente em seu script.
@@ -250,7 +250,7 @@ A função `api.denyAccess()` permite negar o processo de emissão do token com
## Passo 3: Buscar dados externos \{#step-3-fetch-external-data}
-Você pode usar a função nativa do node `fetch` para buscar dados externos em seu script. A função `fetch` é baseada em promessas e permite fazer requisições HTTP para APIs externas.
+Você pode usar a função `fetch` nativa do node para buscar dados externos em seu script. A função `fetch` é baseada em promessas e permite fazer requisições HTTP para APIs externas.
```jsx
const getCustomJwtClaims = async ({ environmentVariables }) => {
@@ -269,7 +269,7 @@ const getCustomJwtClaims = async ({ environmentVariables }) => {
```
:::note
-Atenção: qualquer busca de dados externos pode introduzir latência no processo de emissão do token. Certifique-se de que a API externa seja confiável e rápida o suficiente para atender aos seus requisitos.
+Atenção, qualquer busca de dados externos pode introduzir latência no processo de emissão do token. Certifique-se de que a API externa seja confiável e rápida o suficiente para atender aos seus requisitos.
Além disso:
@@ -281,12 +281,12 @@ Além disso:
Certifique-se de testar seu script antes de salvá-lo. Clique na aba **Contexto de teste** no lado direito da página para modificar o payload de token simulado e o contexto de dados do usuário para teste.
-Clique em **Executar teste** no canto superior direito do editor para rodar o script com os dados simulados. A saída do script será exibida na gaveta **Resultado do teste**.
+Clique em **Executar teste** no canto superior direito do editor para rodar o script com os dados simulados. A saída do script será exibida no painel **Resultado do teste**.
:::note
-O resultado do teste é a saída da função `getCustomJwtClaims` com os dados simulados que você definiu ("reivindicações extras do token" obtidas após concluir o passo 3 no [diagrama de sequência](/developers/custom-token-claims/#how-do-custom-token-claims-work)). O payload real do token e o contexto de dados do usuário serão diferentes quando o script for executado no processo de emissão do token.
+O resultado do teste é a saída da função `getCustomJwtClaims` com os dados simulados que você definiu ("reivindicações extras do token" obtidas após completar o passo 3 no [diagrama de sequência](/developers/custom-token-claims/#how-do-custom-token-claims-work)). O payload real do token e o contexto de dados do usuário serão diferentes quando o script for executado no processo de emissão do token.
:::
Clique no botão **Criar** para salvar o script. O script de reivindicações personalizadas de token será salvo e aplicado ao processo de emissão do token de acesso.
diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
index ae09c435efb..a986632af6a 100644
--- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
+++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
@@ -1,34 +1,34 @@
---
id: sdk-conventions
-title: Convenções do SDK da plataforma
-sidebar_label: Convenções do SDK da plataforma
-sidebar_position: 7
+title: Convenções de SDK de plataforma
+sidebar_label: Convenções de SDK de plataforma
+sidebar_position: 8
---
-# Convenções do SDK da plataforma
+# Convenções de SDK de plataforma
-Logto fornece um serviço de autenticação web muito poderoso e flexível.
+Logto oferece um serviço de autenticação web muito poderoso e flexível.
No uso prático dos serviços do Logto, para conveniência, muitas vezes é necessário que os desenvolvedores integrem o SDK do Logto em seus próprios aplicativos cliente para gerenciar o status de login do usuário, permissões e mais.
Você pode encontrar SDKs para todas as linguagens de programação / frameworks suportados pelo Logto [aqui](/quick-starts).
-Se você não tiver sorte e não encontrar o SDK que deseja, aqui está uma convenção que você pode seguir para implementar o SDK para a linguagem de programação desejada, facilitando o uso dos serviços do Logto.
+Se você não tiver sorte e não encontrar o SDK desejado, aqui está uma convenção que você pode seguir para implementar o SDK na linguagem de programação desejada, facilitando o uso dos serviços do Logto.
Esta convenção contém três partes principais:
Estratégia de design
-Convenção do Core SDK
-Convenção do SDK da plataforma
+Convenção do SDK principal
+Convenção do SDK de plataforma
## Recursos relacionados \{#related-resources}
- Implementar um SDK OIDC simples no lado do cliente
+ Implemente um SDK OIDC simples no lado do cliente
- Criando um SDK baseado em framework Node.js para Logto em minutos
+ Criando um SDK baseado em Node.js para Logto em minutos
diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
index 3a1e32fac18..2b681c9c068 100644
--- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
+++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
@@ -2,12 +2,12 @@
id: signing-keys
title: Chaves de assinatura
sidebar_label: Chaves de assinatura
-sidebar_position: 4
+sidebar_position: 5
---
# Chaves de assinatura
-As [chaves de assinatura OIDC](https://auth.wiki/signing-key) do Logto, também conhecidas como "chaves privadas OIDC" e "chaves de cookie OIDC", são as chaves de assinatura usadas para assinar JWTs ([tokens de acesso (Access tokens)](https://auth.wiki/access-token) e [tokens de ID (ID tokens)](https://auth.wiki/id-token)) e cookies de navegador nas [sessões de login (sign-in sessions)](/end-user-flows/sign-out#sign-in-session) do Logto. Essas chaves de assinatura são geradas ao inicializar o banco de dados do Logto ([open-source](/logto-oss)) ou ao criar um novo tenant ([Cloud](/logto-cloud)) e podem ser gerenciadas via [CLI](/logto-oss/using-cli) (open-source), Management APIs ou Console UI.
+As [chaves de assinatura OIDC](https://auth.wiki/signing-key) do Logto, também conhecidas como "chaves privadas OIDC" e "chaves de cookie OIDC", são as chaves de assinatura usadas para assinar JWTs ([tokens de acesso (Access tokens)](https://auth.wiki/access-token) e [tokens de ID (ID tokens)](https://auth.wiki/id-token)) e cookies de navegador nas [sessões de login](/end-user-flows/sign-out#sign-in-session) do Logto. Essas chaves de assinatura são geradas ao inicializar o banco de dados do Logto ([open-source](/logto-oss)) ou ao criar um novo tenant ([Cloud](/logto-cloud)) e podem ser gerenciadas via [CLI](/logto-oss/using-cli) (open-source), Management APIs ou Console UI.
Por padrão, o Logto utiliza o algoritmo de curva elíptica (EC) para gerar assinaturas digitais. No entanto, considerando que os usuários frequentemente precisam verificar assinaturas de JWT e muitas ferramentas antigas não suportam o algoritmo EC (apenas RSA), implementamos a funcionalidade de rotação de chaves privadas e permitimos que os usuários escolham o algoritmo de assinatura (incluindo tanto RSA quanto EC). Isso garante compatibilidade com serviços que utilizam ferramentas de verificação de assinatura desatualizadas.
@@ -18,17 +18,17 @@ Teoricamente, as chaves de assinatura não devem ser expostas e não possuem tem
## Como funciona? \{#how-it-works}
- **Chave privada OIDC**
- Ao inicializar uma instância Logto, um par de chave pública e chave privada é gerado automaticamente e registrado no provedor OIDC subjacente. Assim, quando o Logto emite um novo JWT (token de acesso ou token de ID), o token é assinado com a chave privada. Ao mesmo tempo, qualquer aplicativo cliente que recebe um JWT pode usar a chave pública correspondente para verificar a assinatura do token, garantindo que o token não foi adulterado por terceiros. A chave privada é protegida no servidor Logto. A chave pública, como o nome sugere, é pública para todos e pode ser acessada através da interface `/oidc/jwks` do endpoint OIDC. Um algoritmo de assinatura pode ser especificado ao gerar a chave privada, e o Logto utiliza o algoritmo EC (Curva Elíptica) por padrão. Os usuários administradores podem alterar o algoritmo padrão para RSA (Rivest-Shamir-Adleman) ao rotacionar as chaves privadas.
+ Ao inicializar uma instância do Logto, um par de chave pública e chave privada é gerado automaticamente e registrado no provedor OIDC subjacente. Assim, quando o Logto emite um novo JWT (token de acesso ou token de ID), o token é assinado com a chave privada. Ao mesmo tempo, qualquer aplicativo cliente que recebe um JWT pode usar a chave pública correspondente para verificar a assinatura do token, garantindo que o token não foi adulterado por terceiros. A chave privada é protegida no servidor Logto. A chave pública, como o nome sugere, é pública para todos e pode ser acessada através da interface `/oidc/jwks` do endpoint OIDC. Um algoritmo de chave de assinatura pode ser especificado ao gerar a chave privada, e o Logto utiliza o algoritmo EC (Curva Elíptica) por padrão. Os usuários administradores podem alterar o algoritmo padrão para RSA (Rivest-Shamir-Adleman) ao rotacionar as chaves privadas.
- **Chave de cookie OIDC**
- Quando o usuário inicia um fluxo de login ou cadastro, uma "sessão OIDC" será criada no servidor, assim como um conjunto de cookies no navegador. Com esses cookies, o navegador pode solicitar à Experience API do Logto para realizar uma série de interações em nome do usuário, como login, cadastro e redefinição de senha. No entanto, ao contrário dos JWTs, os cookies são assinados e verificados apenas pelo próprio serviço OIDC do Logto, não sendo necessárias medidas de criptografia assimétrica. Portanto, não temos pares de chaves públicas para as chaves de assinatura de cookies, nem algoritmos de criptografia assimétrica.
+ Quando o usuário inicia um fluxo de login ou cadastro, uma "sessão OIDC" será criada no servidor, assim como um conjunto de cookies de navegador. Com esses cookies, o navegador pode solicitar à Experience API do Logto para realizar uma série de interações em nome do usuário, como login, cadastro e redefinição de senha. No entanto, ao contrário dos JWTs, os cookies são assinados e verificados apenas pelo próprio serviço OIDC do Logto, não sendo necessárias medidas de criptografia assimétrica. Portanto, não temos chaves públicas pareadas para as chaves de assinatura de cookies, nem algoritmos de criptografia assimétrica.
## Rotacionar chaves de assinatura pela Console UI \{#rotate-signing-keys-from-console-ui}
-O Logto introduz o recurso de "Rotação de Chaves de Assinatura", que permite criar uma nova chave privada OIDC e uma chave de cookie em seu tenant.
+O Logto introduz o recurso de "Rotação de Chaves de Assinatura", que permite criar uma nova chave privada OIDC e uma nova chave de cookie em seu tenant.
1. Navegue até Console > Chaves de assinatura. Lá, você pode gerenciar tanto as chaves privadas OIDC quanto as chaves de cookie OIDC.
2. Para rotacionar a chave de assinatura, clique no botão "Rotacionar chaves privadas" ou "Rotacionar chaves de cookie". Ao rotacionar as chaves privadas, você tem a opção de alterar o algoritmo de assinatura.
-3. Você encontrará uma tabela que lista todas as chaves de assinatura em uso. Observação: Você pode excluir a chave anterior, mas não pode excluir a atual.
+3. Você encontrará uma tabela que lista todas as chaves de assinatura em uso. Observação: Você pode excluir a chave anterior, mas não pode excluir a chave atual.
| Status | Descrição |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
index 2aac19e39c1..3f7ff4edd0e 100644
--- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
+++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
@@ -1,8 +1,8 @@
---
id: user-impersonation
-title: Imitação de usuário (User impersonation)
-sidebar_label: Imitação de usuário (User impersonation)
-sidebar_position: 3
+title: Imitação de usuário
+sidebar_label: Imitação de usuário
+sidebar_position: 4
---
import TokenExchangePrerequisites from './fragments/_token-exchange-prerequisites.mdx';
@@ -32,7 +32,7 @@ sequenceDiagram
TechCorp-->>Sarah: Retorna token de sujeito
Sarah->>LogtoToken: POST /oidc/token
- Note over Sarah,LogtoToken: Troca o token de sujeito por um token de acesso
+ Note over Sarah,LogtoToken: Troca token de sujeito por token de acesso
LogtoToken-->>Sarah: Retorna token de acesso
Note over Sarah: Sarah agora pode acessar recursos como Alex
@@ -65,11 +65,11 @@ Content-Type: application/json
}
```
-Nesta API, o backend deve realizar verificações de autorização adequadas para garantir que Sarah tenha as permissões necessárias para imitar Alex.
+Nesta API, o backend deve realizar verificações adequadas de autorização para garantir que Sarah tenha as permissões necessárias para imitar Alex.
### Etapa 2: Obtendo um token de sujeito \{#step-2-obtaining-a-subject-token}
-O servidor da TechCorp, após validar a solicitação da Sarah, irá então chamar a [Management API](/integrate-logto/interact-with-management-api) do Logto para obter um token de sujeito.
+Após validar a solicitação de Sarah, o servidor da TechCorp irá chamar a [Management API](/integrate-logto/interact-with-management-api) do Logto para obter um token de sujeito.
**Requisição (servidor da TechCorp para a Management API do Logto)**
@@ -113,11 +113,11 @@ O servidor da TechCorp deve então retornar esse token de sujeito para o aplicat
-Agora, o aplicativo da Sarah troca esse token de sujeito por um token de acesso representando Alex, especificando o recurso onde o token será usado.
+Agora, o aplicativo da Sarah troca esse token de sujeito por um token de acesso representando Alex, especificando o recurso onde o token será utilizado.
**Requisição (aplicativo da Sarah para o endpoint de token do Logto)**
-Para aplicativos web tradicionais ou aplicativos máquina para máquina com segredo do aplicativo, inclua as credenciais no cabeçalho `Authorization`:
+Para aplicações web tradicionais ou aplicações máquina para máquina com segredo do aplicativo, inclua as credenciais no cabeçalho `Authorization`:
```bash
POST /oidc/token HTTP/1.1
@@ -133,7 +133,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&resource=https://api.techcorp.com/customer-data
```
-Para aplicativos single-page (SPA) ou aplicativos nativos sem segredo do aplicativo, inclua o `client_id` no corpo da requisição:
+Para aplicações single-page (SPA) ou nativas sem segredo do aplicativo, inclua o `client_id` no corpo da requisição:
```bash
POST /oidc/token HTTP/1.1
@@ -187,7 +187,7 @@ async function impersonateUser(
ticketId: string,
resource: string,
// highlight-next-line
- clientSecret?: string // Necessário para apps web tradicionais ou M2M
+ clientSecret?: string // Necessário para apps web tradicionais ou máquina para máquina
): Promise {
try {
// Etapas 1 e 2: Solicitar imitação e obter token de sujeito
@@ -272,7 +272,7 @@ async function performImpersonation(): Promise {
// highlight-end
console.log('Token de acesso de imitação para Alex:', accessToken);
} catch (error) {
- console.error('Falha ao realizar a imitação:', error);
+ console.error('Falha ao realizar imitação:', error);
}
}
@@ -283,18 +283,18 @@ void performImpersonation();
:::note
1. O token de sujeito é de curta duração e para uso único.
-2. O token de acesso de imitação não vem com um [token de atualização (Refresh token)](https://auth.wiki/refresh-token). Sarah precisará repetir esse processo se o token expirar antes de resolver o problema de Alex.
-3. O servidor backend da TechCorp deve implementar verificações de autorização adequadas para garantir que apenas membros autorizados do suporte, como Sarah, possam solicitar imitação.
+2. O token de acesso de imitação não vem com um [token de atualização (refresh token)](https://auth.wiki/refresh-token). Sarah precisará repetir esse processo se o token expirar antes de resolver o problema de Alex.
+3. O servidor backend da TechCorp deve implementar verificações adequadas de autorização para garantir que apenas membros autorizados do suporte, como Sarah, possam solicitar imitação.
:::
-## Reivindicação `act` \{#act-claim}
+## `act` claim \{#act-claim}
-Ao usar o fluxo de troca de token para imitação, o token de acesso emitido pode incluir uma reivindicação adicional `act` (ator). Essa reivindicação representa a identidade da "parte atuante" — em nosso exemplo, Sarah, que está realizando a imitação.
+Ao usar o fluxo de troca de token para imitação, o token de acesso emitido pode incluir um claim adicional `act` (ator). Esse claim representa a identidade da "parte atuante" — no nosso exemplo, Sarah, que está realizando a imitação.
-Para incluir a reivindicação `act`, o aplicativo da Sarah precisa fornecer um `actor_token` na requisição de troca de token. Esse token deve ser um token de acesso válido para Sarah com o escopo `openid`. Veja como incluí-lo na requisição de troca de token:
+Para incluir o claim `act`, o aplicativo da Sarah precisa fornecer um `actor_token` na requisição de troca de token. Esse token deve ser um token de acesso válido para Sarah com o escopo `openid`. Veja como incluí-lo na requisição de troca de token:
-Para aplicativos web tradicionais ou aplicativos máquina para máquina:
+Para aplicações web tradicionais ou aplicações máquina para máquina:
```bash
POST /oidc/token HTTP/1.1
@@ -312,7 +312,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&resource=https://api.techcorp.com/customer-data
```
-Para SPA ou aplicativos nativos, inclua o `client_id` no corpo da requisição:
+Para SPA ou aplicações nativas, inclua o `client_id` no corpo da requisição:
```bash
POST /oidc/token HTTP/1.1
@@ -330,7 +330,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&resource=https://api.techcorp.com/customer-data
```
-Se um `actor_token` for fornecido, o token de acesso resultante conterá uma reivindicação `act` assim:
+Se um `actor_token` for fornecido, o token de acesso resultante conterá um claim `act` assim:
```json
{
@@ -344,11 +344,11 @@ Se um `actor_token` for fornecido, o token de acesso resultante conterá uma rei
}
```
-Essa reivindicação `act` indica claramente que Sarah (sarah789) está agindo em nome de Alex (alex123). A reivindicação `act` pode ser útil para auditoria e rastreamento de ações de imitação.
+Esse claim `act` indica claramente que Sarah (sarah789) está atuando em nome de Alex (alex123). O claim `act` pode ser útil para auditoria e rastreamento de ações de imitação.
-## Personalizando as reivindicações do token \{#customizing-token-claims}
+## Personalizando claims do token \{#customizing-token-claims}
-O Logto permite que você [personalize as reivindicações do token](/developers/custom-token-claims) para tokens de imitação. Isso pode ser útil para adicionar contexto ou metadados adicionais ao processo de imitação, como o motivo da imitação ou o chamado de suporte associado.
+O Logto permite [personalizar os claims do token](/developers/custom-token-claims) para tokens de imitação. Isso pode ser útil para adicionar contexto ou metadados adicionais ao processo de imitação, como o motivo da imitação ou o chamado de suporte associado.
Quando o servidor da TechCorp solicita um token de sujeito à Management API do Logto, ele pode incluir um objeto `context`:
@@ -363,7 +363,7 @@ Quando o servidor da TechCorp solicita um token de sujeito à Management API do
}
```
-Esse [contexto](/developers/custom-token-claims/create-script#context-only-available-for-user-access-token) pode então ser usado em uma função `getCustomJwtClaims()` para adicionar reivindicações específicas ao token de acesso final. Veja um exemplo de como isso pode ser implementado:
+Esse [contexto](/developers/custom-token-claims/create-script#context-only-available-for-user-access-token) pode então ser usado em uma função `getCustomJwtClaims()` para adicionar claims específicos ao token de acesso final. Veja um exemplo de como isso pode ser implementado:
```tsx
const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
@@ -392,14 +392,14 @@ O token de acesso resultante que Sarah recebe pode ser assim:
"reason": "Problema de acesso ao recurso",
"support_engineer": "sarah789"
}
- // ... outras reivindicações padrão
+ // ... outros claims padrão
}
```
-Personalizando as reivindicações do token de acesso dessa forma, a TechCorp pode incluir informações valiosas sobre o contexto da imitação, facilitando a auditoria e o entendimento das atividades de imitação em seu sistema.
+Ao personalizar os claims do token de acesso dessa forma, a TechCorp pode incluir informações valiosas sobre o contexto da imitação, facilitando a auditoria e o entendimento das atividades de imitação em seu sistema.
:::note
-Tenha cautela ao adicionar reivindicações personalizadas aos seus tokens. Evite incluir informações sensíveis que possam representar riscos de segurança caso o token seja interceptado ou vazado. Os JWTs são assinados, mas não criptografados, portanto as reivindicações são visíveis para qualquer pessoa com acesso ao token.
+Tenha cautela ao adicionar claims personalizados aos seus tokens. Evite incluir informações sensíveis que possam representar riscos de segurança caso o token seja interceptado ou vazado. Os JWTs são assinados, mas não criptografados, então os claims são visíveis para qualquer pessoa com acesso ao token.
:::
## Recursos relacionados \{#related-resources}
diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
index 3d73ca5880e..e09a8a70552 100644
--- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
+++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
@@ -1,12 +1,12 @@
---
-sidebar_position: 5
+sidebar_position: 6
---
# Webhooks
O [Webhook](https://auth.wiki/webhook) do Logto fornece notificações em tempo real para vários eventos, incluindo alterações em contas de usuários, papéis, permissões, organizações, papéis de organização, permissões de organização e [interações do usuário](/end-user-flows).
-Quando um evento é acionado, o Logto envia uma solicitação HTTP para a URL do Endpoint que você fornecer, contendo informações detalhadas sobre o evento, como ID do usuário, nome de usuário, email e outros detalhes relevantes (para saber mais sobre os dados incluídos no payload e no header, consulte [Solicitação de Webhook](/developers/webhooks/webhooks-request)). Seu aplicativo pode processar essa solicitação e tomar ações personalizadas, como enviar um email ou atualizar dados no banco de dados.
+Quando um evento é acionado, o Logto envia uma solicitação HTTP para a URL do Endpoint que você fornecer, contendo informações detalhadas sobre o evento, como ID do usuário, nome de usuário, e-mail e outros detalhes relevantes (para saber mais sobre os dados incluídos no payload e no header, consulte [Solicitação de Webhook](/developers/webhooks/webhooks-request)). Seu aplicativo pode processar essa solicitação e tomar ações personalizadas, como enviar um e-mail ou atualizar dados no banco de dados.
Continuamos adicionando mais eventos com base nas necessidades dos usuários. Se você tiver requisitos específicos para o seu negócio, por favor, nos avise.
@@ -16,10 +16,10 @@ Webhooks oferecem comunicação em tempo real entre aplicativos, eliminando a ne
Aqui estão alguns exemplos de casos de uso comuns de Webhook para CIAM:
-- **Enviar emails:** Configure um Webhook para enviar um email de boas-vindas a novos usuários após o registro ou notificar administradores quando um usuário fizer login de um novo dispositivo ou local.
-- **Enviar notificações:** Configure um Webhook para acionar um assistente virtual com seu sistema CRM para fornecer suporte ao cliente em tempo real quando os usuários se cadastrarem.
-- **Realizar chamadas adicionais de API**: Configure um Webhook para verificar o acesso do usuário checando seu domínio de email ou endereço IP e, em seguida, use a Management API do Logto para atribuir papéis apropriados com permissões de recursos.
-- **Sincronização de dados:** Configure Webhook para manter o aplicativo atualizado sobre alterações como suspensões ou exclusões de contas de usuários.
+- **Enviar e-mails:** Configure um Webhook para enviar um e-mail de boas-vindas a novos usuários após o registro ou notificar administradores quando um usuário fizer login de um novo dispositivo ou local.
+- **Enviar notificações:** Configure um Webhook para acionar um assistente virtual com seu sistema CRM para fornecer suporte ao cliente em tempo real quando usuários se cadastrarem.
+- **Realizar chamadas adicionais de API**: Configure um Webhook para verificar o acesso do usuário checando seu domínio de e-mail ou endereço IP e, em seguida, use a Management API do Logto para atribuir papéis apropriados com permissões de recurso.
+- **Sincronização de dados:** Configure Webhook para manter o aplicativo atualizado sobre alterações como suspensões ou exclusões de contas de usuário.
- **Gerar relatórios**: Configure um Webhook para receber dados de atividade de login de usuários e aproveite-os para criar relatórios sobre engajamento ou padrões de uso dos usuários.
## Termos \{#terms}
@@ -31,15 +31,15 @@ Aqui estão alguns exemplos de casos de uso comuns de Webhook para CIAM:
| Webhook | Um subtipo de hook que indica a chamada de uma API com o payload do evento. |
| Digamos que um desenvolvedor queira enviar uma notificação quando o usuário fizer login por um novo dispositivo, o desenvolvedor pode adicionar um webhook que chama a API do seu serviço de segurança para o evento PostSignIn. |
-Aqui está um exemplo de habilitação de dois web hooks para o evento `PostSignIn` no Logto:
+Aqui está um exemplo de habilitação de dois webhooks para o evento `PostSignIn` no Logto:
```mermaid
graph LR
subgraph Logto
SF(Login finalizado)
PS(Pós-login)
- WH2(Web hook 2)
- WH1(Web hook 1)
+ WH2(Webhook 2)
+ WH1(Webhook 1)
end
subgraph Serviço 2
@@ -67,7 +67,7 @@ graph LR
-Embora webhooks sincronizados tornassem o fluxo de login do usuário mais suave, ainda não os suportamos (iremos suportar no futuro). Portanto, cenários que dependem de webhooks sincronizados atualmente exigem diferentes soluções alternativas. Se você tiver dúvidas, não hesite em nos contatar.
+Embora webhooks sincronizados tornariam o fluxo de login do usuário mais suave, ainda não os suportamos (mas iremos no futuro). Portanto, cenários que dependem de webhooks sincronizados atualmente exigem soluções alternativas diferentes. Se você tiver dúvidas, não hesite em nos contatar.
@@ -89,7 +89,7 @@ Veja o guia [Gerenciar alteração de permissão de usuário](/authorization/glo
-Para o endpoint que recebe Webhooks, ele deve retornar uma resposta 2xx o mais rápido possível para informar ao Logto que o Webhook foi recebido com sucesso. Como diferentes usuários têm lógicas de processamento muito distintas para Webhooks, tarefas excessivamente complexas podem levar vários segundos, causando timeout no Webhook do Logto. A melhor prática é manter sua própria fila de eventos; ao receber o Webhook do Logto, insira o evento na fila e retorne uma resposta 2xx ao Logto. Depois, deixe seu próprio worker processar as tarefas da fila passo a passo. Se o worker encontrar um erro, trate-o em seu próprio servidor.
+Para o endpoint que recebe Webhooks, ele deve retornar uma resposta 2xx o mais rápido possível para informar ao Logto que o Webhook foi recebido com sucesso. Como diferentes usuários têm lógicas de processamento muito diferentes para Webhooks, tarefas excessivamente complexas podem levar vários segundos, causando timeout do Webhook do Logto. A melhor prática é manter sua própria fila de eventos; ao receber o Webhook do Logto, insira o evento na fila e retorne uma resposta 2xx ao Logto. Em seguida, deixe seu próprio worker processar as tarefas da fila passo a passo. Se o worker encontrar um erro, trate-o em seu próprio servidor.
@@ -100,7 +100,7 @@ Para o endpoint que recebe Webhooks, ele deve retornar uma resposta 2xx o mais r
-Sim, você pode obter endereço IP, user agents, etc. no payload do Webhook. Se precisar de informações que ainda não são suportadas, você pode criar solicitações de recurso no GitHub issues ou entrar em contato conosco.
+Sim, você pode obter endereço IP, user agents, etc. no payload do Webhook. Se precisar de informações que ainda não são suportadas, você pode criar solicitações de recursos no GitHub Issues ou entrar em contato conosco.
diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx b/i18n/pt-BR/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
index 9e736c5f56f..89bb90c76c1 100644
--- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
+++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
@@ -8,27 +8,53 @@ import GearIcon from '@site/src/assets/gear.svg';
# Configurações de conta
-O Logto fornece duas coleções de APIs de configurações de conta para permitir que os usuários gerenciem suas contas e perfis armazenados no Logto.
+O Logto oferece várias maneiras para que os usuários gerenciem sua conta e perfis armazenados no Logto.
-## Usar Account APIs (Recomendado) \{#use-account-apis-recommended}
+## Usar a UI pré-construída do Account Center (Recomendado) \{#use-prebuilt-account-center-ui-recommended}
-As Account APIs do Logto são endpoints prontos para uso no front-end que permitem aos usuários finais visualizar e atualizar suas próprias informações com verificações de permissão integradas. Basta incorporá-las em seu aplicativo cliente para oferecer uma página de configurações de conta de autoatendimento elegante.
+O Logto fornece uma UI pré-construída do Account Center que oferece páginas prontas para uso, permitindo que os usuários finais gerenciem as configurações de suas contas. Esta é a maneira mais rápida de adicionar gerenciamento de conta ao seu aplicativo.
+
+Principais recursos:
+
+- **Esforço de desenvolvimento zero**: Páginas prontas para uso que funcionam imediatamente.
+- **Experiência consistente**: Combina com a aparência da experiência de login do Logto.
+- **Segurança integrada**: Todos os fluxos de verificação e medidas de segurança são tratados automaticamente.
+- **Funcionalidade completa**: Suporta atualização de email, telefone, nome de usuário, senha e configurações de MFA.
+
+,
+ },
+ },
+ ]}
+/>
+
+## Usar Account APIs \{#use-account-apis}
+
+As Account APIs do Logto são endpoints prontos para uso no front-end que permitem que os usuários finais visualizem e atualizem com segurança suas próprias informações, com verificações de permissão integradas. Use esta opção quando precisar criar uma página personalizada de configurações de conta com sua própria UI.
Principais recursos:
- **Configurações do usuário final**: Usuários gerenciam seus próprios identificadores e credenciais de login, contas sociais, métodos de MFA e dados de perfil.
- **Integração no lado do cliente**: Projetado para uso seguro e direto no seu front-end.
-- **Configuração mínima**: Endpoints prontos para uso sem necessidade de servidor personalizado.
-- **Controle de permissões**: Ative ou desative quais Account APIs estão habilitadas via configurações da Management API.
+- **Total personalização**: Construa sua própria UI aproveitando as APIs seguras do Logto.
+- **Controle de permissões**: Ative ou desative quais Account APIs estão disponíveis via configurações do Management API.
,
},
@@ -38,7 +64,7 @@ Principais recursos:
## Usar Management APIs \{#use-management-apis}
-As Management APIs formam a interface administrativa central do Logto, acessível apenas para administradores ou serviços de back-end. Elas oferecem máxima flexibilidade e controle total de CRUD sobre cada conta de usuário, permitindo que você construa ferramentas de gerenciamento personalizadas. Se você precisa de um portal de autoatendimento totalmente personalizado ou recursos de gerenciamento de usuários não padronizados, pode expor endpoints selecionados da Management API por trás de sua própria camada “Account API” e protegê-los com a lógica de autenticação do seu negócio.
+As Management APIs formam a interface administrativa central do Logto, acessível apenas para administradores ou serviços de back-end. Elas oferecem máxima flexibilidade e controle total de CRUD sobre cada conta de usuário, permitindo que você construa ferramentas de gerenciamento personalizadas. Se você precisa de um portal de autoatendimento totalmente personalizado ou recursos não padronizados de gerenciamento de usuários, pode expor endpoints selecionados do Management API por trás da sua própria camada “Account API” e protegê-los com a lógica de autenticação do seu negócio.
Principais recursos:
@@ -50,10 +76,10 @@ Principais recursos:
items={[
{
type: 'link',
- label: 'Usar Management APIs do Logto',
+ label: 'Usar as Management APIs do Logto',
href: '/end-user-flows/account-settings/by-management-api',
description:
- 'Saiba mais sobre como usar as Management APIs para construir sua própria página de configurações de conta.',
+ 'Saiba mais sobre como usar as Management APIs de usuário para construir sua própria página de configurações de conta.',
customProps: {
icon: ,
},
@@ -61,13 +87,14 @@ Principais recursos:
]}
/>
-## Account API vs. Management API \{#account-api-vs-management-api}
+## Comparação das opções de configurações de conta \{#comparison-of-account-settings-options}
-| Recurso | Account APIs | Management APIs |
-| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **Usuário pretendido** | Usuários finais | Administradores / Desenvolvedores |
-| **Contexto de acesso** | Lado do cliente / front-end | Lado do servidor / back-end |
-| **Modelo de permissão** | Ative ou desative quais Account APIs estão habilitadas via Management API. | Totalmente personalizável pelos desenvolvedores |
-| **Recursos suportados** | Visualizar, atualizar e excluir: nome de usuário, email, telefone, senha, contas sociais, MFA, perfil | Todas as configurações básicas + Excluir / suspender / restaurar conta, tokens de acesso pessoal, imitação de usuário, conectar apps OAuth, etc. |
-| **Complexidade de configuração** | Muito baixa (plug-and-play) | Média a alta (requer implementação personalizada) |
-| **Quando usar** | Para lançar rapidamente uma página de configurações de conta segura e de autoatendimento no seu app cliente com configuração mínima. | Quando as Account APIs não atendem às suas necessidades. Ex.: para lógica complexa de exclusão de conta, ações de alto risco ou construção de ferramentas de back-office. |
+| Recurso | UI pré-construída do Account Center | Account APIs | Management APIs |
+| -------------------------------- | --------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **Usuário pretendido** | Usuários finais | Usuários finais | Admins / Desenvolvedores |
+| **Contexto de acesso** | Redirecionamento para páginas hospedadas pelo Logto | Lado do cliente / front-end | Lado do servidor / back-end |
+| **Modelo de permissão** | Ative ou desative campos via configurações do Account Center | Ative ou desative quais Account APIs estão disponíveis via Management API | Totalmente personalizável pelos desenvolvedores |
+| **Recursos suportados** | Atualizar: email, telefone, nome de usuário, senha, MFA (TOTP, passkeys, códigos de backup) | Visualizar, atualizar e excluir: nome de usuário, email, telefone, senha, contas sociais, MFA, perfil | Todas as configurações básicas + Excluir / suspender / restaurar conta, tokens de acesso pessoal, imitação de usuário, conectar apps OAuth, etc. |
+| **Personalização de UI** | Herda a marca da experiência de login | Total personalização (construa sua própria UI) | Total personalização (construa sua própria UI) |
+| **Complexidade de configuração** | Nenhuma (basta linkar para as páginas pré-construídas) | Baixa (use as APIs com sua UI) | Média a alta (requer implementação personalizada) |
+| **Quando usar** | Para a maneira mais rápida de adicionar gerenciamento de conta sem construir páginas personalizadas | Quando você precisa de UI personalizada mas quer aproveitar as APIs seguras do Logto | Quando as Account APIs não atendem às suas necessidades. Ex.: lógica complexa de exclusão de conta, ações de alto risco ou ferramentas de back-office |
diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx b/i18n/pt-BR/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
new file mode 100644
index 00000000000..b9031603a3d
--- /dev/null
+++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
@@ -0,0 +1,152 @@
+---
+description: Saiba como usar a interface pré-construída do Account Center do Logto para permitir que os usuários gerenciem suas contas
+sidebar_position: 2
+---
+
+# Configurações de conta pela interface pré-construída do Account Center
+
+## O que é a interface pré-construída do Account Center \{#what-is-the-prebuilt-account-center-ui}
+
+O Logto oferece uma interface pré-construída do Account Center que disponibiliza páginas prontas para uso, permitindo que os usuários finais gerenciem as configurações de suas contas. Essa interface pré-construída é hospedada pelo Logto e lida com tarefas comuns de gerenciamento de conta, incluindo:
+
+- Atualização do endereço de email
+- Atualização do número de telefone
+- Atualização do nome de usuário
+- Definição ou atualização de senha
+- Gerenciamento das configurações de MFA (aplicativo autenticador TOTP, passkeys, códigos de backup)
+
+A interface pré-construída do Account Center foi projetada para funcionar perfeitamente com seu aplicativo, proporcionando uma experiência de usuário consistente sem a necessidade de criar páginas personalizadas de gerenciamento de conta.
+
+## Benefícios de usar a interface pré-construída \{#benefits-of-using-the-prebuilt-ui}
+
+- **Esforço de desenvolvimento zero**: Páginas prontas para uso que funcionam imediatamente
+- **Experiência consistente**: Combina com o visual e a experiência de login do Logto
+- **Segurança integrada**: Todos os fluxos de verificação e medidas de segurança são tratados automaticamente
+- **Sempre atualizada**: Novos recursos e melhorias de segurança ficam disponíveis automaticamente
+
+## Páginas disponíveis \{#available-pages}
+
+A interface pré-construída do Account Center oferece as seguintes páginas, todas acessíveis pelo caminho `/account` do endpoint do seu tenant Logto:
+
+| Caminho | Descrição |
+| -------------------------------- | ---------------------------------------- |
+| `/account/email` | Atualizar endereço de email principal |
+| `/account/phone` | Atualizar número de telefone principal |
+| `/account/username` | Atualizar nome de usuário |
+| `/account/password` | Definir ou atualizar senha |
+| `/account/passkey/add` | Adicionar nova passkey (WebAuthn) |
+| `/account/passkey/manage` | Visualizar e gerenciar passkeys |
+| `/account/authenticator-app` | Configurar aplicativo autenticador TOTP |
+| `/account/backup-codes/generate` | Gerar novos códigos de backup |
+| `/account/backup-codes/manage` | Visualizar e gerenciar códigos de backup |
+
+Por exemplo, se o endpoint do seu tenant for `https://example.logto.app`, a página de atualização de email estará disponível em `https://example.logto.app/account/email`.
+
+## Como usar a interface pré-construída \{#how-to-use-the-prebuilt-ui}
+
+### Passo 1: Ative o Account API \{#step-1-enable-account-api}
+
+A interface pré-construída do Account Center depende do Account API. Navegue até Console > Sign-in & account > Account center e ative o Account API.
+
+Configure as permissões dos campos conforme necessário:
+
+- Defina campos como `Edit` para permitir que os usuários os modifiquem
+- Defina campos como `ReadOnly` se os usuários só puderem visualizá-los
+- Defina campos como `Off` para ocultá-los completamente
+
+### Passo 2: Vincule as páginas pré-construídas ao seu aplicativo \{#step-2-link-to-prebuilt-pages}
+
+Para usar a interface pré-construída do Account Center, você precisa redirecionar os usuários do seu aplicativo para as páginas apropriadas do Logto. Existem duas abordagens:
+
+#### Abordagem A: Link direto com parâmetro de redirecionamento \{#approach-a-direct-linking}
+
+Adicione links em seu aplicativo que redirecionem os usuários para as páginas pré-construídas. Inclua um parâmetro de consulta `redirect` para trazer os usuários de volta ao seu app após concluírem a ação:
+
+```
+https://[tenant-id].logto.app/account/email?redirect=https://your-app.com/settings
+```
+
+Quando os usuários concluírem a atualização do email, serão redirecionados de volta para `https://your-app.com/settings`.
+
+#### Abordagem B: Incorporando no fluxo de configurações de conta \{#approach-b-embedding}
+
+Você pode integrar as páginas pré-construídas ao fluxo de configurações de conta já existente:
+
+1. Na página de configurações de conta do seu app, exiba as informações atuais do usuário
+2. Forneça botões "Editar" ou "Atualizar" que direcionem para as páginas pré-construídas correspondentes
+3. Após o usuário concluir a ação, ele será redirecionado de volta ao seu app
+
+Exemplo de implementação:
+
+```tsx
+function AccountSettings() {
+ const tenantEndpoint = 'https://example.logto.app';
+ const redirectUrl = encodeURIComponent(window.location.href);
+
+ return (
+
+
Configurações da Conta
+
+
+
+
+
+
+
+ );
+}
+```
+
+### Passo 3: Lide com os redirecionamentos de sucesso \{#step-3-handle-success-redirects}
+
+Após os usuários concluírem uma ação, eles serão redirecionados para a URL especificada com um parâmetro de consulta opcional `show_success`. Você pode usar isso para exibir uma mensagem de sucesso:
+
+```tsx
+function SettingsPage() {
+ const searchParams = new URLSearchParams(window.location.search);
+ const showSuccess = searchParams.get('show_success');
+
+ return (
+
+ {showSuccess === 'email' &&
Email atualizado com sucesso!
}
+ {showSuccess === 'password' &&
Senha atualizada com sucesso!
}
+ {/* ... resto da sua página de configurações */}
+
+ );
+}
+```
+
+## Considerações de segurança \{#security-considerations}
+
+A interface pré-construída do Account Center inclui medidas de segurança integradas:
+
+- **Verificação de identidade**: Antes de realizar alterações sensíveis (email, telefone, senha, MFA), os usuários devem verificar sua identidade usando a senha atual ou outro método de verificação existente
+- **Códigos de verificação**: Atualizações de email e telefone exigem códigos de verificação enviados para o novo endereço/número
+- **Validação de sessão**: Todas as operações validam a sessão do usuário para evitar acessos não autorizados
+
+## Opções de personalização \{#customization-options}
+
+A interface pré-construída do Account Center herda a personalização das configurações da sua experiência de login, incluindo:
+
+- Logo e cores
+- Modo escuro/claro
+- Configurações de idioma
+
+Se você precisar de mais personalização além do que a interface pré-construída oferece, considere usar o [Account API](/end-user-flows/account-settings/by-account-api) para construir suas próprias páginas personalizadas de gerenciamento de conta.
+
+## Recursos relacionados \{#related-resources}
+
+- [Configurações de conta pelo Account API](/end-user-flows/account-settings/by-account-api) - Crie gerenciamento de conta personalizado com controle total via API
+- [Configurações de conta pelo Management API](/end-user-flows/account-settings/by-management-api) - Gerenciamento de conta em nível administrativo
+- [Configuração de MFA](/end-user-flows/mfa) - Configure autenticação multifatorial
diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/introduction/README.mdx b/i18n/pt-BR/docusaurus-plugin-content-docs/current/introduction/README.mdx
index 861e4b4856c..d7436017907 100644
--- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/introduction/README.mdx
+++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/introduction/README.mdx
@@ -109,7 +109,7 @@ Bem-vindo à documentação do Logto! O Logto é uma solução de gerenciamento
/>
,
@@ -143,6 +143,10 @@ Bem-vindo à documentação do Logto! O Logto é uma solução de gerenciamento
icon: ,
docId: 'developers/custom-token-claims/README',
},
+ {
+ icon: ,
+ docId: 'developers/custom-id-token/README',
+ },
{
icon: ,
docId: 'developers/user-impersonation',
@@ -169,7 +173,7 @@ As capacidades do Logto são construídas sobre quatro pilares principais, forma
label: 'Logto Console',
href: 'https://cloud.logto.io',
description:
- 'Uma interface web para configurar e gerenciar recursos, oferecendo uma configuração rápida para a experiência de login e fácil gerenciamento de identidades.',
+ 'Uma interface web para configurar e gerenciar recursos, oferecendo uma configuração rápida para experiência de login e fácil gerenciamento de identidades.',
customProps: {
icon: ,
},
@@ -199,7 +203,7 @@ As capacidades do Logto são construídas sobre quatro pilares principais, forma
label: 'SDKs',
href: '/quick-starts',
description:
- 'Explore nossos tutoriais completos e SDKs para começar rapidamente com seu framework preferido.',
+ 'Explore nossos tutoriais ponta a ponta e SDKs para começar rapidamente com seu framework preferido.',
customProps: {
icon: ,
},
@@ -236,7 +240,7 @@ As capacidades do Logto são construídas sobre quatro pilares principais, forma
label: 'Open source (OSS)',
href: '/logto-oss',
description:
- 'Hospede o Logto por conta própria em sua infraestrutura. Visite nossa página no GitHub e a seção open-source para mais detalhes.',
+ 'Hospede o Logto em sua própria infraestrutura. Visite nossa página no GitHub e a seção de código aberto para mais detalhes.',
customProps: {
icon: ,
},
diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
index 1eda22d22fe..dd8617adbf9 100644
--- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
+++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
@@ -1,22 +1,24 @@
Aqui está a lista de escopos suportados e as reivindicações correspondentes:
-**`openid`**
+### Escopos OIDC padrão {#standard-oidc-scopes}
-| Nome da reivindicação | Tipo | Descrição | Precisa de userinfo? |
-| --------------------- | -------- | -------------------------------- | -------------------- |
-| sub | `string` | O identificador único do usuário | Não |
+**`openid`** (padrão)
-**`profile`**
+| Nome da reivindicação | Tipo | Descrição |
+| --------------------- | -------- | -------------------------------- |
+| sub | `string` | O identificador único do usuário |
-| Nome da reivindicação | Tipo | Descrição | Precisa de userinfo? |
-| --------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------- |
-| name | `string` | O nome completo do usuário | Não |
-| username | `string` | O nome de usuário do usuário | Não |
-| picture | `string` | URL da foto de perfil do usuário final. Esta URL DEVE se referir a um arquivo de imagem (por exemplo, um arquivo de imagem PNG, JPEG ou GIF), em vez de uma página da Web contendo uma imagem. Observe que esta URL DEVE referenciar especificamente uma foto de perfil do usuário final adequada para exibição ao descrever o usuário final, em vez de uma foto arbitrária tirada pelo usuário final. | Não |
-| created_at | `number` | Momento em que o usuário final foi criado. O tempo é representado como o número de milissegundos desde a época Unix (1970-01-01T00:00:00Z). | Não |
-| updated_at | `number` | Momento em que as informações do usuário final foram atualizadas pela última vez. O tempo é representado como o número de milissegundos desde a época Unix (1970-01-01T00:00:00Z). | Não |
+**`profile`** (padrão)
-Outras [reivindicações padrão](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) incluem `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `website`, `gender`, `birthdate`, `zoneinfo` e `locale` também serão incluídas no escopo `profile` sem a necessidade de solicitar o endpoint userinfo. Uma diferença em relação às reivindicações acima é que essas reivindicações só serão retornadas quando seus valores não forem vazios, enquanto as reivindicações acima retornarão `null` se os valores estiverem vazios.
+| Nome da reivindicação | Tipo | Descrição |
+| --------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| name | `string` | O nome completo do usuário |
+| username | `string` | O nome de usuário do usuário |
+| picture | `string` | URL da foto de perfil do usuário final. Esta URL DEVE se referir a um arquivo de imagem (por exemplo, um arquivo de imagem PNG, JPEG ou GIF), em vez de uma página da Web contendo uma imagem. Observe que esta URL DEVE referenciar especificamente uma foto de perfil do usuário final adequada para exibição ao descrever o usuário final, em vez de uma foto arbitrária tirada pelo usuário final. |
+| created_at | `number` | Momento em que o usuário final foi criado. O tempo é representado como o número de milissegundos desde a época Unix (1970-01-01T00:00:00Z). |
+| updated_at | `number` | Momento em que as informações do usuário final foram atualizadas pela última vez. O tempo é representado como o número de milissegundos desde a época Unix (1970-01-01T00:00:00Z). |
+
+Outras [reivindicações padrão](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) incluem `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `website`, `gender`, `birthdate`, `zoneinfo` e `locale`, que também serão incluídas no escopo `profile` sem a necessidade de solicitar o endpoint userinfo. Uma diferença em relação às reivindicações acima é que essas reivindicações só serão retornadas quando seus valores não forem vazios, enquanto as reivindicações acima retornarão `null` se os valores estiverem vazios.
:::note
Diferente das reivindicações padrão, as reivindicações `created_at` e `updated_at` usam milissegundos em vez de segundos.
@@ -24,47 +26,55 @@ Diferente das reivindicações padrão, as reivindicações `created_at` e `upda
**`email`**
-| Nome da reivindicação | Tipo | Descrição | Precisa de userinfo? |
-| --------------------- | --------- | ------------------------------------- | -------------------- |
-| email | `string` | O endereço de email do usuário | Não |
-| email_verified | `boolean` | Se o endereço de email foi verificado | Não |
+| Nome da reivindicação | Tipo | Descrição |
+| --------------------- | --------- | ------------------------------------- |
+| email | `string` | O endereço de email do usuário |
+| email_verified | `boolean` | Se o endereço de email foi verificado |
**`phone`**
-| Nome da reivindicação | Tipo | Descrição | Precisa de userinfo? |
-| --------------------- | --------- | -------------------------------------- | -------------------- |
-| phone_number | `string` | O número de telefone do usuário | Não |
-| phone_number_verified | `boolean` | Se o número de telefone foi verificado | Não |
+| Nome da reivindicação | Tipo | Descrição |
+| --------------------- | --------- | -------------------------------------- |
+| phone_number | `string` | O número de telefone do usuário |
+| phone_number_verified | `boolean` | Se o número de telefone foi verificado |
**`address`**
-Consulte o [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#AddressClaim) para detalhes da reivindicação de endereço.
+Consulte o [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#AddressClaim) para detalhes sobre a reivindicação de endereço.
+
+:::info
+Escopos marcados como **(padrão)** são sempre solicitados pelo SDK do Logto. As reivindicações sob escopos OIDC padrão são sempre incluídas no token de ID quando o escopo correspondente é solicitado — elas não podem ser desativadas.
+:::
+
+### Escopos estendidos {#extended-scopes}
+
+Os seguintes escopos são estendidos pelo Logto e retornarão reivindicações através do [endpoint userinfo](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo). Essas reivindicações também podem ser configuradas para serem incluídas diretamente no token de ID através de Console > Custom JWT. Veja [Token de ID personalizado](/developers/custom-id-token) para mais detalhes.
**`custom_data`**
-| Nome da reivindicação | Tipo | Descrição | Precisa de userinfo? |
-| --------------------- | -------- | ---------------------------------- | -------------------- |
-| custom_data | `object` | Os dados personalizados do usuário | Sim |
+| Nome da reivindicação | Tipo | Descrição | Incluído no token de ID por padrão |
+| --------------------- | -------- | ---------------------------------- | ---------------------------------- |
+| custom_data | `object` | Os dados personalizados do usuário | |
**`identities`**
-| Nome da reivindicação | Tipo | Descrição | Precisa de userinfo? |
-| --------------------- | -------- | ---------------------------------------- | -------------------- |
-| identities | `object` | As identidades vinculadas do usuário | Sim |
-| sso_identities | `array` | As identidades SSO vinculadas do usuário | Sim |
+| Nome da reivindicação | Tipo | Descrição | Incluído no token de ID por padrão |
+| --------------------- | -------- | ---------------------------------------- | ---------------------------------- |
+| identities | `object` | As identidades vinculadas do usuário | |
+| sso_identities | `array` | As identidades SSO vinculadas do usuário | |
**`roles`**
-| Nome da reivindicação | Tipo | Descrição | Precisa de userinfo? |
-| --------------------- | ---------- | -------------------- | -------------------- |
-| roles | `string[]` | Os papéis do usuário | Não |
+| Nome da reivindicação | Tipo | Descrição | Incluído no token de ID por padrão |
+| --------------------- | ---------- | -------------------- | ---------------------------------- |
+| roles | `string[]` | Os papéis do usuário | ✅ |
**`urn:logto:scope:organizations`**
-| Nome da reivindicação | Tipo | Descrição | Precisa de userinfo? |
-| --------------------- | ---------- | ----------------------------------------------------- | -------------------- |
-| organizations | `string[]` | Os IDs das organizações às quais o usuário pertence | Não |
-| organization_data | `object[]` | Os dados das organizações às quais o usuário pertence | Sim |
+| Nome da reivindicação | Tipo | Descrição | Incluído no token de ID por padrão |
+| --------------------- | ---------- | ----------------------------------------------------- | ---------------------------------- |
+| organizations | `string[]` | Os IDs das organizações às quais o usuário pertence | ✅ |
+| organization_data | `object[]` | Os dados das organizações às quais o usuário pertence | |
:::note
Essas reivindicações de organização também podem ser recuperadas via endpoint userinfo ao usar um [token opaco](/concepts/opaque-token). No entanto, tokens opacos não podem ser usados como tokens de organização para acessar recursos específicos da organização. Veja [Token opaco e organizações](/concepts/opaque-token#opaque-token-and-organizations) para mais detalhes.
@@ -72,10 +82,6 @@ Essas reivindicações de organização também podem ser recuperadas via endpoi
**`urn:logto:scope:organization_roles`**
-| Nome da reivindicação | Tipo | Descrição | Precisa de userinfo? |
-| --------------------- | ---------- | ------------------------------------------------------------------------------------------------ | -------------------- |
-| organization_roles | `string[]` | Os papéis da organização aos quais o usuário pertence no formato `:` | Não |
-
----
-
-Considerando desempenho e o tamanho dos dados, se "Precisa de userinfo?" for "Sim", isso significa que a reivindicação não aparecerá no token de ID, mas será retornada na resposta do [endpoint userinfo](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo).
+| Nome da reivindicação | Tipo | Descrição | Incluído no token de ID por padrão |
+| --------------------- | ---------- | ------------------------------------------------------------------------------------------------ | ---------------------------------- |
+| organization_roles | `string[]` | Os papéis da organização aos quais o usuário pertence no formato `:` | ✅ |
diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx b/i18n/pt-BR/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
index b53b079ed7a..384f5b6cc4d 100644
--- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
+++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
@@ -1,19 +1,21 @@
import ScopeClaimList from './_scope-claim-list.md';
-Logto usa as [convenções de escopos e reivindicações](https://openid.net/specs/openid-connect-core-1_0.html#Claims) do OIDC para definir os escopos e reivindicações para recuperar informações do usuário do Token de ID e do endpoint userinfo do OIDC. Tanto "escopo" quanto "reivindicação" são termos das especificações OAuth 2.0 e OpenID Connect (OIDC).
+O Logto utiliza as convenções de [escopos e reivindicações (scopes and claims) do OIDC](https://openid.net/specs/openid-connect-core-1_0.html#Claims) para definir os escopos e reivindicações para obtenção de informações do usuário a partir do Token de ID (ID token) e do endpoint userinfo do OIDC. Tanto "escopo (Scope)" quanto "reivindicação (Claim)" são termos das especificações do OAuth 2.0 e OpenID Connect (OIDC).
-{/* TODO: Remove abaixo */}
+Para reivindicações padrão do OIDC, a inclusão no Token de ID é estritamente determinada pelos escopos solicitados. Reivindicações estendidas (como `custom_data` e `organizations`) podem ser configuradas adicionalmente para aparecer no Token de ID através das configurações de Token de ID personalizado.
+
+{/* TODO: Remover abaixo */}
{props.configScopesCode &&
<>
-Em resumo, quando você solicita um escopo, você obterá as reivindicações correspondentes nas informações do usuário. Por exemplo, se você solicitar o escopo `email`, você obterá os dados `email` e `email_verified` do usuário.
+Resumidamente, ao solicitar um escopo, você receberá as reivindicações correspondentes nas informações do usuário. Por exemplo, se você solicitar o escopo `email`, receberá os dados `email` e `email_verified` do usuário.
- Por padrão, o Logto SDK sempre solicitará três escopos: `openid`, `profile` e `offline_access`, e
- não há como remover esses escopos padrão. Mas você pode adicionar mais escopos ao configurar o
+ Por padrão, o SDK do Logto sempre solicitará três escopos: `openid`, `profile` e `offline_access`,
+ e não há como remover esses escopos padrão. Mas você pode adicionar mais escopos ao configurar o
Logto:
diff --git a/i18n/th/docusaurus-plugin-content-docs/current/developers/README.mdx b/i18n/th/docusaurus-plugin-content-docs/current/developers/README.mdx
index d2f5cbf4e5d..8c86bcee3b9 100644
--- a/i18n/th/docusaurus-plugin-content-docs/current/developers/README.mdx
+++ b/i18n/th/docusaurus-plugin-content-docs/current/developers/README.mdx
@@ -1,8 +1,8 @@
# นักพัฒนา
-Logto คือบริการ [การจัดการข้อมูลระบุตัวตนและการเข้าถึง (IAM)](https://auth.wiki/iam) ที่สร้างขึ้นบนโปรโตคอล [OAuth 2](https://auth.wiki/oauth-2.0) และ [OIDC](https://auth.wiki/openid-connect) บริการ IAM เช่น Logto มักเป็นรากฐานของบริการเว็บอื่น ๆ; สถานะการอนุญาตต่าง ๆ ภายในบริการเว็บเหล่านั้นจะได้รับผลโดยตรงจาก Logto
+Logto คือบริการ [การจัดการเอกลักษณ์และการเข้าถึง (IAM)](https://auth.wiki/iam) ที่สร้างขึ้นบนโปรโตคอล [OAuth 2](https://auth.wiki/oauth-2.0) และ [OIDC](https://auth.wiki/openid-connect) บริการ IAM เช่น Logto มักเป็นรากฐานให้กับบริการเว็บอื่น ๆ; สถานะการอนุญาตต่าง ๆ ภายในบริการเหล่านั้นจะได้รับผลกระทบโดยตรงจาก Logto
-เพื่ออำนวยความสะดวกให้กับผู้ใช้ Logto จึงมีฟีเจอร์สำหรับนักพัฒนาที่ใช้บ่อยหลายรายการ
+เพื่ออำนวยความสะดวกให้กับผู้ใช้ Logto จึงมีฟีเจอร์สำหรับนักพัฒนาที่ใช้บ่อยให้เลือกใช้งาน
## เกี่ยวกับประสบการณ์การลงชื่อเข้าใช้ \{#sign-in-experience-related}
@@ -19,18 +19,27 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
items={[
{
type: 'link',
- label: 'Custom token claims',
+ label: 'โทเค็นการเข้าถึงแบบกำหนดเอง (Custom access token)',
href: '/developers/custom-token-claims',
- description: 'ขยายความสามารถของการควบคุมการเข้าถึงด้วยการแนบการอ้างสิทธิ์ (claims) เพิ่มเติม ซึ่งช่วยให้บรรลุ ABAC หรือปฏิเสธการออกโทเค็น',
+ description: 'ใช้สคริปต์กำหนดเองเพื่อแนบการอ้างสิทธิ์เพิ่มเติม (claims) ไปยังโทเค็นการเข้าถึง ช่วยให้รองรับ ABAC หรือปฏิเสธการออกโทเค็น',
customProps: {
icon: ,
}
},
{
type: 'link',
- label: 'User impersonation',
+ label: 'โทเค็น ID แบบกำหนดเอง (Custom ID token)',
+ href: '/developers/custom-id-token',
+ description: 'ควบคุมว่าจะรวมการอ้างสิทธิ์ขยาย (extended claims) ใดไว้ในโทเค็น ID ตามข้อกำหนดของ OIDC',
+ customProps: {
+ icon: ,
+ }
+ },
+ {
+ type: 'link',
+ label: 'การสวมรอยผู้ใช้ (User impersonation)',
href: '/developers/user-impersonation',
- description: 'อนุญาตให้ผู้ใช้ที่ได้รับสิทธิ์สามารถดำเนินการแทนผู้ใช้ปลายทางชั่วคราว เหมาะสำหรับการแก้ไขปัญหา การสนับสนุนลูกค้า และงานผู้ดูแลระบบ',
+ description: 'อนุญาตให้ผู้ใช้ที่ได้รับสิทธิ์สามารถปฏิบัติการแทนผู้ใช้ปลายทางชั่วคราว เหมาะสำหรับการแก้ไขปัญหา การสนับสนุนลูกค้า และงานผู้ดูแลระบบ',
customProps: {
icon: ,
}
@@ -46,9 +55,9 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
items={[
{
type: 'link',
- label: 'Signing keys',
+ label: 'คีย์สำหรับลงนาม (Signing keys)',
href: '/developers/signing-keys',
- description: 'ให้คีย์สำหรับลงนามในระดับระบบ ผ่านการจัดเก็บในตู้นิรภัยรหัสผ่าน ช่วยให้บริการยืนยันตัวตนปลอดภัยยิ่งขึ้น',
+ description: 'ให้คีย์สำหรับลงนามในระดับระบบ ผ่าน password vault เพื่อเพิ่มความปลอดภัยให้กับบริการยืนยันตัวตน',
customProps: {
icon: ,
}
@@ -57,14 +66,14 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: 'Webhooks',
href: '/developers/webhooks',
- description: 'Webhook รองรับการแจ้งเตือนแบบเรียลไทม์เกี่ยวกับข้อมูลผู้ใช้และการอัปเดตสิทธิ์ผ่าน HTTP request เพิ่มความสะดวกและความยืดหยุ่นในการเชื่อมต่อกับ Logto',
+ description: 'Webhook รองรับการแจ้งเตือนแบบเรียลไทม์เกี่ยวกับข้อมูลผู้ใช้และการอัปเดตสิทธิ์ผ่าน HTTP request เพิ่มความสะดวกและยืดหยุ่นในการเชื่อมต่อกับ Logto',
customProps: {
icon: ,
}
},
{
type: 'link',
- label: 'Audit logs',
+ label: 'บันทึกการตรวจสอบ (Audit logs)',
href: '/developers/audit-logs',
description: 'บันทึกกิจกรรมที่เกี่ยวข้องกับการยืนยันตัวตนของผู้ใช้ เพื่อช่วยในการดีบักและวิเคราะห์กิจกรรมของผู้ใช้',
customProps: {
@@ -73,7 +82,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
},
{
type: 'link',
- label: 'SDK convention',
+ label: 'แนวทางการใช้ SDK (SDK convention)',
href: '/developers/',
description: 'แนะนำโครงสร้างข้อมูล วัตถุประสงค์ และวิธีการใน SDK เพื่อให้ผู้ใช้สามารถปรับแต่ง SDK ให้เหมาะกับแต่ละกรณีธุรกิจ',
customProps: {
diff --git a/i18n/th/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx b/i18n/th/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
index 37b901e77f3..58b0797b136 100644
--- a/i18n/th/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
+++ b/i18n/th/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
@@ -1,5 +1,5 @@
---
-sidebar_position: 6
+sidebar_position: 7
---
# บันทึกการตรวจสอบ (Audit logs)
@@ -8,7 +8,7 @@ sidebar_position: 6
## ดูบันทึกทั้งหมด \{#view-all-logs}
-ไปที่ Console > บันทึกการตรวจสอบ (Audit logs) Logto จะบันทึกและจัดระเบียบเหตุการณ์การยืนยันตัวตน (authentication events) ลงในตาราง โดยจะติดตามชื่อเหตุการณ์, ผู้ใช้, แอปพลิเคชัน และเวลาที่เกิดเหตุการณ์ คุณสามารถกรองผลลัพธ์ตามชื่อเหตุการณ์และชื่อแอปพลิเคชันได้ การคลิกที่เหตุการณ์ใดเหตุการณ์หนึ่งจะให้รายละเอียดเพิ่มเติม
+ไปที่ Console > บันทึกการตรวจสอบ (Audit logs) Logto จะบันทึกและจัดระเบียบเหตุการณ์การยืนยันตัวตน (Authentication) ลงในตาราง โดยจะติดตามชื่อเหตุการณ์, ผู้ใช้, แอปพลิเคชัน และเวลาที่เกิดเหตุการณ์ คุณสามารถกรองผลลัพธ์ตามชื่อเหตุการณ์และชื่อแอปพลิเคชันได้ การคลิกที่เหตุการณ์ใดเหตุการณ์หนึ่งจะให้รายละเอียดเพิ่มเติม
:::warning
บันทึกการตรวจสอบจะบันทึกเฉพาะเหตุการณ์ที่เกิดขึ้นระหว่างกระบวนการยืนยันตัวตนของผู้ใช้เท่านั้น บันทึกการดำเนินการของ Management API จะไม่ถูกบันทึกไว้
@@ -16,39 +16,39 @@ sidebar_position: 6
## บันทึกกิจกรรมผู้ใช้ในระดับผู้เช่า (tenant) \{#capture-user-activity-at-the-tenant-level}
-บันทึกของ Logto ให้รายละเอียดที่ครบถ้วน เพื่อความสะดวกในการดำเนินการและความปลอดภัยของลูกค้า โดยจะบันทึกข้อมูลดังต่อไปนี้:
+บันทึกของ Logto ให้รายละเอียดที่ครอบคลุม เพื่อความสะดวกในการดำเนินการและความปลอดภัยของลูกค้า โดยจะบันทึกข้อมูลดังต่อไปนี้:
- ประเภทของเหตุการณ์ (ดูรายการเหตุการณ์บันทึกการตรวจสอบทั้งหมดได้ [ที่นี่](/developers/audit-logs/event-types))
- แอปพลิเคชันที่เกี่ยวข้อง
- ที่อยู่ IP
- ผู้ใช้ที่เกี่ยวข้อง
- รหัสบันทึก (Log ID)
-- เวลาที่เกิดเหตุการณ์ (Timestamp)
+- เวลาที่เกิดเหตุการณ์
- User-agent
-ด้วยการเก็บบันทึกเหตุการณ์เหล่านี้ องค์กรสามารถตรวจจับความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้นและดำเนินการแก้ไขได้อย่างทันท่วงที เพื่อป้องกันการเข้าถึงระบบโดยไม่ได้รับอนุญาต
+ด้วยการเก็บบันทึกเหตุการณ์เหล่านี้ องค์กรสามารถตรวจจับความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้นได้อย่างมีประสิทธิภาพ และดำเนินการแก้ไขได้อย่างทันท่วงทีเพื่อป้องกันการเข้าถึงระบบโดยไม่ได้รับอนุญาต
## วิเคราะห์เชิงลึกในระดับผู้ใช้ \{#perform-a-detailed-analysis-at-the-user-level}
-ผู้ดูแลระบบสามารถวิเคราะห์บันทึกที่เกี่ยวข้องกับผู้ใช้แต่ละรายได้อย่างละเอียด ช่วยให้สามารถตรวจสอบเหตุการณ์เฉพาะได้อย่างครบถ้วน ขั้นตอนการนำทางก็ง่ายและเป็นมิตรกับผู้ใช้
+ผู้ดูแลระบบสามารถวิเคราะห์บันทึกที่เกี่ยวข้องกับผู้ใช้แต่ละรายได้อย่างละเอียด ช่วยให้ตรวจสอบเหตุการณ์เฉพาะได้อย่างครบถ้วน ขั้นตอนการนำทางก็ง่ายและเป็นมิตรกับผู้ใช้
เพื่อเข้าถึงบันทึกเฉพาะผู้ใช้ ให้ทำตามขั้นตอนดังนี้:
1. ไปที่ Console > การจัดการผู้ใช้
-2. เลือกผู้ใช้ที่ต้องการและไปยังหน้ารายละเอียด
-3. คลิกที่ "บันทึกผู้ใช้ (User logs)" ตารางที่แสดงจะมีเฉพาะเหตุการณ์บันทึกที่ดำเนินการและถูกกระตุ้นโดยผู้ใช้รายนั้นเท่านั้น
+2. เลือกผู้ใช้ที่ต้องการและไปที่หน้ารายละเอียด
+3. คลิกที่ "บันทึกผู้ใช้ (User logs)" ตารางที่แสดงจะมีเฉพาะเหตุการณ์ที่ผู้ใช้รายนั้นดำเนินการหรือเป็นผู้กระตุ้นเท่านั้น
-## คำถามที่พบบ่อย (FAQs) \{#faqs}
+## คำถามที่พบบ่อย \{#faqs}
diff --git a/i18n/th/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx b/i18n/th/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
new file mode 100644
index 00000000000..395b766dbb3
--- /dev/null
+++ b/i18n/th/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
@@ -0,0 +1,81 @@
+---
+sidebar_position: 3
+---
+
+# โทเค็น ID แบบกำหนดเอง (Custom ID token)
+
+## บทนำ \{#introduction}
+
+[โทเค็น ID (ID token)](https://auth.wiki/id-token) คือโทเค็นชนิดพิเศษที่กำหนดโดยโปรโตคอล [OpenID Connect (OIDC)](https://auth.wiki/openid-connect) ทำหน้าที่เป็นการยืนยันตัวตนที่ออกโดยเซิร์ฟเวอร์การอนุญาต (Logto) หลังจากผู้ใช้ยืนยันตัวตนสำเร็จ โดยจะบรรจุการอ้างสิทธิ์ (claims) เกี่ยวกับตัวตนของผู้ใช้ที่ได้รับการยืนยัน
+
+แตกต่างจาก [โทเค็นการเข้าถึง (Access tokens)](/developers/custom-token-claims) ซึ่งใช้สำหรับเข้าถึงทรัพยากรที่ได้รับการป้องกัน โทเค็น ID ถูกออกแบบมาโดยเฉพาะเพื่อส่งข้อมูลตัวตนของผู้ใช้ที่ได้รับการยืนยันไปยังแอปพลิเคชันไคลเอนต์ โทเค็นเหล่านี้เป็น [JSON Web Tokens (JWTs)](https://auth.wiki/jwt) ที่บรรจุการอ้างสิทธิ์เกี่ยวกับเหตุการณ์การยืนยันตัวตนและผู้ใช้ที่ได้รับการยืนยัน
+
+## การทำงานของการอ้างสิทธิ์ในโทเค็น ID \{#how-id-token-claims-work}
+
+ใน Logto การอ้างสิทธิ์ในโทเค็น ID แบ่งออกเป็น 2 ประเภท:
+
+1. **การอ้างสิทธิ์ OIDC มาตรฐาน (Standard OIDC claims)**: กำหนดโดยข้อกำหนดของ OIDC การอ้างสิทธิ์เหล่านี้ขึ้นอยู่กับขอบเขต (scopes) ที่ร้องขอระหว่างการยืนยันตัวตน
+2. **การอ้างสิทธิ์แบบขยาย (Extended claims)**: การอ้างสิทธิ์ที่ Logto ขยายขึ้นเพื่อบรรจุข้อมูลตัวตนเพิ่มเติม โดยควบคุมด้วย **โมเดลสองเงื่อนไข (Scope + Toggle)**
+
+```mermaid
+flowchart TD
+ A[คำขอการยืนยันตัวตนของผู้ใช้] --> B{ขอบเขตที่ร้องขอ}
+ B --> C[ขอบเขต OIDC มาตรฐาน]
+ B --> D[ขอบเขตแบบขยาย]
+ C --> E[การอ้างสิทธิ์มาตรฐานที่รวมในโทเค็น ID]
+ D --> F{เปิด toggle ใน Console หรือไม่?}
+ F -->|ใช่| G[การอ้างสิทธิ์แบบขยายที่รวมในโทเค็น ID]
+ F -->|ไม่| H[ไม่รวมการอ้างสิทธิ์]
+```
+
+## การอ้างสิทธิ์ OIDC มาตรฐาน \{#standard-oidc-claims}
+
+การอ้างสิทธิ์มาตรฐานถูกควบคุมโดยข้อกำหนด OIDC อย่างสมบูรณ์ การรวมไว้ในโทเค็น ID ขึ้นอยู่กับขอบเขตที่แอปพลิเคชันของคุณร้องขอระหว่างการยืนยันตัวตน Logto ไม่ได้มีตัวเลือกให้ปิดหรือยกเว้นการอ้างสิทธิ์มาตรฐานแต่ละรายการ
+
+ตารางต่อไปนี้แสดงการแมประหว่างขอบเขตมาตรฐานกับการอ้างสิทธิ์ที่เกี่ยวข้อง:
+
+| ขอบเขต (Scope) | การอ้างสิทธิ์ (Claims) |
+| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `openid` | `sub` |
+| `profile` | `name`, `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `picture`, `website`, `gender`, `birthdate`, `zoneinfo`, `locale`, `updated_at` |
+| `email` | `email`, `email_verified` |
+| `phone` | `phone_number`, `phone_number_verified` |
+| `address` | `address` |
+
+ตัวอย่างเช่น หากแอปพลิเคชันของคุณร้องขอขอบเขต `openid profile email` โทเค็น ID จะรวมการอ้างสิทธิ์ทั้งหมดจากขอบเขต `openid`, `profile` และ `email`
+
+## การอ้างสิทธิ์แบบขยาย \{#extended-claims}
+
+นอกเหนือจากการอ้างสิทธิ์ OIDC มาตรฐาน Logto ยังขยายการอ้างสิทธิ์เพิ่มเติมที่บรรจุข้อมูลตัวตนเฉพาะของระบบ Logto การอ้างสิทธิ์แบบขยายเหล่านี้จะถูกเพิ่มในโทเค็น ID ตาม **โมเดลสองเงื่อนไข** ดังนี้:
+
+1. **เงื่อนไขขอบเขต (Scope condition)**: แอปพลิเคชันต้องร้องขอขอบเขตที่เกี่ยวข้องระหว่างการยืนยันตัวตน
+2. **Toggle ใน Console**: ผู้ดูแลระบบต้องเปิดการรวมการอ้างสิทธิ์นั้นในโทเค็น ID ผ่าน Logto Console
+
+ทั้งสองเงื่อนไขต้องเป็นจริงพร้อมกัน ขอบเขตทำหน้าที่เป็นการประกาศการเข้าถึงในระดับโปรโตคอล ส่วน toggle ทำหน้าที่ควบคุมการเปิดเผยในระดับผลิตภัณฑ์ — หน้าที่ของแต่ละส่วนชัดเจนและไม่สามารถทดแทนกันได้
+
+### ขอบเขตและการอ้างสิทธิ์แบบขยายที่มีให้ใช้งาน \{#available-extended-scopes-and-claims}
+
+| ขอบเขต (Scope) | การอ้างสิทธิ์ (Claims) | คำอธิบาย | รวมโดยค่าเริ่มต้น |
+| ------------------------------------ | ------------------------------ | ----------------------------------------------- | ----------------- |
+| `custom_data` | `custom_data` | ข้อมูลกำหนดเองที่เก็บในอ็อบเจกต์ผู้ใช้ | |
+| `identities` | `identities`, `sso_identities` | ข้อมูลบัญชีโซเชียลและ SSO ที่เชื่อมโยงกับผู้ใช้ | |
+| `roles` | `roles` | บทบาทที่กำหนดให้กับผู้ใช้ | ✅ |
+| `urn:logto:scope:organizations` | `organizations` | รหัสองค์กรของผู้ใช้ | ✅ |
+| `urn:logto:scope:organizations` | `organization_data` | ข้อมูลองค์กรของผู้ใช้ | |
+| `urn:logto:scope:organization_roles` | `organization_roles` | บทบาทของผู้ใช้ในแต่ละองค์กร | ✅ |
+
+### การตั้งค่าใน Logto Console \{#configure-in-logto-console}
+
+เพื่อเปิดใช้งานการอ้างสิทธิ์แบบขยายในโทเค็น ID:
+
+1. ไปที่ Console > Custom JWT
+2. เปิด toggle สำหรับการอ้างสิทธิ์ที่คุณต้องการรวมในโทเค็น ID
+3. ตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณร้องขอขอบเขตที่เกี่ยวข้องระหว่างการยืนยันตัวตน
+
+## แหล่งข้อมูลที่เกี่ยวข้อง \{#related-resources}
+
+โทเค็นการเข้าถึงแบบกำหนดเอง (Custom access token)
+
+
+ OpenID Connect Core - ID Token
+
diff --git a/i18n/th/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx b/i18n/th/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
index 4128e2af18a..3e971ac7552 100644
--- a/i18n/th/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
+++ b/i18n/th/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
@@ -2,45 +2,45 @@
sidebar_position: 2
---
-# การอ้างสิทธิ์โทเค็นแบบกำหนดเอง (Custom token claims)
+# โทเค็นการเข้าถึงแบบกำหนดเอง (Custom access token)
-Logto มอบความยืดหยุ่นในการเพิ่มการอ้างสิทธิ์แบบกำหนดเองภายในโทเค็นการเข้าถึง (โทเค็นการเข้าถึง (Access token); JWT / โทเค็นทึบ (Opaque token)). ด้วยฟีเจอร์นี้ คุณสามารถใส่ข้อมูลเพิ่มเติมสำหรับตรรกะทางธุรกิจของคุณ ซึ่งจะถูกส่งอย่างปลอดภัยในโทเค็นและสามารถดึงกลับมาได้ผ่าน introspection ในกรณีของโทเค็นทึบ
+Logto มอบความยืดหยุ่นในการเพิ่มการอ้างสิทธิ์ (claims) แบบกำหนดเองภายในโทเค็นการเข้าถึง (โทเค็นการเข้าถึง (Access token); JWT / โทเค็นทึบ (Opaque token)). ด้วยฟีเจอร์นี้ คุณสามารถใส่ข้อมูลเพิ่มเติมสำหรับตรรกะทางธุรกิจของคุณ ซึ่งจะถูกส่งอย่างปลอดภัยในโทเค็นและสามารถเรียกดูได้ผ่าน introspection ในกรณีของโทเค็นทึบ
## บทนำ \{#introduction}
-[โทเค็นการเข้าถึง (Access tokens)](https://auth.wiki/access-token) มีบทบาทสำคัญในกระบวนการการยืนยันตัวตน (Authentication) และการอนุญาต (Authorization) โดยจะบรรจุข้อมูลอัตลักษณ์และสิทธิ์ของผู้ถูกอ้างถึง (Subject) และถูกส่งต่อระหว่าง [เซิร์ฟเวอร์ Logto](/concepts/core-service) (ทำหน้าที่เป็น auth server หรือผู้ให้บริการข้อมูลระบุตัวตน (IdP)), เซิร์ฟเวอร์เว็บเซอร์วิสของคุณ (ผู้ให้บริการทรัพยากร), และแอปพลิเคชันฝั่งไคลเอนต์ (clients)
+[โทเค็นการเข้าถึง (Access tokens)](https://auth.wiki/access-token) มีบทบาทสำคัญในกระบวนการ การยืนยันตัวตน (Authentication) และ การอนุญาต (Authorization) โดยจะบรรจุข้อมูลอัตลักษณ์ของผู้ถูกอ้างถึง (Subject) และสิทธิ์ต่าง ๆ และถูกส่งต่อระหว่าง [เซิร์ฟเวอร์ Logto](/concepts/core-service) (ทำหน้าที่เป็น auth server หรือ identity provider, IdP), เซิร์ฟเวอร์เว็บเซอร์วิสของคุณ (resource provider), และแอปพลิเคชันฝั่งลูกค้า (clients)
-[การอ้างสิทธิ์โทเค็น (Token claims)](https://auth.wiki/claim) คือคู่คีย์-ค่า ที่ให้ข้อมูลเกี่ยวกับเอนทิตีหรือโทเค็นเอง การอ้างสิทธิ์อาจรวมถึงข้อมูลผู้ใช้, เวลาหมดอายุของโทเค็น, สิทธิ์ (Permissions), และเมตาดาต้าอื่น ๆ ที่เกี่ยวข้องกับกระบวนการการยืนยันตัวตน (Authentication) และการอนุญาต (Authorization)
+[การอ้างสิทธิ์ของโทเค็น (Token claims)](https://auth.wiki/claim) คือคู่คีย์-ค่า ที่ให้ข้อมูลเกี่ยวกับเอนทิตีหรือโทเค็นเอง การอ้างสิทธิ์อาจรวมถึงข้อมูลผู้ใช้ เวลาหมดอายุของโทเค็น สิทธิ์ และเมตาดาต้าอื่น ๆ ที่เกี่ยวข้องกับกระบวนการ การยืนยันตัวตน (Authentication) และ การอนุญาต (Authorization)
ใน Logto มีโทเค็นการเข้าถึงอยู่ 2 ประเภท:
-- **JSON Web Token:** [JSON Web Token (JWT)](https://auth.wiki/jwt) เป็นฟอร์แมตยอดนิยมที่เข้ารหัสการอ้างสิทธิ์ในรูปแบบที่ปลอดภัยและอ่านได้โดยไคลเอนต์ การอ้างสิทธิ์มาตรฐาน เช่น `sub`, `iss`, `aud` ฯลฯ ถูกใช้ตามโปรโตคอล OAuth 2.0 (ดู [ลิงก์นี้](https://datatracker.ietf.org/doc/html/rfc7519#section-4) สำหรับรายละเอียดเพิ่มเติม) JWT อนุญาตให้ผู้บริโภคเข้าถึงการอ้างสิทธิ์ได้โดยตรงโดยไม่ต้องตรวจสอบเพิ่มเติม ใน Logto โทเค็นการเข้าถึงจะออกในรูปแบบ JWT โดยค่าเริ่มต้นเมื่อไคลเอนต์เริ่มคำขอการอนุญาตสำหรับทรัพยากรหรือองค์กรที่ระบุ
-- **โทเค็นทึบ (Opaque token):** [โทเค็นทึบ (Opaque token)](http://localhost:3000/concepts/opaque-token) ไม่ได้บรรจุข้อมูลในตัวเองและต้องตรวจสอบเพิ่มเติมผ่าน [token introspection](https://auth.wiki/token-introspection) เสมอ แม้จะมีรูปแบบที่ไม่โปร่งใส แต่โทเค็นทึบสามารถใช้เพื่อรับการอ้างสิทธิ์และส่งต่ออย่างปลอดภัยระหว่างแต่ละฝ่าย การอ้างสิทธิ์โทเค็นจะถูกเก็บไว้อย่างปลอดภัยในเซิร์ฟเวอร์ Logto และเข้าถึงได้โดยแอปไคลเอนต์ผ่าน endpoint introspection โทเค็นการเข้าถึงจะออกในรูปแบบทึบเมื่อไม่มีการระบุทรัพยากรหรือองค์กรในคำขอการอนุญาต โทเค็นเหล่านี้ใช้หลัก ๆ สำหรับเข้าถึง OIDC `userinfo` endpoint และวัตถุประสงค์ทั่วไปอื่น ๆ
+- **JSON Web Token:** [JSON Web Token (JWT)](https://auth.wiki/jwt) เป็นรูปแบบยอดนิยมที่เข้ารหัสการอ้างสิทธิ์ในลักษณะที่ปลอดภัยและอ่านได้โดย client การอ้างสิทธิ์มาตรฐาน เช่น `sub`, `iss`, `aud` ฯลฯ ถูกใช้ตามโปรโตคอล OAuth 2.0 (ดู [ลิงก์นี้](https://datatracker.ietf.org/doc/html/rfc7519#section-4) สำหรับรายละเอียดเพิ่มเติม) JWT อนุญาตให้ผู้ใช้เข้าถึงการอ้างสิทธิ์ได้โดยตรงโดยไม่ต้องตรวจสอบเพิ่มเติม ใน Logto โทเค็นการเข้าถึงจะออกในรูปแบบ JWT โดยค่าเริ่มต้นเมื่อ client เริ่มคำขอการอนุญาตของทรัพยากรหรือองค์กรที่ระบุ
+- **โทเค็นทึบ (Opaque token):** [โทเค็นทึบ (Opaque token)](http://localhost:3000/concepts/opaque-token) ไม่ได้บรรจุข้อมูลในตัวเองและต้องตรวจสอบเพิ่มเติมผ่าน [token introspection](https://auth.wiki/token-introspection) เสมอ แม้จะมีรูปแบบที่ไม่โปร่งใส แต่โทเค็นทึบสามารถใช้รับการอ้างสิทธิ์และส่งต่ออย่างปลอดภัยระหว่างแต่ละฝ่าย การอ้างสิทธิ์ของโทเค็นจะถูกเก็บไว้อย่างปลอดภัยในเซิร์ฟเวอร์ Logto และเข้าถึงได้โดย client ผ่าน token introspection endpoint โทเค็นการเข้าถึงจะออกในรูปแบบทึบเมื่อไม่มีการระบุ resource หรือ organization ในคำขอการอนุญาต โทเค็นเหล่านี้ใช้หลัก ๆ สำหรับเข้าถึง OIDC `userinfo` endpoint และวัตถุประสงค์ทั่วไปอื่น ๆ
-ในหลายกรณี การอ้างสิทธิ์มาตรฐานอาจไม่เพียงพอต่อความต้องการเฉพาะของแอปพลิเคชันของคุณ ไม่ว่าคุณจะใช้ JWT หรือโทเค็นทึบ เพื่อแก้ไขปัญหานี้ Logto จึงมอบความยืดหยุ่นในการเพิ่มการอ้างสิทธิ์แบบกำหนดเองภายในโทเค็นการเข้าถึง ด้วยฟีเจอร์นี้ คุณสามารถใส่ข้อมูลเพิ่มเติมสำหรับตรรกะทางธุรกิจของคุณ ซึ่งจะถูกส่งอย่างปลอดภัยในโทเค็นและสามารถดึงกลับมาได้ผ่าน introspection ในกรณีของโทเค็นทึบ
+ในหลายกรณี การอ้างสิทธิ์มาตรฐานอาจไม่เพียงพอต่อความต้องการเฉพาะของแอปพลิเคชันของคุณ ไม่ว่าคุณจะใช้ JWT หรือโทเค็นทึบก็ตาม เพื่อแก้ไขปัญหานี้ Logto จึงให้ความยืดหยุ่นในการเพิ่มการอ้างสิทธิ์แบบกำหนดเองในโทเค็นการเข้าถึง คุณสามารถใส่ข้อมูลเพิ่มเติมสำหรับตรรกะทางธุรกิจของคุณ ซึ่งจะถูกส่งอย่างปลอดภัยในโทเค็นและสามารถเรียกดูได้ผ่าน introspection ในกรณีของโทเค็นทึบ
## การอ้างสิทธิ์โทเค็นแบบกำหนดเองทำงานอย่างไร? \{#how-do-custom-token-claims-work}
-Logto อนุญาตให้คุณแทรกการอ้างสิทธิ์แบบกำหนดเองลงใน `access token` ผ่าน callback function `getCustomJwtClaims` คุณสามารถกำหนดฟังก์ชัน `getCustomJwtClaims` ของคุณเองเพื่อคืนค่าเป็นอ็อบเจกต์ของการอ้างสิทธิ์แบบกำหนดเอง ค่าที่คืนมาจะถูกรวมกับ payload ดั้งเดิมของโทเค็นและเซ็นเพื่อลงนามเป็นโทเค็นการเข้าถึงสุดท้าย
+Logto อนุญาตให้คุณแทรกการอ้างสิทธิ์แบบกำหนดเองลงใน `access token` ผ่านฟังก์ชัน callback `getCustomJwtClaims` คุณสามารถกำหนดการทำงานของ `getCustomJwtClaims` เพื่อคืนค่าเป็นอ็อบเจกต์ของการอ้างสิทธิ์แบบกำหนดเอง ค่าที่คืนมาจะถูกรวมกับ payload ดั้งเดิมของโทเค็นและถูกเซ็นเพื่อลงนามเป็นโทเค็นการเข้าถึงสุดท้าย
```mermaid
sequenceDiagram
participant U as ผู้ใช้หรือ user agent
- participant IdP as Logto (ผู้ให้บริการข้อมูลระบุตัวตน (IdP))
+ participant IdP as Logto (ผู้ให้บริการข้อมูลระบุตัวตน)
participant SP as ผู้ให้บริการเซอร์วิส
autonumber
U ->> IdP: คำขอการยืนยันตัวตน (พร้อมข้อมูลรับรอง)
activate IdP
- IdP-->>IdP: ตรวจสอบข้อมูลรับรอง &
สร้าง payload โทเค็นการเข้าถึงดิบ
+ IdP-->>IdP: ตรวจสอบข้อมูลรับรอง &
สร้าง payload ดิบของโทเค็นการเข้าถึง
rect var(--mermaid-rect-fill)
note over IdP: การอ้างสิทธิ์โทเค็นแบบกำหนดเอง
IdP->>IdP: รันสคริปต์การอ้างสิทธิ์โทเค็นแบบกำหนดเอง (`getCustomJwtClaims`) &
รับการอ้างสิทธิ์โทเค็นเพิ่มเติม
end
- IdP-->>IdP: รวม payload โทเค็นการเข้าถึงดิบกับการอ้างสิทธิ์โทเค็นเพิ่มเติม
+ IdP-->>IdP: รวม payload ดิบของโทเค็นการเข้าถึงกับการอ้างสิทธิ์เพิ่มเติม
IdP-->>IdP: เซ็น & เข้ารหัส payload เพื่อรับโทเค็นการเข้าถึง
deactivate IdP
- IdP-->>U: ออกโทเค็นการเข้าถึงรูปแบบ JWT
+ IdP-->>U: ออกโทเค็นการเข้าถึงแบบ JWT
par ขอใช้บริการผ่าน API
U->>SP: คำขอบริการ (พร้อม JWT access token)
SP-->>U: ตอบกลับบริการ
@@ -48,12 +48,11 @@ sequenceDiagram
```
:::warning
-การอ้างสิทธิ์โทเค็นที่มีอยู่ใน Logto ไม่สามารถถูกเขียนทับหรือแก้ไขได้ การอ้างสิทธิ์แบบกำหนดเองจะถูกเพิ่มเข้าไปในโทเค็นเป็นการอ้างสิทธิ์เพิ่มเติม หากมีการอ้างสิทธิ์แบบกำหนดเองที่ขัดแย้งกับการอ้างสิทธิ์ที่มีอยู่ในระบบ การอ้างสิทธิ์แบบกำหนดเองนั้นจะถูกละเว้น
+การอ้างสิทธิ์ที่มีอยู่ใน Logto ไม่สามารถถูกเขียนทับหรือแก้ไขได้ การอ้างสิทธิ์แบบกำหนดเองจะถูกเพิ่มเข้าไปในโทเค็นเป็นข้อมูลเพิ่มเติม หากมีการอ้างสิทธิ์แบบกำหนดเองที่ขัดแย้งกับการอ้างสิทธิ์ที่มีอยู่ การอ้างสิทธิ์แบบกำหนดเองนั้นจะถูกละเว้น
:::
## แหล่งข้อมูลที่เกี่ยวข้อง \{#related-resources}
- เพิ่มการอ้างสิทธิ์แบบกำหนดเองสำหรับโทเค็นการเข้าถึง JWT ด้วย Logto
- เพื่อเสริมประสิทธิภาพการอนุญาตของคุณ
+ เพิ่มการอ้างสิทธิ์แบบกำหนดเองให้กับ JWT access token ด้วย Logto เพื่อยกระดับการอนุญาตของคุณ
diff --git a/i18n/th/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx b/i18n/th/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
index d4e50b168a3..d3c591b4f1b 100644
--- a/i18n/th/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
+++ b/i18n/th/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
@@ -7,34 +7,34 @@ sidebar_position: 2
# กรณีการใช้งานทั่วไป
-ในส่วนนี้ เราจะยกตัวอย่างเพื่อช่วยให้คุณเข้าใจสถานการณ์ที่ [การอ้างสิทธิ์โทเค็นแบบกำหนดเอง](/developers/custom-token-claims) สามารถนำไปใช้ได้จริง พร้อมทั้งเป็นข้อมูลอ้างอิง เมื่อคุณพบปัญหาในการจัดการการเข้าถึง คุณจะสามารถประเมินได้ว่าการอ้างสิทธิ์โทเค็นแบบกำหนดเองจะช่วยให้คุณสะดวกขึ้นหรือไม่
+ในส่วนนี้ เราจะยกตัวอย่างเพื่อช่วยให้คุณเข้าใจสถานการณ์ที่ [การอ้างสิทธิ์โทเค็นการเข้าถึงแบบกำหนดเอง](/developers/custom-token-claims) อาจมีประโยชน์ พร้อมทั้งให้ข้อมูลอ้างอิงบางประการ เพื่อที่เมื่อคุณพบปัญหาในการจัดการการเข้าถึง คุณจะสามารถประเมินได้ว่าการอ้างสิทธิ์โทเค็นการเข้าถึงแบบกำหนดเองจะช่วยให้คุณสะดวกขึ้นหรือไม่
## ทำให้การควบคุมการเข้าถึงตามแอตทริบิวต์ (ABAC) เป็นไปได้ \{#make-attribute-based-access-control-abac-possible}
-[การควบคุมการเข้าถึงตามแอตทริบิวต์ (ABAC)](https://auth.wiki/abac) คือโมเดลการควบคุมการเข้าถึงที่ใช้แอตทริบิวต์ (เช่น บทบาทผู้ใช้ คุณสมบัติของทรัพยากร และเงื่อนไขแวดล้อม) ในการตัดสินใจอนุญาตการเข้าถึง เป็นวิธีที่ยืดหยุ่นและไดนามิกในการจัดการการเข้าถึงทรัพยากรที่ได้รับการปกป้อง
+[การควบคุมการเข้าถึงตามแอตทริบิวต์ (ABAC)](https://auth.wiki/abac) เป็นโมเดลการควบคุมการเข้าถึงที่ใช้แอตทริบิวต์ (เช่น บทบาทผู้ใช้ คุณสมบัติของทรัพยากร และเงื่อนไขแวดล้อม) ในการตัดสินใจควบคุมการเข้าถึง เป็นวิธีที่ยืดหยุ่นและไดนามิกในการจัดการการเข้าถึงทรัพยากรที่ได้รับการปกป้อง
-สมมติว่าคุณกำลังสร้างแอป และการเปิดตัวแอปแบ่งเป็น 2 เฟส: เบต้าสาธารณะ และเปิดตัวอย่างเป็นทางการ แม้หลังจากแอปเปิดตัวอย่างเป็นทางการแล้ว คุณยังต้องการให้ผู้ใช้เก่าที่เข้าร่วมเบต้าสาธารณะสามารถใช้ฟีเจอร์แบบชำระเงินต่อไปได้
+สมมติว่าคุณกำลังสร้างแอป และการเปิดตัวแอปแบ่งเป็น 2 เฟส: เบต้าสาธารณะ และเปิดตัวอย่างเป็นทางการ แม้หลังจากแอปเปิดตัวอย่างเป็นทางการแล้ว คุณยังต้องการให้ผู้ใช้เก่าที่เคยเข้าร่วมเบต้าสาธารณะสามารถใช้ฟีเจอร์แบบชำระเงินต่อไปได้
-หลังจากแอปเปิดตัวอย่างเป็นทางการ คุณใช้ฟีเจอร์ [การควบคุมการเข้าถึงตามบทบาท (RBAC)](/authorization/role-based-access-control) ของ Logto เพื่อควบคุมการเข้าถึงฟีเจอร์แบบชำระเงิน เพื่อให้ตรวจสอบได้ง่ายว่าผู้ใช้เคยใช้แอปในช่วงเบต้าสาธารณะหรือไม่ คุณสามารถใช้เมธอด `getCustomJwtClaims()` เพื่อเพิ่มการอ้างสิทธิ์ชื่อ `createdAt` ลงใน payload ของโทเค็น
+หลังจากแอปเปิดตัวอย่างเป็นทางการ คุณใช้ฟีเจอร์ [การควบคุมการเข้าถึงตามบทบาท (RBAC)](/authorization/role-based-access-control) ของ Logto เพื่อควบคุมการเข้าถึงฟีเจอร์แบบชำระเงิน หากต้องการตรวจสอบได้ง่ายว่าผู้ใช้เคยใช้แอปในช่วงเบต้าสาธารณะหรือไม่ คุณสามารถใช้เมธอด `getCustomJwtClaims()` เพื่อเพิ่มการอ้างสิทธิ์ `createdAt` ใน payload ของโทเค็น
-จากนั้น เมื่อควบคุมการเข้าถึงใน API ที่ได้รับการปกป้องของคุณ คุณต้องอนุญาตโทเค็นการเข้าถึงที่ตรงตามเงื่อนไขใดเงื่อนไขหนึ่งต่อไปนี้:
+จากนั้น เมื่อควบคุมการเข้าถึงใน API ที่ได้รับการปกป้องของคุณ คุณต้องอนุญาตโทเค็นการเข้าถึงที่ตรงตามเงื่อนไขใดเงื่อนไขหนึ่งดังนี้:
-1. ในบริบทของ RBAC มีขอบเขต (scope) สำหรับเข้าถึงทรัพยากรแบบชำระเงิน
+1. ในบริบทของ RBAC มีขอบเขตสำหรับการเข้าถึงทรัพยากรแบบชำระเงิน
2. `createdAt` เกิดขึ้นก่อนเวลาสิ้นสุดของเฟสเบต้าสาธารณะ
หากไม่มีฟีเจอร์การอ้างสิทธิ์โทเค็นแบบกำหนดเอง เมื่อยืนยันสิทธิ์สำหรับ [การอนุญาต (Authorization)](/authorization) จำเป็นต้องเรียก Logto Management API เพื่อตรวจสอบว่าผู้ใช้ที่มีโทเค็นการเข้าถึงปัจจุบันมีสิทธิ์ตามบทบาทที่ API resource นั้นต้องการหรือไม่
-ในสถานการณ์คล้ายกัน สมมติว่าแอปของคุณจะแสดงคำอวยพรวันเกิดในหน้าลงชื่อเข้าใช้หากวันเกิดของผู้ใช้ใกล้เข้ามา คุณสามารถใช้การอ้างสิทธิ์โทเค็นแบบกำหนดเองเพื่อเพิ่มฟิลด์วันเกิดลงใน [payload ของโทเค็น](/user-management/personal-access-token#example-token-exchange) ซึ่งสามารถใช้ตัดสินใจว่าจะแสดงข้อความเฉพาะหรือไม่
+ในสถานการณ์คล้ายกัน สมมติว่าแอปของคุณแสดงคำอวยพรวันเกิดในหน้าลงชื่อเข้าใช้หากวันเกิดของผู้ใช้ใกล้จะถึง คุณสามารถใช้การอ้างสิทธิ์โทเค็นแบบกำหนดเองเพื่อเพิ่มฟิลด์วันเกิดลงใน [payload ของโทเค็น](/user-management/personal-access-token#example-token-exchange) ซึ่งสามารถใช้เพื่อตัดสินใจว่าจะแสดงข้อความเฉพาะหรือไม่
## บล็อกการออกโทเค็นด้วยตนเอง \{#manually-block-token-issuance}
-สมมติว่า Joe กำลังให้บริการเกมออนไลน์และใช้ Logto เป็นระบบ [การจัดการข้อมูลระบุตัวตนและการเข้าถึง (IAM)](https://auth.wiki/iam)
+สมมติว่า Joe กำลังดำเนินธุรกิจเกมออนไลน์และใช้ Logto เป็นระบบ [การจัดการข้อมูลระบุตัวตนและการเข้าถึง (IAM)](https://auth.wiki/iam)
-สมมติว่าเกมนี้ต้องเติมเงินเพื่อซื้อเวลาเล่นเกม Joe บันทึกยอดเงินของผู้ใช้แต่ละคนไว้ในบริการเกมของเขา และหักยอดเงินอย่างต่อเนื่องตามเวลาที่เล่นเกม Joe ต้องการบังคับให้ผู้เล่นออกจากระบบเมื่อยอดเงินหมด เพื่อกระตุ้นให้เติมเงิน
+สมมติว่าเกมนี้ต้องเติมเงินเพื่อซื้อเวลาเล่นเกม Joe บันทึกยอดเงินของผู้ใช้แต่ละคนไว้ในบริการเกมของเขา และหักยอดเงินอย่างต่อเนื่องเมื่อเวลาการเล่นเกมเพิ่มขึ้น Joe ต้องการบังคับให้ผู้เล่นออกจากระบบเมื่อยอดเงินในบัญชีหมด เพื่อกระตุ้นให้เติมเงิน
ในจุดนี้ Joe สามารถใช้ฟีเจอร์การอ้างสิทธิ์โทเค็นแบบกำหนดเองของ Logto เพื่อทำสิ่งนี้ได้:
1. ในสคริปต์ สามารถเรียก API ภายนอก [ดึงข้อมูลภายนอก](/developers/custom-token-claims/create-script/#step-3-fetch-external-data) เพื่อดึงยอดเงินปัจจุบันของผู้เล่นจากเซิร์ฟเวอร์เกมของ Joe
2. หากยอดเงินน้อยกว่าหรือเท่ากับ 0 สามารถใช้เมธอด [`api.denyAccess()`](/developers/custom-token-claims/create-script/#api) เพื่อบล็อกการออกโทเค็น
-ในขณะนี้ เมื่อไม่สามารถรับโทเค็นการเข้าถึงที่ถูกต้องใหม่ได้ ผู้เล่นจะถูกบังคับให้ออกจากระบบเกมทันที
+ในขณะนี้ เนื่องจากไม่สามารถรับโทเค็นการเข้าถึงที่ถูกต้องใหม่ได้ ผู้เล่นจะถูกบังคับให้ออกจากระบบเกมทันที
diff --git a/i18n/th/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx b/i18n/th/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
index 95a07628bfe..90c97d943ee 100644
--- a/i18n/th/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
+++ b/i18n/th/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
@@ -1,35 +1,35 @@
---
id: create-script
-title: สร้างสคริปต์การอ้างสิทธิ์โทเค็นแบบกำหนดเอง
-sidebar_label: สร้างสคริปต์การอ้างสิทธิ์โทเค็นแบบกำหนดเอง
+title: สร้างสคริปต์โทเค็นการเข้าถึงแบบกำหนดเอง
+sidebar_label: สร้างสคริปต์โทเค็นการเข้าถึงแบบกำหนดเอง
sidebar_position: 3
---
-# สร้างสคริปต์การอ้างสิทธิ์โทเค็นแบบกำหนดเอง
+# สร้างสคริปต์โทเค็นการเข้าถึงแบบกำหนดเอง
-เพื่อ [เพิ่มการอ้างสิทธิ์แบบกำหนดเอง](/developers/custom-token-claims) ให้กับ [โทเค็นการเข้าถึง (Access token)](https://auth.wiki/access-token) คุณต้องเตรียมสคริปต์ที่คืนอ็อบเจกต์ซึ่งมีการอ้างสิทธิ์เหล่านั้น สคริปต์ควรเขียนเป็นฟังก์ชัน `JavaScript` ที่คืนอ็อบเจกต์ซึ่งมีการอ้างสิทธิ์แบบกำหนดเอง
+เพื่อ [เพิ่มการอ้างสิทธิ์ (claims) แบบกำหนดเอง](/developers/custom-token-claims) ให้กับ [โทเค็นการเข้าถึง (Access token)](https://auth.wiki/access-token) คุณต้องเตรียมสคริปต์ที่คืนอ็อบเจกต์ซึ่งมีการอ้างสิทธิ์เหล่านั้น สคริปต์ควรเขียนเป็นฟังก์ชัน `JavaScript` ที่คืนอ็อบเจกต์ซึ่งมีการอ้างสิทธิ์แบบกำหนดเอง
1. ไปที่ Console > Custom JWT
-2. มีโทเค็นการเข้าถึงสองประเภทที่คุณสามารถปรับแต่งการอ้างสิทธิ์ของโทเค็นได้:
+2. มีโทเค็นการเข้าถึง 2 ประเภทที่คุณสามารถปรับแต่งการอ้างสิทธิ์ได้:
- **โทเค็นการเข้าถึงของผู้ใช้ (User access token)**: โทเค็นการเข้าถึงที่ออกให้กับผู้ใช้ปลายทาง เช่น สำหรับแอปพลิเคชันเว็บหรือแอปมือถือ
- **โทเค็นการเข้าถึงแบบเครื่องต่อเครื่อง (Machine-to-Machine access token)**: โทเค็นการเข้าถึงที่ออกให้กับบริการหรือแอปพลิเคชัน เช่น สำหรับ [แอปพลิเคชันเครื่องต่อเครื่อง](/quick-starts/m2m)
- โทเค็นการเข้าถึงแต่ละประเภทอาจมีบริบท payload ของโทเค็นที่แตกต่างกัน คุณสามารถปรับแต่งการอ้างสิทธิ์ของโทเค็นแต่ละประเภทแยกกันได้
+ โทเค็นการเข้าถึงแต่ละประเภทอาจมีบริบท payload ที่แตกต่างกัน คุณสามารถปรับแต่งการอ้างสิทธิ์ของแต่ละประเภทแยกกันได้
- เลือกประเภทโทเค็นการเข้าถึงที่คุณต้องการปรับแต่งการอ้างสิทธิ์ แล้วคลิกปุ่ม **Add custom claims** เพื่อสร้างสคริปต์ใหม่
+ เลือกประเภทโทเค็นการเข้าถึงที่ต้องการปรับแต่ง แล้วคลิกปุ่ม **Add custom claims** เพื่อสร้างสคริปต์ใหม่
:::note
ฟีเจอร์การอ้างสิทธิ์โทเค็นแบบกำหนดเองนี้ใช้ได้เฉพาะกับ:
- ผู้ใช้ [Logto OSS](/logto-oss)
-- ผู้เช่า [Logto Cloud ที่มีสภาพแวดล้อมการพัฒนา](/logto-cloud/tenant-settings#development)
+- ผู้เช่า [Logto Cloud ที่มีสภาพแวดล้อมสำหรับการพัฒนา](/logto-cloud/tenant-settings#development)
- ผู้เช่า Logto Cloud แบบชำระเงินที่มีสภาพแวดล้อม production (รวมถึง [Pro tenants และ Enterprise tenants](https://logto.io/pricing))
:::
## สร้างฟังก์ชัน `getCustomJwtClaims()` \{#implement-getcustomjwtclaims-function}
-ในหน้า **Custom JWT** รายละเอียด คุณจะพบตัวแก้ไขสคริปต์สำหรับเขียนสคริปต์การอ้างสิทธิ์โทเค็นแบบกำหนดเอง สคริปต์ควรเป็นฟังก์ชัน `JavaScript` ที่คืนอ็อบเจกต์ของการอ้างสิทธิ์แบบกำหนดเอง
+ในหน้ารายละเอียด **Custom JWT** คุณจะพบตัวแก้ไขสคริปต์สำหรับเขียนสคริปต์การอ้างสิทธิ์โทเค็นแบบกำหนดเอง สคริปต์ควรเป็นฟังก์ชัน `JavaScript` ที่คืนอ็อบเจกต์ของการอ้างสิทธิ์แบบกำหนดเอง
{
@@ -46,10 +46,10 @@ const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
};
```
-ตัวแก้ไขนี้ใช้ JavaScript language server เพื่อให้ไฮไลต์ไวยากรณ์พื้นฐาน การเติมโค้ดอัตโนมัติ และการตรวจสอบข้อผิดพลาด พารามิเตอร์อินพุตถูกกำหนดชนิดและมีเอกสารประกอบในรูปแบบ jsDoc คุณสามารถใช้ IntelliSense ของตัวแก้ไขเพื่อเข้าถึงพร็อพเพอร์ตี้ของอ็อบเจกต์อินพุตได้อย่างถูกต้อง คุณสามารถดูรายละเอียดนิยามพารามิเตอร์ได้ทางด้านขวาของหน้า
+ตัวแก้ไขนี้ใช้ language server ของ JavaScript เพื่อให้ไฮไลต์ไวยากรณ์พื้นฐาน การเติมโค้ดอัตโนมัติ และการตรวจสอบข้อผิดพลาด พารามิเตอร์อินพุตถูกกำหนดชนิดและมีเอกสารประกอบในรูปแบบ jsDoc คุณสามารถใช้ IntelliSense ของตัวแก้ไขเพื่อเข้าถึงพร็อพเพอร์ตี้ของอ็อบเจกต์อินพุตได้อย่างถูกต้อง คุณสามารถดูรายละเอียดการกำหนดพารามิเตอร์ได้ทางด้านขวาของหน้า
:::note
-ฟังก์ชันนี้จะถูกส่งออกเป็นโมดูล ตรวจสอบให้แน่ใจว่าชื่อฟังก์ชันยังคงเป็น `getCustomJwtClaims` เพื่อให้โมดูลสามารถส่งออกฟังก์ชันได้อย่างถูกต้อง
+ฟังก์ชันนี้จะถูก export เป็นโมดูล ตรวจสอบให้แน่ใจว่าคุณใช้ชื่อฟังก์ชันว่า `getCustomJwtClaims` เพื่อให้โมดูลสามารถ export ฟังก์ชันนี้ได้อย่างถูกต้อง
:::
## ขั้นตอนที่ 2: พารามิเตอร์อินพุต \{#step-2-input-parameters}
@@ -60,45 +60,45 @@ const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
อ็อบเจกต์ payload ของโทเค็น อ็อบเจกต์นี้มีการอ้างสิทธิ์โทเค็นดั้งเดิมและเมตาดาต้าที่คุณอาจต้องเข้าถึงในสคริปต์
-คุณสามารถดูนิยามชนิดของอ็อบเจกต์ payload ของโทเค็นและอ็อบเจกต์ข้อมูลผู้ใช้ได้ทางด้านขวาของหน้า IntelliSense ของตัวแก้ไขจะช่วยให้คุณเข้าถึงพร็อพเพอร์ตี้เหล่านี้ได้อย่างถูกต้อง
+คุณสามารถดูการกำหนดชนิดของอ็อบเจกต์ payload ของโทเค็นและข้อมูลผู้ใช้ได้ทางด้านขวาของหน้า IntelliSense ของตัวแก้ไขจะช่วยให้คุณเข้าถึงพร็อพเพอร์ตี้เหล่านี้ได้อย่างถูกต้อง
- อ็อบเจกต์ข้อมูลโทเค็นการเข้าถึงของผู้ใช้
| พร็อพเพอร์ตี้ | คำอธิบาย | ชนิดข้อมูล |
| -------------------- | ------------------------------------------------ | ------------- |
- | `jti` | รหัส JWT ที่ไม่ซ้ำกัน | `string` |
+ | `jti` | รหัส JWT ที่ไม่ซ้ำ | `string` |
| `aud` | ผู้รับ (Audience) ของโทเค็น | `string` |
| `scope` | ขอบเขต (Scopes) ของโทเค็น | `string` |
- | `clientId` | รหัสไคลเอนต์ของโทเค็น | `string` |
+ | `clientId` | รหัส client ของโทเค็น | `string` |
| `accountId` | รหัสผู้ใช้ของโทเค็น | `string` |
- | `expiresWithSession` | โทเค็นจะหมดอายุตามเซสชันหรือไม่ | `boolean` |
+ | `expiresWithSession` | โทเค็นจะหมดอายุตาม session หรือไม่ | `boolean` |
| `grantId` | รหัส grant การยืนยันตัวตนปัจจุบันของโทเค็น | `string` |
| `gty` | ประเภท grant ของโทเค็น | `string` |
- | `kind` | ประเภทของโทเค็น | `AccessToken` |
+ | `kind` | ประเภทโทเค็น | `AccessToken` |
- อ็อบเจกต์ข้อมูลโทเค็นการเข้าถึงแบบเครื่องต่อเครื่อง
| พร็อพเพอร์ตี้ | คำอธิบาย | ชนิดข้อมูล |
| ---------- | -------------------------- | ------------------- |
- | `jti` | รหัส JWT ที่ไม่ซ้ำกัน | `string` |
+ | `jti` | รหัส JWT ที่ไม่ซ้ำ | `string` |
| `aud` | ผู้รับ (Audience) ของโทเค็น | `string` |
| `scope` | ขอบเขต (Scopes) ของโทเค็น | `string` |
- | `clientId` | รหัสไคลเอนต์ของโทเค็น | `string` |
- | `kind` | ประเภทของโทเค็น | `ClientCredentials` |
+ | `clientId` | รหัส client ของโทเค็น | `string` |
+ | `kind` | ประเภทโทเค็น | `ClientCredentials` |
### context (ใช้ได้เฉพาะกับโทเค็นการเข้าถึงของผู้ใช้) \{#context-only-available-for-user-access-token}
-อ็อบเจกต์ context มีข้อมูลผู้ใช้และข้อมูล grant ที่เกี่ยวข้องกับกระบวนการการอนุญาต (Authorization) ปัจจุบัน
+อ็อบเจกต์ context มีข้อมูลผู้ใช้และข้อมูล grant ที่เกี่ยวข้องกับกระบวนการอนุญาต (Authorization) ปัจจุบัน
- **อ็อบเจกต์ข้อมูลผู้ใช้**
- สำหรับโทเค็นการเข้าถึงของผู้ใช้ Logto ให้ context ข้อมูลผู้ใช้เพิ่มเติมสำหรับการเข้าถึง อ็อบเจกต์ข้อมูลผู้ใช้นี้มีข้อมูลโปรไฟล์ผู้ใช้และข้อมูลสมาชิกองค์กรทั้งหมดที่คุณอาจต้องใช้ในการตั้งค่าการอ้างสิทธิ์แบบกำหนดเอง โปรดดู [ผู้ใช้](/user-management/user-data) และ [องค์กร](/organizations/organization-management#organization-data-structure) สำหรับรายละเอียดเพิ่มเติม
+ สำหรับโทเค็นการเข้าถึงของผู้ใช้ Logto จะให้ context ข้อมูลผู้ใช้เพิ่มเติมสำหรับการเข้าถึง อ็อบเจกต์ข้อมูลผู้ใช้นี้มีข้อมูลโปรไฟล์ผู้ใช้และข้อมูลสมาชิกองค์กรทั้งหมดที่คุณอาจต้องใช้ในการตั้งค่าการอ้างสิทธิ์แบบกำหนดเอง โปรดดู [ผู้ใช้](/user-management/user-data) และ [องค์กร](/organizations/organization-management#organization-data-structure) สำหรับรายละเอียดเพิ่มเติม
- **อ็อบเจกต์ข้อมูล grant**
- สำหรับโทเค็นการเข้าถึงของผู้ใช้ที่ได้จากการแลกเปลี่ยนโทเค็นสวมรอย Logto ให้ context ข้อมูล grant เพิ่มเติมสำหรับการเข้าถึง อ็อบเจกต์ข้อมูล grant นี้มี context แบบกำหนดเองจาก subject token โปรดดู [การสวมรอยผู้ใช้](/developers/user-impersonation) สำหรับรายละเอียดเพิ่มเติม
+ สำหรับโทเค็นการเข้าถึงของผู้ใช้ที่ได้จากการแลกเปลี่ยนโทเค็นสวมรอย (impersonation token exchange) Logto จะให้ context ข้อมูล grant เพิ่มเติมสำหรับการเข้าถึง อ็อบเจกต์ข้อมูล grant นี้มี context แบบกำหนดเองจาก subject token โปรดดู [การสวมรอยผู้ใช้ (Impersonation)](/developers/user-impersonation) สำหรับรายละเอียดเพิ่มเติม
- **อ็อบเจกต์ข้อมูลการโต้ตอบของผู้ใช้**
- สำหรับโทเค็นการเข้าถึงของผู้ใช้ อาจมีกรณีที่คุณต้องเข้าถึงรายละเอียดการโต้ตอบของผู้ใช้สำหรับเซสชันการอนุญาตปัจจุบัน เช่น คุณอาจต้องดึงข้อมูลตัวตน SSO สำหรับองค์กรที่ผู้ใช้ใช้ในการลงชื่อเข้าใช้ อ็อบเจกต์ข้อมูลการโต้ตอบของผู้ใช้นี้มีข้อมูลการโต้ตอบล่าสุดที่ผู้ใช้ส่งมา รวมถึง:
+ สำหรับโทเค็นการเข้าถึงของผู้ใช้ อาจมีกรณีที่คุณต้องเข้าถึงรายละเอียดการโต้ตอบของผู้ใช้ใน session การอนุญาตปัจจุบัน เช่น คุณอาจต้องดึงข้อมูลตัวตน SSO ขององค์กรที่ใช้ในการลงชื่อเข้าใช้ อ็อบเจกต์ข้อมูลการโต้ตอบนี้มีข้อมูลการโต้ตอบล่าสุดที่ผู้ใช้ส่งมา รวมถึง:
- | พร็อพเพอร์ตี้ | คำอธิบาย | ชนิดข้อมูล |
- | --------------------- | ------------------------------------------------------------------------------------ | ------------------------ |
- | `interactionEvent` | เหตุการณ์การโต้ตอบของผู้ใช้ปัจจุบัน | `SignIn` หรือ `Register` |
- | `userId` | รหัสผู้ใช้ของการโต้ตอบปัจจุบัน | `string` |
- | `verificationRecords` | รายการบันทึกการยืนยันตัวตนที่ผู้ใช้ส่งมาเพื่อระบุตัวตนและยืนยันตัวตนระหว่างการโต้ตอบ | `VerificationRecord[]` |
+ | พร็อพเพอร์ตี้ | คำอธิบาย | ชนิดข้อมูล |
+ | --------------------- | ------------------------------------------------------------------------ | ------------------------ |
+ | `interactionEvent` | เหตุการณ์การโต้ตอบของผู้ใช้ปัจจุบัน | `SignIn` หรือ `Register` |
+ | `userId` | รหัสผู้ใช้ของการโต้ตอบปัจจุบัน | `string` |
+ | `verificationRecords` | รายการบันทึกการยืนยันตัวตนที่ผู้ใช้ส่งมาเพื่อยืนยันตัวตนระหว่างการโต้ตอบ | `VerificationRecord[]` |
ชนิดของบันทึกการยืนยันตัวตน:
@@ -227,16 +227,16 @@ const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
:::note
อาจมีบันทึกการยืนยันตัวตนหลายรายการในอ็อบเจกต์ข้อมูลการโต้ตอบของผู้ใช้ โดยเฉพาะเมื่อผู้ใช้ผ่านกระบวนการลงชื่อเข้าใช้หรือสมัครสมาชิกหลายครั้ง
- เช่น ผู้ใช้ลงชื่อเข้าใช้ด้วยบันทึก `Social` จากนั้นผูกอีเมลใหม่ผ่านบันทึก `EmailVerificationCode` และยืนยันสถานะ MFA ด้วยบันทึก `Totp` ในกรณีนี้ คุณอาจต้องจัดการบันทึกการยืนยันตัวตนทั้งหมดในสคริปต์ของคุณ
+ เช่น ผู้ใช้ลงชื่อเข้าใช้ด้วยบันทึก `Social` แล้วผูกอีเมลใหม่ผ่านบันทึก `EmailVerificationCode` และยืนยันสถานะ MFA ด้วยบันทึก `Totp` ในกรณีนี้ คุณอาจต้องจัดการบันทึกการยืนยันตัวตนทั้งหมดในสคริปต์ของคุณ
แต่ละประเภทของบันทึกการยืนยันตัวตนจะมีเพียงหนึ่งรายการในอ็อบเจกต์ข้อมูลการโต้ตอบของผู้ใช้
:::
### environmentVariables \{#environmentvariables}
-ใช้ส่วน **Set environment variables** ทางขวาเพื่อกำหนด environment variables สำหรับสคริปต์ของคุณ คุณสามารถใช้ตัวแปรเหล่านี้เพื่อเก็บข้อมูลสำคัญหรือข้อมูลการตั้งค่าที่คุณไม่ต้องการเขียนลงในสคริปต์โดยตรง เช่น API key, secret หรือ URL
+ใช้ส่วน **Set environment variables** ทางด้านขวาเพื่อกำหนด environment variables สำหรับสคริปต์ของคุณ คุณสามารถใช้ตัวแปรเหล่านี้เพื่อเก็บข้อมูลสำคัญหรือข้อมูลตั้งค่าที่ไม่ต้องการเขียนลงในสคริปต์โดยตรง เช่น API key, secret หรือ URL
-environment variables ทั้งหมดที่คุณตั้งค่าที่นี่จะสามารถใช้งานได้ในสคริปต์ ใช้อ็อบเจกต์ `environmentVariables` ในพารามิเตอร์อินพุตเพื่อเข้าถึงตัวแปรเหล่านี้
+ตัวแปร environment ทั้งหมดที่คุณตั้งค่าที่นี่จะสามารถใช้งานได้ในสคริปต์ ใช้อ็อบเจกต์ `environmentVariables` ในพารามิเตอร์อินพุตเพื่อเข้าถึงตัวแปรเหล่านี้
### api \{#api}
@@ -246,7 +246,7 @@ environment variables ทั้งหมดที่คุณตั้งค่
api.denyAccess(message?: string): void
```
-ฟังก์ชัน `api.denyAccess()` ช่วยให้คุณปฏิเสธกระบวนการออกโทเค็นพร้อมข้อความแบบกำหนดเอง คุณสามารถใช้ฟังก์ชันนี้เพื่อบังคับตรวจสอบการเข้าถึงเพิ่มเติมในกระบวนการออกโทเค็น
+ฟังก์ชัน `api.denyAccess()` ช่วยให้คุณปฏิเสธกระบวนการออกโทเค็นพร้อมข้อความที่กำหนดเอง คุณสามารถใช้ฟังก์ชันนี้เพื่อบังคับตรวจสอบการเข้าถึงเพิ่มเติมในกระบวนการออกโทเค็น
## ขั้นตอนที่ 3: ดึงข้อมูลภายนอก \{#step-3-fetch-external-data}
@@ -269,24 +269,24 @@ const getCustomJwtClaims = async ({ environmentVariables }) => {
```
:::note
-โปรดทราบ การดึงข้อมูลภายนอกอาจทำให้กระบวนการออกโทเค็นล่าช้า ตรวจสอบให้แน่ใจว่า API ภายนอกมีความน่าเชื่อถือและรวดเร็วเพียงพอต่อความต้องการของคุณ
+โปรดทราบ การดึงข้อมูลภายนอกอาจทำให้กระบวนการออกโทเค็นล่าช้า ตรวจสอบให้แน่ใจว่า API ภายนอกมีความน่าเชื่อถือและรวดเร็วเพียงพอสำหรับความต้องการของคุณ
นอกจากนี้:
-- จัดการข้อผิดพลาดและ timeout ในสคริปต์ของคุณอย่างเหมาะสมเพื่อป้องกันไม่ให้กระบวนการออกโทเค็นติดขัด
+- จัดการข้อผิดพลาดและ timeout ในสคริปต์ของคุณอย่างเหมาะสมเพื่อป้องกันไม่ให้กระบวนการออกโทเค็นถูกบล็อก
- ใช้ header การอนุญาตที่เหมาะสมเพื่อปกป้อง API ภายนอกของคุณจากการเข้าถึงโดยไม่ได้รับอนุญาต
:::
## ขั้นตอนที่ 4: ทดสอบสคริปต์ \{#step-4-test-the-script}
-อย่าลืมทดสอบสคริปต์ของคุณก่อนบันทึก คลิกที่แท็บ **Test context** ทางขวาของหน้าเพื่อแก้ไข mock token payload และ context ข้อมูลผู้ใช้สำหรับการทดสอบ
+อย่าลืมทดสอบสคริปต์ของคุณก่อนบันทึก คลิกที่แท็บ **Test context** ทางด้านขวาของหน้าเพื่อแก้ไข mock token payload และ context ข้อมูลผู้ใช้สำหรับการทดสอบ
-คลิก **Run test** ที่มุมขวาบนของตัวแก้ไขเพื่อรันสคริปต์ด้วย mock data ผลลัพธ์ของสคริปต์จะแสดงใน **Test Result** drawer
+คลิก **Run test** ที่มุมขวาบนของตัวแก้ไขเพื่อรันสคริปต์ด้วย mock data ผลลัพธ์ของสคริปต์จะแสดงใน drawer **Test Result**
:::note
-ผลลัพธ์การทดสอบคือ output ของฟังก์ชัน `getCustomJwtClaims` ที่ใช้ mock data ที่คุณตั้งค่า ("extra token claims" ที่ได้หลังจากจบขั้นตอนที่ 3 ใน [sequence diagram](/developers/custom-token-claims/#how-do-custom-token-claims-work)) ข้อมูล payload ของโทเค็นจริงและ context ข้อมูลผู้ใช้จะต่างออกไปเมื่อสคริปต์ถูกรันในกระบวนการออกโทเค็นจริง
+ผลลัพธ์การทดสอบคือ output ของฟังก์ชัน `getCustomJwtClaims` ที่ใช้ mock data ที่คุณตั้งค่า ("extra token claims" ที่ได้หลังจากจบขั้นตอนที่ 3 ใน [sequence diagram](/developers/custom-token-claims/#how-do-custom-token-claims-work)) ข้อมูล payload โทเค็นจริงและ context ข้อมูลผู้ใช้จะต่างออกไปเมื่อสคริปต์ถูกรันในกระบวนการออกโทเค็นจริง
:::
คลิกปุ่ม **Create** เพื่อบันทึกสคริปต์ สคริปต์การอ้างสิทธิ์โทเค็นแบบกำหนดเองจะถูกบันทึกและนำไปใช้กับกระบวนการออกโทเค็นการเข้าถึง
diff --git a/i18n/th/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx b/i18n/th/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
index 664e168b0bc..955e8336385 100644
--- a/i18n/th/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
+++ b/i18n/th/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
@@ -2,18 +2,18 @@
id: sdk-conventions
title: แนวทางปฏิบัติของ Platform SDK
sidebar_label: แนวทางปฏิบัติของ Platform SDK
-sidebar_position: 7
+sidebar_position: 8
---
# แนวทางปฏิบัติของ Platform SDK
Logto ให้บริการการยืนยันตัวตนบนเว็บที่ทรงพลังและยืดหยุ่นมาก
-ในการใช้งาน Logto จริง เพื่อความสะดวก มักจำเป็นที่นักพัฒนาจะต้องผสานรวม SDK ของ Logto เข้ากับแอปพลิเคชันฝั่งลูกค้าของตนเอง เพื่อจัดการสถานะการลงชื่อเข้าใช้ของผู้ใช้ สิทธิ์ และอื่น ๆ
+ในการใช้งาน Logto จริง เพื่อความสะดวก มักจำเป็นที่นักพัฒนาจะต้องผสานรวม Logto SDK เข้ากับแอปพลิเคชันฝั่งลูกค้าของตนเอง เพื่อจัดการสถานะการลงชื่อเข้าใช้ของผู้ใช้, สิทธิ์ (permissions) และอื่น ๆ
-คุณสามารถค้นหา SDK สำหรับภาษาโปรแกรม / เฟรมเวิร์กทั้งหมดที่ Logto รองรับได้ [ที่นี่](/quick-starts)
+คุณสามารถค้นหา SDK สำหรับภาษา / เฟรมเวิร์กโปรแกรมมิ่งที่ Logto รองรับทั้งหมด [ได้ที่นี่](/quick-starts)
-หากคุณไม่พบ SDK ที่ต้องการ นี่คือแนวทางปฏิบัติที่คุณสามารถยึดถือเพื่อพัฒนา SDK สำหรับภาษาที่คุณต้องการ เพื่อให้ใช้งานบริการของ Logto ได้ง่ายขึ้น
+หากคุณไม่โชคดีและไม่พบ SDK ที่ต้องการ นี่คือแนวทางปฏิบัติที่คุณสามารถยึดถือเพื่อพัฒนา SDK สำหรับภาษาที่คุณต้องการ เพื่อให้ใช้งานบริการของ Logto ได้ง่ายขึ้น
แนวทางปฏิบัตินี้ประกอบด้วย 3 ส่วนหลัก:
diff --git a/i18n/th/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx b/i18n/th/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
index 8ee4f640c09..3ce83454bbb 100644
--- a/i18n/th/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
+++ b/i18n/th/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
@@ -2,50 +2,50 @@
id: signing-keys
title: คีย์สำหรับลงนาม
sidebar_label: คีย์สำหรับลงนาม
-sidebar_position: 4
+sidebar_position: 5
---
# คีย์สำหรับลงนาม
[OIDC signing keys](https://auth.wiki/signing-key) ของ Logto หรือที่รู้จักกันในชื่อ "OIDC private keys" และ "OIDC cookie keys" คือคีย์สำหรับลงนามที่ใช้ในการลงนาม JWTs ([โทเค็นการเข้าถึง (Access tokens)](https://auth.wiki/access-token) และ [โทเค็น ID (ID tokens)](https://auth.wiki/id-token)) และคุกกี้ของเบราว์เซอร์ใน [เซสชันการลงชื่อเข้าใช้ (sign-in sessions)](/end-user-flows/sign-out#sign-in-session) ของ Logto คีย์สำหรับลงนามเหล่านี้จะถูกสร้างขึ้นเมื่อมีการ seed ฐานข้อมูล Logto ([โอเพ่นซอร์ส](/logto-oss)) หรือสร้าง tenant ใหม่ ([Cloud](/logto-cloud)) และสามารถจัดการได้ผ่าน [CLI](/logto-oss/using-cli) (โอเพ่นซอร์ส), Management APIs หรือ Console UI
-โดยปกติ Logto จะใช้ อัลกอริทึม elliptic curve (EC) ในการสร้างลายเซ็นดิจิทัล อย่างไรก็ตาม เนื่องจากผู้ใช้มักต้องตรวจสอบลายเซ็นของ JWT และเครื่องมือรุ่นเก่าหลายตัวไม่รองรับอัลกอริทึม EC (รองรับเฉพาะ RSA) เราจึงได้เพิ่มฟีเจอร์สำหรับการหมุนเวียนคีย์ส่วนตัว (private key rotation) และให้ผู้ใช้เลือกอัลกอริทึมสำหรับลายเซ็น (ทั้ง RSA และ EC) เพื่อให้แน่ใจว่าสามารถใช้งานร่วมกับบริการที่ใช้เครื่องมือตรวจสอบลายเซ็นรุ่นเก่าได้
+โดยปกติ Logto จะใช้ อัลกอริทึม elliptic curve (EC) ในการสร้างลายเซ็นดิจิทัล อย่างไรก็ตาม เนื่องจากผู้ใช้มักต้องตรวจสอบลายเซ็นของ JWT และเครื่องมือรุ่นเก่าหลายตัวไม่รองรับอัลกอริทึม EC (รองรับเฉพาะ RSA) เราจึงได้เพิ่มฟีเจอร์สำหรับหมุนคีย์ส่วนตัว (private key rotation) และให้ผู้ใช้เลือกอัลกอริทึมสำหรับลายเซ็น (ทั้ง RSA และ EC) เพื่อให้แน่ใจว่าสามารถใช้งานร่วมกับบริการที่ใช้เครื่องมือตรวจสอบลายเซ็นรุ่นเก่าได้
:::note
-ตามทฤษฎีแล้ว คีย์สำหรับลงนามไม่ควรถูกเปิดเผยและไม่มีวันหมดอายุ หมายความว่าไม่จำเป็นต้องหมุนเวียนคีย์ แต่การหมุนเวียนคีย์เป็นระยะหลังจากช่วงเวลาหนึ่งสามารถเพิ่มความปลอดภัยได้
+ตามทฤษฎีแล้ว คีย์สำหรับลงนามไม่ควรถูกเปิดเผยและไม่มีวันหมดอายุ หมายความว่าไม่จำเป็นต้องหมุนคีย์ แต่การหมุนคีย์เป็นระยะหลังจากใช้งานไปช่วงเวลาหนึ่งจะช่วยเพิ่มความปลอดภัย
:::
## ทำงานอย่างไร? \{#how-it-works}
- **OIDC private key**
- เมื่อเริ่มต้น Logto instance จะมีการสร้างคู่คีย์ public / private โดยอัตโนมัติและลงทะเบียนใน OIDC provider ที่อยู่เบื้องหลัง ดังนั้นเมื่อ Logto ออก JWT ใหม่ (โทเค็นการเข้าถึง หรือ โทเค็น ID) โทเค็นจะถูกลงนามด้วยคีย์ส่วนตัว ในขณะเดียวกัน แอปพลิเคชันไคลเอนต์ใด ๆ ที่ได้รับ JWT สามารถใช้คีย์สาธารณะที่จับคู่กันเพื่อตรวจสอบลายเซ็นของโทเค็น เพื่อให้แน่ใจว่าโทเค็นไม่ได้ถูกแก้ไขโดยบุคคลที่สาม คีย์ส่วนตัวจะถูกปกป้องบนเซิร์ฟเวอร์ Logto ส่วนคีย์สาธารณะตามชื่อคือสาธารณะสำหรับทุกคน และสามารถเข้าถึงได้ผ่านอินเทอร์เฟซ `/oidc/jwks` ของ OIDC endpoint สามารถระบุอัลกอริทึมของคีย์สำหรับลงนามได้ขณะสร้างคีย์ส่วนตัว โดย Logto จะใช้อัลกอริทึม EC (Elliptic Curve) เป็นค่าเริ่มต้น ผู้ดูแลระบบสามารถเปลี่ยนอัลกอริทึมเริ่มต้นเป็น RSA (Rivest-Shamir-Adleman) ได้โดยการหมุนเวียนคีย์ส่วนตัว
+ เมื่อเริ่มต้น Logto instance จะมีการสร้างคู่คีย์ public / private ขึ้นโดยอัตโนมัติ และลงทะเบียนไว้ใน OIDC provider ที่อยู่เบื้องหลัง ดังนั้นเมื่อ Logto ออก JWT ใหม่ (โทเค็นการเข้าถึง หรือ โทเค็น ID) โทเค็นจะถูกลงนามด้วยคีย์ส่วนตัว ในขณะเดียวกัน แอปพลิเคชันไคลเอนต์ใด ๆ ที่ได้รับ JWT สามารถใช้คีย์สาธารณะที่จับคู่กันเพื่อตรวจสอบลายเซ็นของโทเค็น เพื่อให้แน่ใจว่าโทเค็นไม่ได้ถูกแก้ไขโดยบุคคลที่สาม คีย์ส่วนตัวจะถูกปกป้องไว้บนเซิร์ฟเวอร์ Logto ส่วนคีย์สาธารณะตามชื่อคือสาธารณะสำหรับทุกคน และสามารถเข้าถึงได้ผ่านอินเทอร์เฟซ `/oidc/jwks` ของ OIDC endpoint สามารถระบุอัลกอริทึมสำหรับคีย์ลงนามได้ขณะสร้างคีย์ส่วนตัว โดย Logto จะใช้อัลกอริทึม EC (Elliptic Curve) เป็นค่าเริ่มต้น ผู้ดูแลระบบสามารถเปลี่ยนอัลกอริทึมเริ่มต้นเป็น RSA (Rivest-Shamir-Adleman) ได้โดยการหมุนคีย์ส่วนตัว
- **OIDC cookie key**
- เมื่อผู้ใช้เริ่มต้น flow การลงชื่อเข้าใช้หรือสมัครสมาชิก จะมีการสร้าง "OIDC session" บนเซิร์ฟเวอร์ พร้อมกับชุดคุกกี้ของเบราว์เซอร์ ด้วยคุกกี้เหล่านี้ เบราว์เซอร์สามารถร้องขอ Logto Experience API เพื่อดำเนินการโต้ตอบต่าง ๆ ในนามของผู้ใช้ เช่น ลงชื่อเข้าใช้ สมัครสมาชิก และรีเซ็ตรหัสผ่าน อย่างไรก็ตาม แตกต่างจาก JWT คุกกี้จะถูกลงนามและตรวจสอบโดยบริการ OIDC ของ Logto เองเท่านั้น ไม่จำเป็นต้องใช้การเข้ารหัสแบบอสมมาตร (asymmetric cryptography) ดังนั้นเราจึงไม่มีคีย์สาธารณะสำหรับคีย์ที่ใช้ลงนามคุกกี้ และไม่ใช้อัลกอริทึมการเข้ารหัสแบบอสมมาตร
+ เมื่อผู้ใช้เริ่มต้น flow การลงชื่อเข้าใช้หรือสมัครสมาชิก จะมีการสร้าง "OIDC session" บนเซิร์ฟเวอร์ พร้อมกับชุดคุกกี้ในเบราว์เซอร์ ด้วยคุกกี้เหล่านี้ เบราว์เซอร์สามารถร้องขอ Logto Experience API เพื่อดำเนินการต่าง ๆ ในนามของผู้ใช้ เช่น ลงชื่อเข้าใช้ สมัครสมาชิก และรีเซ็ตรหัสผ่าน อย่างไรก็ตาม แตกต่างจาก JWT คุกกี้จะถูกลงนามและตรวจสอบโดยบริการ OIDC ของ Logto เองเท่านั้น ไม่จำเป็นต้องใช้การเข้ารหัสแบบอสมมาตร (asymmetric cryptography) ดังนั้นเราจึงไม่มีคีย์สาธารณะคู่สำหรับคีย์ลงนามคุกกี้ และไม่ใช้อัลกอริทึมเข้ารหัสแบบอสมมาตร
-## หมุนเวียนคีย์สำหรับลงนามจาก Console UI \{#rotate-signing-keys-from-console-ui}
+## หมุนคีย์สำหรับลงนามจาก Console UI \{#rotate-signing-keys-from-console-ui}
-Logto มีฟีเจอร์ "Signing Keys Rotation" ซึ่งช่วยให้คุณสร้าง OIDC private key และ cookie key ใหม่ใน tenant ของคุณ
+Logto มีฟีเจอร์ "Signing Keys Rotation" ที่ช่วยให้คุณสร้าง OIDC private key และ cookie key ใหม่ใน tenant ของคุณ
-1. ไปที่ Console > คีย์สำหรับลงนาม จากนั้นคุณสามารถจัดการทั้ง OIDC private keys และ OIDC cookie keys ได้
-2. หากต้องการหมุนเวียนคีย์สำหรับลงนาม ให้คลิกปุ่ม "Rotate private keys" หรือ "Rotate cookie keys" เมื่อหมุนเวียนคีย์ส่วนตัว คุณสามารถเลือกอัลกอริทึมสำหรับลายเซ็นได้
+1. ไปที่ Console > คีย์สำหรับลงนาม จากที่นี่คุณสามารถจัดการทั้ง OIDC private keys และ OIDC cookie keys ได้
+2. หากต้องการหมุนคีย์สำหรับลงนาม ให้คลิกปุ่ม "Rotate private keys" หรือ "Rotate cookie keys" เมื่อหมุนคีย์ส่วนตัว คุณสามารถเลือกอัลกอริทึมสำหรับลายเซ็นได้
3. คุณจะพบตารางที่แสดงคีย์สำหรับลงนามทั้งหมดที่ใช้งานอยู่ หมายเหตุ: คุณสามารถลบคีย์ก่อนหน้าได้ แต่ไม่สามารถลบคีย์ปัจจุบันได้
- | สถานะ | คำอธิบาย |
- | -------- | ---------------------------------------------------------------------------------------------------- |
- | ปัจจุบัน | หมายถึงคีย์นี้กำลังถูกใช้งานอยู่ในแอปพลิเคชันและ API ของคุณ |
- | ก่อนหน้า | หมายถึงคีย์ที่เคยใช้งานมาก่อนแต่ถูกหมุนเวียนออกไปแล้ว โทเค็นที่ลงนามด้วยคีย์นี้ยังคงใช้งานได้ตามปกติ |
+ | สถานะ | คำอธิบาย |
+ | -------- | -------------------------------------------------------------------------------------------- |
+ | ปัจจุบัน | หมายถึงคีย์นี้กำลังถูกใช้งานอยู่ในแอปพลิเคชันและ API ของคุณ |
+ | ก่อนหน้า | หมายถึงคีย์ที่เคยใช้งานมาก่อนแต่ถูกหมุนออกไปแล้ว โทเค็นที่ลงนามด้วยคีย์นี้ยังคงใช้งานได้อยู่ |
-โปรดจำไว้ว่าการหมุนเวียนคีย์ประกอบด้วย 3 ขั้นตอนดังนี้:
+โปรดจำไว้ว่าการหมุนคีย์ประกอบด้วย 3 ขั้นตอนดังนี้:
-1. **สร้างคีย์สำหรับลงนามใหม่**: ซึ่งจะทำให้ **แอปพลิเคชัน** และ **API** ทั้งหมดของคุณต้องใช้คีย์สำหรับลงนามใหม่นี้
-2. **หมุนเวียนคีย์ปัจจุบัน**: คีย์ที่ใช้งานอยู่จะถูกกำหนดสถานะเป็น "ก่อนหน้า" หลังการหมุนเวียน และจะไม่ถูกใช้กับแอปพลิเคชันและ API ที่สร้างใหม่ อย่างไรก็ตาม โทเค็นที่ลงนามด้วยคีย์นี้ยังคงใช้งานได้
+1. **สร้างคีย์สำหรับลงนามใหม่**: แอปพลิเคชัน **และ** API ทั้งหมดของคุณจะต้องใช้คีย์สำหรับลงนามใหม่นี้
+2. **หมุนคีย์ปัจจุบัน**: คีย์ที่มีอยู่จะถูกกำหนดสถานะเป็น "ก่อนหน้า" หลังการหมุน และจะไม่ถูกใช้กับแอปพลิเคชันและ API ที่สร้างใหม่ อย่างไรก็ตาม โทเค็นที่ลงนามด้วยคีย์นี้จะยังคงใช้งานได้
3. **ลบคีย์ก่อนหน้าของคุณ**: คีย์ที่มีสถานะ "ก่อนหน้า" จะถูกเพิกถอนและลบออกจากตาราง
:::warning
-อย่าหมุนเวียนคีย์สำหรับลงนามติดต่อกัน (สองครั้งขึ้นไป) เพราะอาจทำให้โทเค็นที่ออกทั้งหมดไม่สามารถใช้งานได้
+ห้ามหมุนคีย์สำหรับลงนามติดต่อกัน (สองครั้งขึ้นไป) เพราะอาจทำให้โทเค็นที่ออกไปแล้ว **ทั้งหมด** ใช้งานไม่ได้
-- สำหรับผู้ใช้ OSS หลังจากหมุนเวียนคีย์สำหรับลงนามแล้ว ต้องรีสตาร์ท Logto instance เพื่อให้คีย์ใหม่มีผล
-- สำหรับผู้ใช้ Cloud คีย์สำหรับลงนามใหม่จะมีผลทันทีหลังการหมุนเวียน แต่โปรดตรวจสอบว่าไม่ได้หมุนเวียนคีย์สำหรับลงนามติดต่อกันหลายครั้ง
+- สำหรับผู้ใช้ OSS หลังจากหมุนคีย์สำหรับลงนามแล้ว ต้องรีสตาร์ท Logto instance เพื่อให้คีย์ใหม่มีผล
+- สำหรับผู้ใช้ Cloud คีย์สำหรับลงนามใหม่จะมีผลทันทีหลังการหมุน แต่โปรดอย่าหมุนคีย์สำหรับลงนามหลายครั้งติดต่อกัน
:::
## แหล่งข้อมูลที่เกี่ยวข้อง \{#related-resources}
diff --git a/i18n/th/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx b/i18n/th/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
index 9249671776d..831a3599f15 100644
--- a/i18n/th/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
+++ b/i18n/th/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
@@ -2,16 +2,16 @@
id: user-impersonation
title: การสวมรอยผู้ใช้ (User impersonation)
sidebar_label: การสวมรอยผู้ใช้ (User impersonation)
-sidebar_position: 3
+sidebar_position: 4
---
import TokenExchangePrerequisites from './fragments/_token-exchange-prerequisites.mdx';
# การสวมรอยผู้ใช้ (User impersonation)
-ลองจินตนาการว่า Sarah วิศวกรฝ่ายสนับสนุนของ TechCorp ได้รับทิกเก็ตด่วนจาก Alex ลูกค้าที่ไม่สามารถเข้าถึงทรัพยากรสำคัญได้ เพื่อวินิจฉัยและแก้ไขปัญหาอย่างมีประสิทธิภาพ Sarah จำเป็นต้องเห็นสิ่งเดียวกับที่ Alex เห็นในระบบ นี่คือจุดที่ฟีเจอร์การสวมรอยผู้ใช้ของ Logto มีประโยชน์อย่างยิ่ง
+ลองจินตนาการว่า Sarah วิศวกรฝ่ายสนับสนุนที่ TechCorp ได้รับตั๋วแจ้งปัญหาด่วนจาก Alex ลูกค้าที่ไม่สามารถเข้าถึงทรัพยากรสำคัญได้ เพื่อวินิจฉัยและแก้ไขปัญหาอย่างมีประสิทธิภาพ Sarah จำเป็นต้องเห็นสิ่งเดียวกับที่ Alex เห็นในระบบ นี่คือจุดที่ฟีเจอร์การสวมรอยผู้ใช้ของ Logto มีประโยชน์อย่างยิ่ง
-การสวมรอยผู้ใช้ช่วยให้ผู้ใช้ที่ได้รับอนุญาต เช่น Sarah สามารถดำเนินการแทนผู้ใช้อื่น เช่น Alex ได้ชั่วคราวภายในระบบ ฟีเจอร์นี้ทรงพลังมากสำหรับการแก้ไขปัญหา การให้บริการลูกค้า และการดำเนินงานในฐานะผู้ดูแลระบบ
+การสวมรอยผู้ใช้ช่วยให้ผู้ใช้ที่ได้รับอนุญาต เช่น Sarah สามารถดำเนินการในระบบแทนผู้ใช้อื่น เช่น Alex ได้ชั่วคราว ฟีเจอร์นี้มีประโยชน์มากสำหรับการแก้ไขปัญหา การให้บริการลูกค้า และการดำเนินงานในฐานะผู้ดูแลระบบ
## ทำงานอย่างไร? \{#how-it-works}
@@ -35,14 +35,14 @@ sequenceDiagram
Note over Sarah,LogtoToken: แลก subject token เป็น access token
LogtoToken-->>Sarah: ส่งคืน access token
- Note over Sarah: ตอนนี้ Sarah สามารถเข้าถึงทรัพยากรในฐานะ Alex ได้แล้ว
+ Note over Sarah: Sarah สามารถเข้าถึงทรัพยากรในฐานะ Alex ได้แล้ว
```
กระบวนการสวมรอยประกอบด้วย 3 ขั้นตอนหลัก:
1. Sarah ขอสิทธิ์สวมรอยผ่าน backend server ของ TechCorp
2. เซิร์ฟเวอร์ของ TechCorp ขอ subject token จาก Logto Management API
-3. แอปของ Sarah แลก subject token นี้เป็นโทเค็นการเข้าถึง (access token)
+3. แอปของ Sarah แลก subject token นี้เป็น access token
มาดูกันว่า Sarah จะใช้ฟีเจอร์นี้เพื่อช่วยเหลือ Alex ได้อย่างไร
@@ -50,7 +50,7 @@ sequenceDiagram
ก่อนอื่น แอปสนับสนุนของ Sarah ต้องขอสิทธิ์สวมรอยจาก backend server ของ TechCorp
-**คำขอ (แอปของ Sarah ไปยังเซิร์ฟเวอร์ของ TechCorp)**
+**Request (แอปของ Sarah ไปยังเซิร์ฟเวอร์ของ TechCorp)**
```bash
POST /api/request-impersonation HTTP/1.1
@@ -60,18 +60,18 @@ Content-Type: application/json
{
"userId": "alex123",
- "reason": "Investigating resource access issue",
+ "reason": "กำลังตรวจสอบปัญหาการเข้าถึงทรัพยากร",
"ticketId": "TECH-1234"
}
```
-ใน API นี้ backend ควรตรวจสอบการอนุญาตอย่างเหมาะสมเพื่อให้แน่ใจว่า Sarah มีสิทธิ์ที่จำเป็นในการสวมรอย Alex
+ใน API นี้ backend ควรตรวจสอบสิทธิ์อย่างเหมาะสมเพื่อให้แน่ใจว่า Sarah มีสิทธิ์สวมรอย Alex
### ขั้นตอนที่ 2: ขอ subject token \{#step-2-obtaining-a-subject-token}
เมื่อเซิร์ฟเวอร์ของ TechCorp ตรวจสอบคำขอของ Sarah แล้ว จะเรียก [Management API](/integrate-logto/interact-with-management-api) ของ Logto เพื่อขอ subject token
-**คำขอ (เซิร์ฟเวอร์ของ TechCorp ไปยัง Logto Management API)**
+**Request (เซิร์ฟเวอร์ของ TechCorp ไปยัง Logto Management API)**
```bash
POST /api/subject-tokens HTTP/1.1
@@ -83,13 +83,13 @@ Content-Type: application/json
"userId": "alex123",
"context": {
"ticketId": "TECH-1234",
- "reason": "Resource access issue",
+ "reason": "ปัญหาการเข้าถึงทรัพยากร",
"supportEngineerId": "sarah789"
}
}
```
-**การตอบกลับ (Logto ไปยังเซิร์ฟเวอร์ของ TechCorp)**
+**Response (Logto ไปยังเซิร์ฟเวอร์ของ TechCorp)**
```json
{
@@ -98,9 +98,9 @@ Content-Type: application/json
}
```
-เซิร์ฟเวอร์ของ TechCorp ควรส่ง subject token นี้กลับไปยังแอปของ Sarah
+เซิร์ฟเวอร์ของ TechCorp ควรส่งคืน subject token นี้ให้กับแอปของ Sarah
-**การตอบกลับ (เซิร์ฟเวอร์ของ TechCorp ไปยังแอปของ Sarah)**
+**Response (เซิร์ฟเวอร์ของ TechCorp ไปยังแอปของ Sarah)**
```json
{
@@ -113,11 +113,11 @@ Content-Type: application/json
-ตอนนี้แอปของ Sarah จะแลก subject token นี้เป็นโทเค็นการเข้าถึง (access token) ที่แสดงตัวตนของ Alex โดยระบุทรัพยากรที่โทเค็นจะถูกใช้
+ตอนนี้แอปของ Sarah จะแลก subject token นี้เป็น access token ที่แสดงตัวตนของ Alex โดยระบุ resource ที่จะใช้ token นี้
-**คำขอ (แอปของ Sarah ไปยัง token endpoint ของ Logto)**
+**Request (แอปของ Sarah ไปยัง Logto token endpoint)**
-สำหรับเว็บแอปแบบดั้งเดิมหรือแอปเครื่องต่อเครื่องที่มี app secret ให้ใส่ข้อมูลรับรองใน `Authorization` header:
+สำหรับเว็บแอปแบบดั้งเดิมหรือแอป machine-to-machine ที่มี app secret ให้ใส่ข้อมูลรับรองใน `Authorization` header:
```bash
POST /oidc/token HTTP/1.1
@@ -149,7 +149,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&resource=https://api.techcorp.com/customer-data
```
-**การตอบกลับ (Logto ไปยังแอปของ Sarah)**
+**Response (Logto ไปยังแอปของ Sarah)**
```json
{
@@ -161,11 +161,11 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
}
```
-`access_token` ที่ได้รับจะถูกผูกกับทรัพยากรที่ระบุไว้ ทำให้สามารถใช้ได้เฉพาะกับ API ข้อมูลลูกค้าของ TechCorp เท่านั้น
+`access_token` ที่ได้รับจะถูกผูกกับ resource ที่ระบุไว้ ทำให้สามารถใช้ได้เฉพาะกับ API ข้อมูลลูกค้าของ TechCorp เท่านั้น
## ตัวอย่างการใช้งาน \{#example-usage}
-นี่คือตัวอย่างที่ Sarah อาจใช้ในแอป Node.js ฝ่ายสนับสนุน:
+นี่คือตัวอย่างการใช้งานในแอปสนับสนุน Node.js ของ Sarah:
```tsx
interface ImpersonationResponse {
@@ -187,7 +187,7 @@ async function impersonateUser(
ticketId: string,
resource: string,
// highlight-next-line
- clientSecret?: string // จำเป็นสำหรับเว็บแอปแบบดั้งเดิมหรือแอปเครื่องต่อเครื่อง
+ clientSecret?: string // จำเป็นสำหรับเว็บแอปแบบดั้งเดิมหรือแอป machine-to-machine
): Promise {
try {
// ขั้นตอนที่ 1 & 2: ขอสิทธิ์สวมรอยและรับ subject token
@@ -201,7 +201,7 @@ async function impersonateUser(
},
body: JSON.stringify({
userId,
- reason: 'Investigating resource access issue',
+ reason: 'กำลังตรวจสอบปัญหาการเข้าถึงทรัพยากร',
ticketId,
}),
}
@@ -215,7 +215,7 @@ async function impersonateUser(
// ขั้นตอนที่ 3: แลก subject token เป็น access token
// highlight-start
- // สำหรับเว็บแอปแบบดั้งเดิมหรือแอป M2M ใช้ Basic auth พร้อม client secret
+ // สำหรับเว็บแอปแบบดั้งเดิมหรือ M2M ใช้ Basic auth พร้อม client secret
// สำหรับ SPA หรือ native app ให้ใส่ client_id ใน body
const headers: Record = {
'Content-Type': 'application/x-www-form-urlencoded',
@@ -261,7 +261,7 @@ async function impersonateUser(
async function performImpersonation(): Promise {
try {
// highlight-start
- // สำหรับเว็บแอปแบบดั้งเดิมหรือแอป M2M ให้ส่ง client secret
+ // สำหรับเว็บแอปแบบดั้งเดิมหรือ M2M ให้ส่ง client secret
const accessToken = await impersonateUser(
'alex123',
'techcorp_support_app',
@@ -270,7 +270,7 @@ async function performImpersonation(): Promise {
'your-client-secret' // ไม่ต้องใส่สำหรับ SPA หรือ native app
);
// highlight-end
- console.log('โทเค็นการเข้าถึงสำหรับการสวมรอย Alex:', accessToken);
+ console.log('access token สำหรับสวมรอย Alex:', accessToken);
} catch (error) {
console.error('สวมรอยไม่สำเร็จ:', error);
}
@@ -283,18 +283,18 @@ void performImpersonation();
:::note
1. subject token มีอายุสั้นและใช้ได้เพียงครั้งเดียว
-2. โทเค็นการเข้าถึงสำหรับการสวมรอยจะไม่มี [refresh token](https://auth.wiki/refresh-token) หากหมดอายุ Sarah ต้องทำกระบวนการนี้ใหม่อีกครั้ง
-3. backend server ของ TechCorp ต้องตรวจสอบการอนุญาตอย่างเหมาะสมเพื่อให้แน่ใจว่าเฉพาะเจ้าหน้าที่สนับสนุนที่ได้รับอนุญาต เช่น Sarah เท่านั้นที่สามารถขอสวมรอยได้
+2. access token สำหรับการสวมรอยจะไม่มี [refresh token](https://auth.wiki/refresh-token) หากหมดอายุ Sarah ต้องทำขั้นตอนนี้ใหม่อีกครั้ง
+3. backend server ของ TechCorp ต้องตรวจสอบสิทธิ์อย่างเหมาะสมเพื่อให้แน่ใจว่าเฉพาะเจ้าหน้าที่สนับสนุนที่ได้รับอนุญาต เช่น Sarah เท่านั้นที่สามารถขอสิทธิ์สวมรอยได้
:::
## `act` claim \{#act-claim}
-เมื่อใช้ token exchange flow สำหรับการสวมรอย access token ที่ออกให้สามารถมี `act` (actor) claim เพิ่มเติมได้ claim นี้แสดงตัวตนของ “ผู้ดำเนินการ” — ในตัวอย่างนี้คือ Sarah ผู้ที่กำลังสวมรอย
+เมื่อใช้ token exchange flow สำหรับการสวมรอย access token ที่ออกมาอาจมี `act` (actor) claim เพิ่มเติม ซึ่งแสดงตัวตนของ “ผู้ดำเนินการ” — ในตัวอย่างนี้คือ Sarah ผู้ที่สวมรอย
-หากต้องการให้มี `act` claim แอปของ Sarah ต้องส่ง `actor_token` ในคำขอ token exchange โดย token นี้ควรเป็น access token ที่ถูกต้องของ Sarah พร้อมขอบเขต `openid` ตัวอย่างการใส่ในคำขอ:
+หากต้องการให้มี `act` claim แอปของ Sarah ต้องส่ง `actor_token` ในคำขอ token exchange โดย token นี้ควรเป็น access token ที่ถูกต้องของ Sarah พร้อม scope `openid` ตัวอย่างการใส่ในคำขอ:
-สำหรับเว็บแอปแบบดั้งเดิมหรือแอปเครื่องต่อเครื่อง:
+สำหรับเว็บแอปแบบดั้งเดิมหรือแอป machine-to-machine:
```bash
POST /oidc/token HTTP/1.1
@@ -330,7 +330,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&resource=https://api.techcorp.com/customer-data
```
-หากมีการส่ง `actor_token` โทเค็นการเข้าถึงที่ได้จะมี `act` claim เช่นนี้:
+หากมีการส่ง `actor_token` access token ที่ได้จะมี `act` claim ดังนี้:
```json
{
@@ -348,7 +348,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
## การปรับแต่ง token claims \{#customizing-token-claims}
-Logto อนุญาตให้คุณ [ปรับแต่ง token claims](/developers/custom-token-claims) สำหรับโทเค็นการสวมรอย ซึ่งมีประโยชน์สำหรับการเพิ่มข้อมูลบริบทหรือเมตาดาต้าเพิ่มเติม เช่น เหตุผลในการสวมรอยหรือหมายเลขทิกเก็ตที่เกี่ยวข้อง
+Logto อนุญาตให้คุณ [ปรับแต่ง token claims](/developers/custom-token-claims) สำหรับ token การสวมรอย ซึ่งมีประโยชน์สำหรับการเพิ่มข้อมูลบริบทหรือ metadata เพิ่มเติม เช่น เหตุผลในการสวมรอย หรือตั๋วสนับสนุนที่เกี่ยวข้อง
เมื่อเซิร์ฟเวอร์ของ TechCorp ขอ subject token จาก Logto Management API สามารถใส่ `context` object ได้ดังนี้:
@@ -357,13 +357,13 @@ Logto อนุญาตให้คุณ [ปรับแต่ง token claim
"userId": "alex123",
"context": {
"ticketId": "TECH-1234",
- "reason": "Resource access issue",
+ "reason": "ปัญหาการเข้าถึงทรัพยากร",
"supportEngineerId": "sarah789"
}
}
```
-[context](/developers/custom-token-claims/create-script#context-only-available-for-user-access-token) นี้สามารถนำไปใช้ในฟังก์ชัน `getCustomJwtClaims()` เพื่อเพิ่ม claim เฉพาะลงใน access token สุดท้าย ตัวอย่างเช่น:
+[context นี้](/developers/custom-token-claims/create-script#context-only-available-for-user-access-token) สามารถนำไปใช้ในฟังก์ชัน `getCustomJwtClaims()` เพื่อเพิ่ม claim เฉพาะลงใน access token สุดท้าย ตัวอย่างเช่น:
```tsx
const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
@@ -389,21 +389,21 @@ access token ที่ Sarah ได้รับอาจมีลักษณะ
"aud": "https://api.techcorp.com/customer-data",
"impersonation_context": {
"ticket_id": "TECH-1234",
- "reason": "Resource access issue",
+ "reason": "ปัญหาการเข้าถึงทรัพยากร",
"support_engineer": "sarah789"
}
// ... claim มาตรฐานอื่น ๆ
}
```
-ด้วยการปรับแต่ง access token claims แบบนี้ TechCorp สามารถใส่ข้อมูลสำคัญเกี่ยวกับบริบทการสวมรอย ช่วยให้ตรวจสอบและเข้าใจการดำเนินการสวมรอยในระบบได้ง่ายขึ้น
+ด้วยการปรับแต่ง access token claims แบบนี้ TechCorp สามารถใส่ข้อมูลสำคัญเกี่ยวกับบริบทการสวมรอย ทำให้ตรวจสอบและเข้าใจการสวมรอยในระบบได้ง่ายขึ้น
:::note
-โปรดระวังเมื่อเพิ่ม custom claim ลงในโทเค็นของคุณ หลีกเลี่ยงการใส่ข้อมูลสำคัญที่อาจก่อให้เกิดความเสี่ยงด้านความปลอดภัยหากโทเค็นถูกดักจับหรือรั่วไหล JWT จะถูกเซ็นชื่อแต่ไม่ถูกเข้ารหัส ดังนั้น claim จะมองเห็นได้สำหรับผู้ที่เข้าถึงโทเค็น
+โปรดระมัดระวังเมื่อเพิ่ม custom claim ลงใน token ของคุณ หลีกเลี่ยงการใส่ข้อมูลสำคัญที่อาจก่อให้เกิดความเสี่ยงด้านความปลอดภัยหาก token ถูกดักจับหรือรั่วไหล JWT จะถูกเซ็นชื่อแต่ไม่ได้เข้ารหัส ดังนั้น claim จะมองเห็นได้สำหรับผู้ที่เข้าถึง token
:::
## แหล่งข้อมูลที่เกี่ยวข้อง \{#related-resources}
- การสวมรอยในโลกไซเบอร์และการจัดการเอกลักษณ์คืออะไร? AI agent ใช้ประโยชน์จากมันได้อย่างไร?
+ การสวมรอยในโลกไซเบอร์และการจัดการเอกลักษณ์คืออะไร? AI agent ใช้งานได้อย่างไร?
diff --git a/i18n/th/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx b/i18n/th/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
index 20ce217bb10..576c8cd7776 100644
--- a/i18n/th/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
+++ b/i18n/th/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
@@ -1,37 +1,37 @@
---
-sidebar_position: 5
+sidebar_position: 6
---
# Webhook
-Logto [Webhook](https://auth.wiki/webhook) ให้การแจ้งเตือนแบบเรียลไทม์สำหรับเหตุการณ์ต่าง ๆ รวมถึงการเปลี่ยนแปลงบัญชีผู้ใช้, บทบาท (Role), สิทธิ์ (Permission), องค์กร (Organization), บทบาทขององค์กร, สิทธิ์ขององค์กร และ [การโต้ตอบของผู้ใช้](/end-user-flows)
+Logto [Webhook](https://auth.wiki/webhook) ให้การแจ้งเตือนแบบเรียลไทม์สำหรับเหตุการณ์ต่าง ๆ รวมถึงการเปลี่ยนแปลงบัญชีผู้ใช้, บทบาท (Roles), สิทธิ์ (Permissions), องค์กร (Organizations), บทบาทขององค์กร, สิทธิ์ขององค์กร และ [การโต้ตอบของผู้ใช้](/end-user-flows)
-เมื่อเกิดเหตุการณ์ Logto จะส่งคำขอ HTTP ไปยัง Endpoint URL ที่คุณกำหนด โดยมีข้อมูลรายละเอียดของเหตุการณ์ เช่น user ID, username, email และรายละเอียดอื่น ๆ ที่เกี่ยวข้อง (ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อมูลใน payload และ header ได้ที่ [Webhook request](/developers/webhooks/webhooks-request)) แอปพลิเคชันของคุณสามารถประมวลผลคำขอนี้และดำเนินการที่กำหนดเอง เช่น ส่งอีเมล หรืออัปเดตข้อมูลในฐานข้อมูล
+เมื่อเกิดเหตุการณ์ Logto จะส่ง HTTP request ไปยัง Endpoint URL ที่คุณกำหนด โดยมีข้อมูลรายละเอียดของเหตุการณ์ เช่น user ID, username, email และรายละเอียดอื่น ๆ ที่เกี่ยวข้อง (ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อมูลใน payload และ header ได้ที่ [Webhook request](/developers/webhooks/webhooks-request)) แอปพลิเคชันของคุณสามารถประมวลผล request นี้และดำเนินการที่กำหนดเอง เช่น ส่งอีเมล หรืออัปเดตข้อมูลในฐานข้อมูล
-เรายังคงเพิ่มเหตุการณ์ใหม่ ๆ ตามความต้องการของผู้ใช้ หากคุณมีความต้องการเฉพาะสำหรับธุรกิจของคุณ โปรดแจ้งให้เราทราบ
+เรายังคงเพิ่มเหตุการณ์ใหม่ ๆ ตามความต้องการของผู้ใช้ หากคุณมีความต้องการเฉพาะสำหรับธุรกิจของคุณ กรุณาแจ้งให้เราทราบ
## ทำไมต้องใช้ Webhook? \{#why-use-webhook}
-Webhook มอบการสื่อสารแบบเรียลไทม์ระหว่างแอปพลิเคชัน ช่วยลดความจำเป็นในการ polling และทำให้ข้อมูลอัปเดตทันที ช่วยให้การผสานระบบและการทำงานอัตโนมัติของแอปพลิเคชันง่ายขึ้นโดยไม่ต้องใช้โค้ดที่ซับซ้อนหรือ API เฉพาะทาง
+Webhook มอบการสื่อสารแบบเรียลไทม์ระหว่างแอปพลิเคชัน ช่วยลดความจำเป็นในการ polling และทำให้ข้อมูลอัปเดตทันที ช่วยให้การเชื่อมต่อแอปพลิเคชันและการทำงานอัตโนมัติของ workflow ง่ายขึ้นโดยไม่ต้องใช้โค้ดที่ซับซ้อนหรือ API เฉพาะทาง
ตัวอย่างการใช้งาน Webhook ที่พบบ่อยสำหรับ CIAM ได้แก่:
-- **ส่งอีเมล:** ตั้งค่า Webhook เพื่อส่งอีเมลต้อนรับผู้ใช้ใหม่เมื่อสมัครสมาชิก หรือแจ้งเตือนผู้ดูแลระบบเมื่อผู้ใช้ลงชื่อเข้าใช้จากอุปกรณ์หรือสถานที่ใหม่
-- **ส่งการแจ้งเตือน:** ตั้งค่า Webhook เพื่อเรียกผู้ช่วยเสมือนกับระบบ CRM ของคุณเพื่อให้การสนับสนุนลูกค้าแบบเรียลไทม์เมื่อผู้ใช้สมัครสมาชิก
-- **เรียก API เพิ่มเติม:** ตั้งค่า Webhook เพื่อตรวจสอบการเข้าถึงของผู้ใช้โดยเช็ค domain อีเมลหรือ IP address จากนั้นใช้ Logto Management API เพื่อกำหนดบทบาท (Role) และสิทธิ์ (Permission) ที่เหมาะสมกับทรัพยากร
-- **ซิงค์ข้อมูล:** ตั้งค่า Webhook เพื่อให้แอปพลิเคชันอัปเดตเกี่ยวกับการเปลี่ยนแปลง เช่น การระงับหรือการลบบัญชีผู้ใช้
-- **สร้างรายงาน:** ตั้งค่า Webhook เพื่อรับข้อมูลกิจกรรมการเข้าสู่ระบบของผู้ใช้และนำไปสร้างรายงานเกี่ยวกับการมีส่วนร่วม หรือรูปแบบการใช้งานของผู้ใช้
+- **ส่งอีเมล:** กำหนดค่า Webhook เพื่อส่งอีเมลต้อนรับให้ผู้ใช้ใหม่เมื่อสมัครสมาชิก หรือแจ้งเตือนผู้ดูแลระบบเมื่อผู้ใช้ลงชื่อเข้าใช้จากอุปกรณ์หรือสถานที่ใหม่
+- **ส่งการแจ้งเตือน:** กำหนดค่า Webhook เพื่อเรียกผู้ช่วยเสมือนกับระบบ CRM ของคุณ เพื่อให้บริการลูกค้าแบบเรียลไทม์เมื่อผู้ใช้สมัครสมาชิก
+- **เรียก API เพิ่มเติม:** กำหนดค่า Webhook เพื่อตรวจสอบการเข้าถึงของผู้ใช้โดยเช็ค domain อีเมลหรือ IP address จากนั้นใช้ Logto Management API เพื่อกำหนดบทบาทและสิทธิ์ทรัพยากรที่เหมาะสม
+- **ซิงโครไนซ์ข้อมูล:** กำหนดค่า Webhook เพื่อให้แอปพลิเคชันอัปเดตเกี่ยวกับการเปลี่ยนแปลง เช่น การระงับหรือการลบบัญชีผู้ใช้
+- **สร้างรายงาน:** ตั้งค่า Webhook เพื่อรับข้อมูลกิจกรรมการเข้าสู่ระบบของผู้ใช้และนำไปใช้สร้างรายงานเกี่ยวกับการมีส่วนร่วมของผู้ใช้หรือรูปแบบการใช้งาน
## คำศัพท์ \{#terms}
-| Item | Description |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Event | เมื่อมีการดำเนินการเฉพาะ จะเกิด hook event ประเภทหนึ่งขึ้น เช่น Logto จะส่ง hook event ประเภท PostRegister เมื่อผู้ใช้ลงทะเบียนเสร็จและสร้างบัญชีใหม่ |
-| Hook | การกระทำหนึ่งหรือชุดของการกระทำที่ผูกกับเหตุการณ์เฉพาะ การกระทำอาจเป็นการเรียก API, รันโค้ด ฯลฯ |
-| Webhook | ประเภทหนึ่งของ hook ที่หมายถึงการเรียก API พร้อม payload ของเหตุการณ์ |
-| สมมติว่านักพัฒนาต้องการส่งการแจ้งเตือนเมื่อผู้ใช้ลงชื่อเข้าใช้ผ่านอุปกรณ์ใหม่ นักพัฒนาสามารถเพิ่ม webhook ที่เรียก API ของบริการรักษาความปลอดภัยของเขากับเหตุการณ์ PostSignIn ได้ |
+| Item | Description |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Event | เมื่อมีการกระทำเฉพาะ จะเกิด hook event ประเภทหนึ่งขึ้น เช่น Logto จะส่ง hook event ประเภท PostRegister เมื่อผู้ใช้สมัครสมาชิกเสร็จและสร้างบัญชีใหม่ |
+| Hook | การกระทำหนึ่งหรือหลายอย่างที่ hook กับ event เฉพาะ การกระทำอาจเป็นการเรียก API, รันโค้ด ฯลฯ |
+| Webhook | ประเภทหนึ่งของ hook ที่หมายถึงการเรียก API พร้อม payload ของ event |
+| สมมติว่านักพัฒนาต้องการส่งการแจ้งเตือนเมื่อผู้ใช้ลงชื่อเข้าใช้ผ่านอุปกรณ์ใหม่ นักพัฒนาสามารถเพิ่ม webhook ที่เรียก API ของบริการรักษาความปลอดภัยของเขากับ event PostSignIn ได้ |
-ตัวอย่างการเปิดใช้งาน webhook สองตัวสำหรับเหตุการณ์ `PostSignIn` ใน Logto:
+ตัวอย่างการเปิดใช้งาน web hook สองตัวสำหรับ event `PostSignIn` ใน Logto:
```mermaid
graph LR
@@ -63,11 +63,11 @@ graph LR
-### Logto รองรับ webhook แบบซิงค์หรือไม่? \{#does-logto-support-synced-webhooks}
+### Logto รองรับ synced webhook หรือไม่? \{#does-logto-support-synced-webhooks}
-แม้ว่า webhook แบบซิงค์จะทำให้ flow การลงชื่อเข้าใช้ของผู้ใช้ราบรื่นขึ้น แต่ขณะนี้เรายังไม่รองรับ (แต่จะรองรับในอนาคต) ดังนั้นกรณีที่ต้องพึ่งพา webhook แบบซิงค์ในปัจจุบันจึงต้องใช้วิธีแก้ไขอื่น หากคุณมีคำถามเพิ่มเติม โปรดติดต่อเรา
+แม้ว่า synced webhook จะช่วยให้ flow การลงชื่อเข้าใช้ของผู้ใช้ราบรื่นขึ้น แต่ขณะนี้เรายังไม่รองรับ (แต่จะรองรับในอนาคต) ดังนั้นกรณีที่ต้องพึ่งพา synced webhook ในปัจจุบันจำเป็นต้องใช้วิธีแก้ไขเฉพาะ หากมีคำถามเพิ่มเติมสามารถติดต่อเราได้
@@ -89,18 +89,18 @@ graph LR
-สำหรับ endpoint ที่รับ Webhook ควรตอบกลับด้วยรหัส 2xx ให้เร็วที่สุดเพื่อแจ้ง Logto ว่าได้รับ Webhook แล้ว เนื่องจากแต่ละผู้ใช้อาจมีตรรกะการประมวลผล Webhook ที่แตกต่างกัน งานที่ซับซ้อนมากอาจใช้เวลาหลายวินาที ทำให้ Webhook ของ Logto timeout แนวทางที่ดีที่สุดคือให้คุณมี event queue ของตัวเอง เมื่อได้รับ Webhook จาก Logto ให้นำเหตุการณ์ใส่ queue แล้วตอบกลับ 2xx กลับไป จากนั้นให้ worker ของคุณประมวลผลงานใน queue ทีละขั้นตอน หาก worker พบข้อผิดพลาด ให้จัดการที่เซิร์ฟเวอร์ของคุณเอง
+สำหรับ endpoint ที่รับ Webhook ควรตอบกลับด้วย 2xx response ให้เร็วที่สุดเพื่อแจ้ง Logto ว่าได้รับ Webhook แล้ว เนื่องจากแต่ละผู้ใช้อาจมีตรรกะการประมวลผล Webhook ที่แตกต่างกัน งานที่ซับซ้อนมากอาจใช้เวลาหลายวินาที ทำให้ Webhook ของ Logto timeout แนวปฏิบัติที่ดีที่สุดคือสร้าง event queue ของคุณเอง เมื่อได้รับ Webhook จาก Logto ให้ใส่ event ลงใน queue แล้วตอบกลับ 2xx response จากนั้นให้ worker ของคุณประมวลผลงานใน queue ทีละขั้นตอน หาก worker พบข้อผิดพลาด ให้จัดการที่เซิร์ฟเวอร์ของคุณเอง
-### สามารถรับ IP address ของ client จาก webhook `PostSignIn` ได้หรือไม่? \{#can-i-get-the-client-ip-address-from-postsignin-webhooks}
+### สามารถรับ client IP address จาก webhook `PostSignIn` ได้หรือไม่? \{#can-i-get-the-client-ip-address-from-postsignin-webhooks}
-ได้ คุณสามารถรับ IP address, user agent ฯลฯ ใน payload ของ Webhook หากคุณต้องการข้อมูลที่ยังไม่รองรับในปัจจุบัน สามารถสร้าง feature request ใน GitHub issues หรือ ติดต่อเรา
+ได้ คุณสามารถรับ IP address, user agent ฯลฯ ใน payload ของ Webhook หากต้องการข้อมูลที่ยังไม่รองรับ สามารถสร้าง feature request ใน GitHub issues หรือ ติดต่อเรา
diff --git a/i18n/th/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx b/i18n/th/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
index ca9dff388fa..a126ade6ac6 100644
--- a/i18n/th/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
+++ b/i18n/th/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
@@ -8,27 +8,51 @@ import GearIcon from '@site/src/assets/gear.svg';
# การตั้งค่าบัญชีผู้ใช้
-Logto มีชุด API สำหรับการตั้งค่าบัญชีผู้ใช้ 2 กลุ่ม เพื่อให้ผู้ใช้สามารถจัดการบัญชีและโปรไฟล์ของตนที่จัดเก็บใน Logto ได้
+Logto มีหลายวิธีให้ผู้ใช้จัดการบัญชีและโปรไฟล์ของตนที่จัดเก็บใน Logto
-## ใช้ Account API (แนะนำ) \{#use-account-apis-recommended}
+## ใช้ UI ศูนย์บัญชีผู้ใช้สำเร็จรูป (แนะนำ) \{#use-prebuilt-account-center-ui-recommended}
-Account API ของ Logto คือ endpoint ฝั่งหน้าบ้านที่พร้อมใช้งาน ให้ผู้ใช้ปลายทางสามารถดูและอัปเดตข้อมูลของตนเองได้อย่างปลอดภัย พร้อมการตรวจสอบสิทธิ์ในตัว เพียงฝัง API เหล่านี้ในแอปพลิเคชันฝั่งลูกค้าของคุณ ก็จะได้หน้าการตั้งค่าบัญชีผู้ใช้แบบ self-service ที่สมบูรณ์แบบ
+Logto มี UI ศูนย์บัญชีผู้ใช้สำเร็จรูปที่ให้หน้าสำเร็จรูปพร้อมใช้งานสำหรับผู้ใช้ปลายทางในการจัดการการตั้งค่าบัญชีของตนเอง นี่เป็นวิธีที่เร็วที่สุดในการเพิ่มการจัดการบัญชีให้กับแอปของคุณ
คุณสมบัติเด่น:
-- **การตั้งค่าผู้ใช้ปลายทาง**: ผู้ใช้จัดการตัวระบุและข้อมูลรับรองการลงชื่อเข้าใช้ของตนเอง บัญชีโซเชียล วิธี MFA และข้อมูลโปรไฟล์
-- **ผสานรวมฝั่งลูกค้า**: ออกแบบมาให้ใช้งานโดยตรงในฝั่งหน้าบ้านได้อย่างปลอดภัย
-- **ตั้งค่าน้อยมาก**: endpoint พร้อมใช้ ไม่ต้องมีเซิร์ฟเวอร์เอง
+- **ไม่ต้องพัฒนาเอง**: หน้าสำเร็จรูปพร้อมใช้งานทันที
+- **ประสบการณ์ที่สอดคล้องกัน**: รูปลักษณ์และความรู้สึกเหมือนกับประสบการณ์การลงชื่อเข้าใช้ของ Logto
+- **ความปลอดภัยในตัว**: กระบวนการยืนยันตัวตนและมาตรการความปลอดภัยทั้งหมดถูกจัดการให้อัตโนมัติ
+- **ฟังก์ชันครบถ้วน**: รองรับการอัปเดตอีเมล เบอร์โทร ชื่อผู้ใช้ รหัสผ่าน และการตั้งค่า MFA
+
+,
+ },
+ },
+ ]}
+/>
+
+## ใช้ Account API \{#use-account-apis}
+
+Account API ของ Logto เป็น endpoint ฝั่ง front-end ที่พร้อมใช้งาน ให้ผู้ใช้ปลายทางดูและอัปเดตข้อมูลของตนเองได้อย่างปลอดภัย พร้อมตรวจสอบสิทธิ์ในตัว ใช้เมื่อคุณต้องการสร้างหน้าตั้งค่าบัญชีแบบกำหนดเองด้วย UI ของคุณเอง
+
+คุณสมบัติเด่น:
+
+- **การตั้งค่าผู้ใช้ปลายทาง**: ผู้ใช้จัดการตัวระบุและข้อมูลรับรองการลงชื่อเข้าใช้ บัญชีโซเชียล วิธี MFA และข้อมูลโปรไฟล์ของตนเอง
+- **ผสานรวมฝั่ง client**: ออกแบบมาให้ใช้โดยตรงใน front-end ได้อย่างปลอดภัย
+- **ปรับแต่งได้เต็มที่**: สร้าง UI ของคุณเองโดยใช้ API ที่ปลอดภัยของ Logto
- **ควบคุมสิทธิ์**: เปิด / ปิด Account API ที่ต้องการผ่านการตั้งค่า Management API
,
},
@@ -38,11 +62,11 @@ Account API ของ Logto คือ endpoint ฝั่งหน้าบ้า
## ใช้ Management API \{#use-management-apis}
-Management API คืออินเทอร์เฟซหลักสำหรับการจัดการของ Logto ใช้งานได้เฉพาะผู้ดูแลระบบหรือบริการฝั่งเซิร์ฟเวอร์เท่านั้น ให้ความยืดหยุ่นสูงสุดและควบคุม CRUD ได้เต็มรูปแบบกับทุกบัญชีผู้ใช้ ช่วยให้คุณสร้างเครื่องมือจัดการแบบกำหนดเองได้ หากคุณต้องการ self-service portal ที่ปรับแต่งได้เต็มที่ หรือฟีเจอร์จัดการผู้ใช้ที่ไม่มาตรฐาน คุณสามารถเปิด endpoint ของ Management API บางส่วนไว้หลัง “Account API” ของคุณเอง และปกป้องด้วยตรรกะการยืนยันตัวตนของธุรกิจคุณ
+Management API คืออินเทอร์เฟซหลักสำหรับผู้ดูแลระบบของ Logto เข้าถึงได้เฉพาะแอดมินหรือบริการฝั่ง back-end เท่านั้น ให้ความยืดหยุ่นสูงสุดและควบคุม CRUD ได้เต็มรูปแบบกับทุกบัญชีผู้ใช้ ช่วยให้คุณสร้างเครื่องมือจัดการแบบกำหนดเอง หากคุณต้องการพอร์ทัล self-service แบบกำหนดเองเต็มรูปแบบหรือฟีเจอร์จัดการผู้ใช้ที่ไม่มาตรฐาน คุณสามารถเปิด endpoint Management API ที่เลือกไว้หลัง “Account API” ของคุณเองและปกป้องด้วยตรรกะการยืนยันตัวตนของธุรกิจคุณ
คุณสมบัติเด่น:
-- **เข้าถึงเฉพาะผู้ดูแลระบบ**: สำหรับนักพัฒนาและระบบ back-office
+- **เข้าถึงเฉพาะแอดมิน**: สำหรับนักพัฒนาและระบบ back-office
- **จัดการวงจรชีวิตผู้ใช้ครบถ้วน**: สร้าง อ่าน อัปเดต ลบ ระงับ หรือกู้คืนบัญชี
- **การดำเนินการขั้นสูง**: สร้างโทเค็นการเข้าถึงส่วนตัว สวมรอยผู้ใช้ เชื่อมต่อแอป OAuth ปรับแต่ง workflow
@@ -53,7 +77,7 @@ Management API คืออินเทอร์เฟซหลักสำห
label: 'ใช้ Logto Management API',
href: '/end-user-flows/account-settings/by-management-api',
description:
- 'เรียนรู้เพิ่มเติมเกี่ยวกับการใช้ Management API เพื่อสร้างหน้าการตั้งค่าบัญชีผู้ใช้ของคุณเอง',
+ 'เรียนรู้เพิ่มเติมเกี่ยวกับการใช้ Management API สำหรับผู้ใช้เพื่อสร้างหน้าตั้งค่าบัญชีของคุณเอง',
customProps: {
icon: ,
},
@@ -61,13 +85,14 @@ Management API คืออินเทอร์เฟซหลักสำห
]}
/>
-## Account API กับ Management API \{#account-api-vs-management-api}
+## เปรียบเทียบตัวเลือกการตั้งค่าบัญชีผู้ใช้ \{#comparison-of-account-settings-options}
-| คุณสมบัติ | Account API | Management API |
-| --------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
-| **ผู้ใช้เป้าหมาย** | ผู้ใช้ปลายทาง | ผู้ดูแลระบบ / นักพัฒนา |
-| **บริบทการเข้าถึง** | ฝั่งลูกค้า / หน้าบ้าน | ฝั่งเซิร์ฟเวอร์ / หลังบ้าน |
-| **โมเดลสิทธิ์** | เปิด / ปิด Account API ที่ต้องการผ่าน Management API | นักพัฒนากำหนดได้อย่างอิสระ |
-| **ฟีเจอร์ที่รองรับ** | ดู อัปเดต และลบ: ชื่อผู้ใช้ อีเมล เบอร์โทร รหัสผ่าน บัญชีโซเชียล MFA โปรไฟล์ | ทุกฟีเจอร์พื้นฐาน + ลบ / ระงับ / กู้คืนบัญชี โทเค็นการเข้าถึงส่วนตัว สวมรอยผู้ใช้ เชื่อมต่อแอป OAuth ฯลฯ |
-| **ความซับซ้อนในการตั้งค่า** | ต่ำมาก (เสียบแล้วใช้ได้เลย) | ปานกลางถึงสูง (ต้องพัฒนาเอง) |
-| **ควรใช้เมื่อ** | เมื่อต้องการเปิดหน้าตั้งค่าบัญชีผู้ใช้แบบ self-service ที่ปลอดภัยในแอปของคุณอย่างรวดเร็ว | เมื่อ Account API ไม่ตอบโจทย์ เช่น ต้องการตรรกะลบบัญชีที่ซับซ้อน การดำเนินการที่มีความเสี่ยงสูง หรือสร้างเครื่องมือ back-office |
+| คุณสมบัติ | UI ศูนย์บัญชีผู้ใช้สำเร็จรูป | Account API | Management API |
+| --------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
+| **ผู้ใช้เป้าหมาย** | ผู้ใช้ปลายทาง | ผู้ใช้ปลายทาง | แอดมิน / นักพัฒนา |
+| **บริบทการเข้าถึง** | เปลี่ยนเส้นทางไปยังหน้าที่โฮสต์โดย Logto | ฝั่ง client / front-end | ฝั่ง server / back-end |
+| **โมเดลสิทธิ์** | เปิด / ปิดฟิลด์ที่ต้องการผ่านการตั้งค่าศูนย์บัญชีผู้ใช้ | เปิด / ปิด Account API ที่ต้องการผ่าน Management API | นักพัฒนากำหนดเองได้เต็มที่ |
+| **ฟีเจอร์ที่รองรับ** | อัปเดต: อีเมล, เบอร์โทร, ชื่อผู้ใช้, รหัสผ่าน, MFA (TOTP, passkeys, backup codes) | ดู, อัปเดต, ลบ: ชื่อผู้ใช้, อีเมล, เบอร์โทร, รหัสผ่าน, บัญชีโซเชียล, MFA, โปรไฟล์ | ทุกการตั้งค่าพื้นฐาน + ลบ / ระงับ / กู้คืนบัญชี, โทเค็นการเข้าถึงส่วนตัว, การสวมรอยผู้ใช้, เชื่อมต่อแอป OAuth ฯลฯ |
+| **ปรับแต่ง UI** | รับการตั้งค่าแบรนด์จากประสบการณ์ลงชื่อเข้าใช้ | ปรับแต่งได้เต็มที่ (สร้าง UI เอง) | ปรับแต่งได้เต็มที่ (สร้าง UI เอง) |
+| **ความซับซ้อนในการตั้งค่า** | ไม่มี (แค่ลิงก์ไปหน้าสำเร็จรูป) | ต่ำ (ใช้ API กับ UI ของคุณ) | ปานกลางถึงสูง (ต้องพัฒนาเอง) |
+| **ควรใช้เมื่อ** | เมื่อต้องการเพิ่มการจัดการบัญชีอย่างรวดเร็วโดยไม่ต้องสร้างหน้าเอง | เมื่อต้องการ UI กำหนดเองแต่ยังใช้ API ที่ปลอดภัยของ Logto | เมื่อ Account API ไม่ตอบโจทย์ เช่น ต้องการตรรกะลบบัญชีซับซ้อน, การดำเนินการเสี่ยงสูง, หรือสร้างเครื่องมือ back-office |
diff --git a/i18n/th/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx b/i18n/th/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
new file mode 100644
index 00000000000..64156590a2a
--- /dev/null
+++ b/i18n/th/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
@@ -0,0 +1,152 @@
+---
+description: เรียนรู้วิธีใช้ UI ศูนย์บัญชีผู้ใช้ (Account Center) ที่สร้างไว้ล่วงหน้าของ Logto เพื่อให้ผู้ใช้จัดการบัญชีของตนเอง
+sidebar_position: 2
+---
+
+# การตั้งค่าบัญชีผู้ใช้ด้วย UI ศูนย์บัญชีผู้ใช้ที่สร้างไว้ล่วงหน้า
+
+## UI ศูนย์บัญชีผู้ใช้ที่สร้างไว้ล่วงหน้าคืออะไร \{#what-is-the-prebuilt-account-center-ui}
+
+Logto มี UI ศูนย์บัญชีผู้ใช้ที่สร้างไว้ล่วงหน้า ซึ่งให้หน้าสำเร็จรูปสำหรับผู้ใช้ปลายทางในการจัดการการตั้งค่าบัญชีของตนเอง UI นี้โฮสต์โดย Logto และจัดการงานการจัดการบัญชีทั่วไป เช่น:
+
+- อัปเดตที่อยู่อีเมล
+- อัปเดตหมายเลขโทรศัพท์
+- อัปเดตชื่อผู้ใช้
+- ตั้งค่าหรืออัปเดตรหัสผ่าน
+- จัดการการตั้งค่า MFA (แอปยืนยันตัวตนแบบ TOTP, passkeys, รหัสสำรอง)
+
+UI ศูนย์บัญชีผู้ใช้ที่สร้างไว้ล่วงหน้านี้ออกแบบมาให้ทำงานร่วมกับแอปของคุณได้อย่างไร้รอยต่อ มอบประสบการณ์ผู้ใช้ที่สอดคล้องกันโดยไม่ต้องสร้างหน้าจัดการบัญชีเอง
+
+## ข้อดีของการใช้ UI ที่สร้างไว้ล่วงหน้า \{#benefits-of-using-the-prebuilt-ui}
+
+- **ไม่ต้องพัฒนาเอง**: หน้าสำเร็จรูปพร้อมใช้งานทันที
+- **ประสบการณ์ที่สอดคล้องกัน**: รูปลักษณ์และความรู้สึกเหมือนกับประสบการณ์การลงชื่อเข้าใช้ของ Logto
+- **ความปลอดภัยในตัว**: กระบวนการยืนยันตัวตนและมาตรการความปลอดภัยทั้งหมดถูกจัดการให้อัตโนมัติ
+- **อัปเดตเสมอ**: ฟีเจอร์ใหม่และการปรับปรุงความปลอดภัยจะถูกเพิ่มให้อัตโนมัติ
+
+## หน้าที่มีให้ใช้งาน \{#available-pages}
+
+UI ศูนย์บัญชีผู้ใช้ที่สร้างไว้ล่วงหน้ามีหน้าต่อไปนี้ ซึ่งเข้าถึงได้ผ่าน path `/account` ของ tenant endpoint ของ Logto ของคุณ:
+
+| Path | คำอธิบาย |
+| -------------------------------- | ----------------------------- |
+| `/account/email` | อัปเดตอีเมลหลัก |
+| `/account/phone` | อัปเดตหมายเลขโทรศัพท์หลัก |
+| `/account/username` | อัปเดตชื่อผู้ใช้ |
+| `/account/password` | ตั้งค่าหรืออัปเดตรหัสผ่าน |
+| `/account/passkey/add` | เพิ่ม passkey ใหม่ (WebAuthn) |
+| `/account/passkey/manage` | ดูและจัดการ passkey ที่มีอยู่ |
+| `/account/authenticator-app` | ตั้งค่าแอปยืนยันตัวตนแบบ TOTP |
+| `/account/backup-codes/generate` | สร้างรหัสสำรองใหม่ |
+| `/account/backup-codes/manage` | ดูและจัดการรหัสสำรอง |
+
+ตัวอย่างเช่น หาก tenant endpoint ของคุณคือ `https://example.logto.app` หน้าสำหรับอัปเดตอีเมลจะอยู่ที่ `https://example.logto.app/account/email`
+
+## วิธีใช้ UI ที่สร้างไว้ล่วงหน้า \{#how-to-use-the-prebuilt-ui}
+
+### ขั้นตอนที่ 1: เปิดใช้งาน Account API \{#step-1-enable-account-api}
+
+UI ศูนย์บัญชีผู้ใช้ที่สร้างไว้ล่วงหน้าพึ่งพา Account API ให้ไปที่ Console > Sign-in & account > Account center และเปิดใช้งาน Account API
+
+กำหนดสิทธิ์ของแต่ละฟิลด์ตามที่คุณต้องการ:
+
+- ตั้งค่าเป็น `Edit` เพื่อให้ผู้ใช้แก้ไขได้
+- ตั้งค่าเป็น `ReadOnly` หากต้องการให้ผู้ใช้ดูได้อย่างเดียว
+- ตั้งค่าเป็น `Off` เพื่อซ่อนฟิลด์นั้นโดยสมบูรณ์
+
+### ขั้นตอนที่ 2: ลิงก์ไปยังหน้าสำเร็จรูปจากแอปของคุณ \{#step-2-link-to-prebuilt-pages}
+
+ในการใช้ UI ศูนย์บัญชีผู้ใช้ที่สร้างไว้ล่วงหน้า คุณต้องเปลี่ยนเส้นทางผู้ใช้จากแอปของคุณไปยังหน้าของ Logto ที่เหมาะสม มี 2 วิธี:
+
+#### วิธีที่ A: ลิงก์โดยตรงพร้อมพารามิเตอร์ redirect \{#approach-a-direct-linking}
+
+เพิ่มลิงก์ในแอปของคุณเพื่อเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าสำเร็จรูป โดยใส่พารามิเตอร์ `redirect` เพื่อให้ผู้ใช้กลับมายังแอปของคุณหลังจากดำเนินการเสร็จสิ้น:
+
+```
+https://[tenant-id].logto.app/account/email?redirect=https://your-app.com/settings
+```
+
+เมื่อผู้ใช้อัปเดตอีเมลเสร็จ จะถูกเปลี่ยนเส้นทางกลับไปที่ `https://your-app.com/settings`
+
+#### วิธีที่ B: ฝังใน flow การตั้งค่าบัญชีของคุณ \{#approach-b-embedding}
+
+คุณสามารถผสานหน้าสำเร็จรูปเข้ากับ workflow การตั้งค่าบัญชีที่มีอยู่ของคุณได้:
+
+1. ในหน้าตั้งค่าบัญชีของแอป แสดงข้อมูลปัจจุบันของผู้ใช้
+2. มีปุ่ม “แก้ไข” หรือ “อัปเดต” ที่ลิงก์ไปยังหน้าสำเร็จรูปที่เกี่ยวข้อง
+3. หลังจากผู้ใช้ดำเนินการเสร็จ จะถูกเปลี่ยนเส้นทางกลับมายังแอปของคุณ
+
+ตัวอย่างการใช้งาน:
+
+```tsx
+function AccountSettings() {
+ const tenantEndpoint = 'https://example.logto.app';
+ const redirectUrl = encodeURIComponent(window.location.href);
+
+ return (
+
+
การตั้งค่าบัญชีผู้ใช้
+
+
+
+
+
+
+
+ );
+}
+```
+
+### ขั้นตอนที่ 3: จัดการการเปลี่ยนเส้นทางสำเร็จ \{#step-3-handle-success-redirects}
+
+หลังจากผู้ใช้ดำเนินการเสร็จ จะถูกเปลี่ยนเส้นทางไปยัง URL ที่คุณระบุ พร้อมพารามิเตอร์ `show_success` (ถ้ามี) คุณสามารถใช้สิ่งนี้เพื่อแสดงข้อความสำเร็จ:
+
+```tsx
+function SettingsPage() {
+ const searchParams = new URLSearchParams(window.location.search);
+ const showSuccess = searchParams.get('show_success');
+
+ return (
+
+ {showSuccess === 'email' &&
อัปเดตอีเมลเรียบร้อยแล้ว!
}
+ {showSuccess === 'password' &&
เปลี่ยนรหัสผ่านเรียบร้อยแล้ว!
}
+ {/* ... ส่วนอื่น ๆ ของหน้าตั้งค่า */}
+
+ );
+}
+```
+
+## ข้อควรพิจารณาด้านความปลอดภัย \{#security-considerations}
+
+UI ศูนย์บัญชีผู้ใช้ที่สร้างไว้ล่วงหน้ามีมาตรการความปลอดภัยในตัว:
+
+- **การยืนยันตัวตน**: ก่อนเปลี่ยนแปลงข้อมูลสำคัญ (อีเมล, โทรศัพท์, รหัสผ่าน, MFA) ผู้ใช้ต้องยืนยันตัวตนด้วยรหัสผ่านปัจจุบันหรือวิธีการยืนยันที่มีอยู่
+- **รหัสยืนยัน**: การอัปเดตอีเมลและโทรศัพท์ต้องใช้รหัสยืนยันที่ส่งไปยังที่อยู่/หมายเลขใหม่
+- **การตรวจสอบเซสชัน**: ทุกการดำเนินการจะตรวจสอบเซสชันของผู้ใช้เพื่อป้องกันการเข้าถึงโดยไม่ได้รับอนุญาต
+
+## ตัวเลือกการปรับแต่ง \{#customization-options}
+
+UI ศูนย์บัญชีผู้ใช้ที่สร้างไว้ล่วงหน้าจะรับการตั้งค่าแบรนด์จากการตั้งค่าประสบการณ์การลงชื่อเข้าใช้ของคุณ รวมถึง:
+
+- โลโก้และสี
+- โหมดมืด / สว่าง
+- การตั้งค่าภาษา
+
+หากคุณต้องการปรับแต่งมากกว่าที่ UI สำเร็จรูปนี้ให้ได้ แนะนำให้ใช้ [Account API](/end-user-flows/account-settings/by-account-api) เพื่อสร้างหน้าจัดการบัญชีของคุณเอง
+
+## แหล่งข้อมูลที่เกี่ยวข้อง \{#related-resources}
+
+- [การตั้งค่าบัญชีผู้ใช้ด้วย Account API](/end-user-flows/account-settings/by-account-api) - สร้างการจัดการบัญชีแบบกำหนดเองด้วยการควบคุม API เต็มรูปแบบ
+- [การตั้งค่าบัญชีผู้ใช้ด้วย Management API](/end-user-flows/account-settings/by-management-api) - การจัดการบัญชีในระดับผู้ดูแลระบบ
+- [การตั้งค่า MFA](/end-user-flows/mfa) - ตั้งค่าการยืนยันตัวตนหลายปัจจัย (MFA)
diff --git a/i18n/th/docusaurus-plugin-content-docs/current/introduction/README.mdx b/i18n/th/docusaurus-plugin-content-docs/current/introduction/README.mdx
index abcc4021b20..a79eb71f570 100644
--- a/i18n/th/docusaurus-plugin-content-docs/current/introduction/README.mdx
+++ b/i18n/th/docusaurus-plugin-content-docs/current/introduction/README.mdx
@@ -1,5 +1,5 @@
---
-description: เปิดตัวระบบจัดการเอกลักษณ์และการเข้าถึงของคุณอย่างรวดเร็วด้วยการผสาน Logto สนุกกับการยืนยันตัวตน (Authentication), การอนุญาต (Authorization) และการจัดการหลายผู้เช่า (multi-tenant) ในที่เดียว
+description: เปิดตัวระบบจัดการเอกลักษณ์และการเข้าถึงของคุณอย่างรวดเร็วด้วยการผสาน Logto สนุกกับการยืนยันตัวตน (Authentication), การอนุญาต (Authorization), และการจัดการหลายผู้เช่า (multi-tenant) ในที่เดียว
---
import AuditLogIcon from '@site/src/assets/audit-log.svg';
@@ -32,7 +32,7 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
# แนะนำ
-ยินดีต้อนรับสู่เอกสาร Logto! Logto คือโซลูชันการจัดการเอกลักษณ์และการเข้าถึง (IAM) ที่ออกแบบมาสำหรับแอปสมัยใหม่และผลิตภัณฑ์ SaaS โดยมอบระบบการยืนยันตัวตน (Authentication) และการอนุญาต (Authorization) ที่ปลอดภัย ขยายได้ และปรับแต่งได้สำหรับแอปพลิเคชันของคุณ
+ยินดีต้อนรับสู่เอกสาร Logto! Logto คือโซลูชันการจัดการเอกลักษณ์และการเข้าถึง (IAM) ที่ออกแบบมาสำหรับแอปสมัยใหม่และผลิตภัณฑ์ SaaS โดยให้ระบบการยืนยันตัวตน (Authentication) และการอนุญาต (Authorization) ที่ปลอดภัย ขยายได้ และปรับแต่งได้สำหรับแอปพลิเคชันของคุณ
## สำรวจตามฟีเจอร์ \{#explore-by-features}
@@ -143,6 +143,10 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
icon: ,
docId: 'developers/custom-token-claims/README',
},
+ {
+ icon: ,
+ docId: 'developers/custom-id-token/README',
+ },
{
icon: ,
docId: 'developers/user-impersonation',
@@ -158,7 +162,7 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
]}
/>
-## สำรวจตามเครื่องมือสนับสนุน \{#explore-by-support-toolkit}
+## สำรวจตามชุดเครื่องมือสนับสนุน \{#explore-by-support-toolkit}
ความสามารถของ Logto ถูกสร้างขึ้นบนเสาหลัก 4 ด้าน ซึ่งเป็นรากฐานของฟีเจอร์ที่คุณสามารถผสานเข้ากับผลิตภัณฑ์หรือธุรกิจของคุณได้อย่างง่ายดาย
@@ -169,7 +173,7 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
label: 'Logto Console',
href: 'https://cloud.logto.io',
description:
- 'อินเทอร์เฟซบนเว็บสำหรับตั้งค่าและจัดการทรัพยากร ช่วยให้ตั้งค่าประสบการณ์การลงชื่อเข้าใช้ได้อย่างรวดเร็วและจัดการเอกลักษณ์ได้ง่าย',
+ 'อินเทอร์เฟซบนเว็บสำหรับตั้งค่าและจัดการทรัพยากร ช่วยให้ตั้งค่าประสบการณ์การลงชื่อเข้าใช้ได้อย่างรวดเร็วและบริหารจัดการเอกลักษณ์ได้ง่าย',
customProps: {
icon: ,
},
@@ -179,7 +183,7 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
label: 'End-user experience',
href: '/end-user-flows',
description:
- 'มอบกระบวนการยืนยันตัวตน (Authentication) ที่ครบถ้วนและอินเทอร์เฟซผู้ใช้ พร้อมการปรับแต่งอย่างยืดหยุ่นผ่าน Logto Console และ API',
+ 'นำเสนอ flow การยืนยันตัวตน (Authentication) ที่สมบูรณ์และ UI สำหรับผู้ใช้ พร้อมการปรับแต่งอย่างยืดหยุ่นผ่าน Logto Console และ API',
customProps: {
icon: ,
},
@@ -199,7 +203,7 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
label: 'SDKs',
href: '/quick-starts',
description:
- 'สำรวจบทเรียนและ SDK แบบครบวงจรของเรา เพื่อเริ่มต้นกับเฟรมเวิร์กที่คุณชื่นชอบได้อย่างรวดเร็ว',
+ 'สำรวจคู่มือและ SDK แบบ end-to-end ของเรา เพื่อเริ่มต้นกับเฟรมเวิร์กที่คุณชื่นชอบได้อย่างรวดเร็ว',
customProps: {
icon: ,
},
@@ -209,7 +213,7 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
label: 'Logto MCP Server',
href: '/logto-cloud/logto-mcp-server',
description:
- 'เซิร์ฟเวอร์ MCP ระยะไกลที่เชื่อมต่อเครื่องมือ AI และ IDE กับ Logto Cloud เพื่อจัดการทรัพยากรและผสานการยืนยันตัวตน',
+ 'เซิร์ฟเวอร์ MCP ระยะไกลที่เชื่อมต่อเครื่องมือ AI และ IDE เข้ากับ Logto Cloud เพื่อจัดการทรัพยากรและผสานการยืนยันตัวตน (Authentication)',
customProps: {
icon: ,
},
@@ -217,7 +221,7 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
]}
/>
-## สำรวจตามประเภทการติดตั้งใช้งาน \{#explore-by-deployment-types}
+## สำรวจตามประเภทการปรับใช้ \{#explore-by-deployment-types}
,
},
@@ -246,7 +250,7 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
## เข้าร่วมชุมชนของเรา \{#join-our-community}
-เข้าร่วมเซิร์ฟเวอร์ [Logto Discord](https://discord.com/invite/UEPaF3j5e6) — ชุมชนที่มีชีวิตชีวาสำหรับนักพัฒนาและธุรกิจ ร่วมพูดคุย อัปเดตข่าวสาร และแบ่งปันข้อเสนอแนะ
+เข้าร่วม [Logto Discord](https://discord.com/invite/UEPaF3j5e6) — ชุมชนที่มีชีวิตชีวาสำหรับนักพัฒนาและธุรกิจ ร่วมพูดคุย อัปเดตข่าวสาร และแบ่งปันข้อเสนอแนะ
diff --git a/i18n/th/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md b/i18n/th/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
index 73c0f8b9fd4..d4f40c52a8b 100644
--- a/i18n/th/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
+++ b/i18n/th/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
@@ -1,81 +1,87 @@
-นี่คือรายการขอบเขต (scopes) ที่รองรับและการอ้างสิทธิ์ (claims) ที่เกี่ยวข้อง:
+นี่คือรายการขอบเขต (Scopes) ที่รองรับและการอ้างสิทธิ์ (Claims) ที่เกี่ยวข้อง:
-**`openid`**
+### ขอบเขต OIDC มาตรฐาน {#standard-oidc-scopes}
-| ชื่อการอ้างสิทธิ์ | ประเภท | คำอธิบาย | ต้องใช้ userinfo? |
-| ----------------- | -------- | ------------------------- | ----------------- |
-| sub | `string` | ตัวระบุที่ไม่ซ้ำของผู้ใช้ | ไม่ |
+**`openid`** (ค่าเริ่มต้น)
-**`profile`**
+| Claim name | Type | คำอธิบาย |
+| ---------- | -------- | ------------------------- |
+| sub | `string` | ตัวระบุที่ไม่ซ้ำของผู้ใช้ |
-| ชื่อการอ้างสิทธิ์ | ประเภท | คำอธิบาย | ต้องใช้ userinfo? |
-| ----------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
-| name | `string` | ชื่อเต็มของผู้ใช้ | ไม่ |
-| username | `string` | ชื่อผู้ใช้ของผู้ใช้ | ไม่ |
-| picture | `string` | URL ของรูปโปรไฟล์ของผู้ใช้ปลายทาง (End-User) URL นี้ **ต้อง** อ้างอิงถึงไฟล์รูปภาพ (เช่น ไฟล์ PNG, JPEG หรือ GIF) ไม่ใช่หน้าเว็บที่มีรูปภาพ โปรดทราบว่า URL นี้ **ควร** อ้างอิงถึงรูปโปรไฟล์ของผู้ใช้ปลายทางที่เหมาะสมสำหรับแสดงเมื่ออธิบายผู้ใช้ปลายทาง ไม่ใช่รูปภาพใด ๆ ที่ผู้ใช้ถ่ายมา | ไม่ |
-| created_at | `number` | เวลาที่สร้างผู้ใช้ปลายทาง เวลานี้แสดงเป็นจำนวนมิลลิวินาทีตั้งแต่ Unix epoch (1970-01-01T00:00:00Z) | ไม่ |
-| updated_at | `number` | เวลาที่ข้อมูลของผู้ใช้ปลายทางถูกอัปเดตล่าสุด เวลานี้แสดงเป็นจำนวนมิลลิวินาทีตั้งแต่ Unix epoch (1970-01-01T00:00:00Z) | ไม่ |
+**`profile`** (ค่าเริ่มต้น)
-[การอ้างสิทธิ์มาตรฐาน](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) อื่น ๆ เช่น `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `website`, `gender`, `birthdate`, `zoneinfo`, และ `locale` จะถูกรวมอยู่ในขอบเขต `profile` ด้วย โดยไม่จำเป็นต้องร้องขอ endpoint userinfo ความแตกต่างเมื่อเทียบกับการอ้างสิทธิ์ข้างต้นคือ การอ้างสิทธิ์เหล่านี้จะถูกส่งกลับเมื่อค่าของมันไม่ว่างเปล่าเท่านั้น ในขณะที่การอ้างสิทธิ์ข้างต้นจะส่งกลับ `null` หากค่าของมันว่างเปล่า
+| Claim name | Type | คำอธิบาย |
+| ---------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| name | `string` | ชื่อเต็มของผู้ใช้ |
+| username | `string` | ชื่อผู้ใช้ของผู้ใช้ |
+| picture | `string` | URL ของรูปโปรไฟล์ผู้ใช้ปลายทาง (End-User) URL นี้ต้องชี้ไปที่ไฟล์รูปภาพ (เช่น PNG, JPEG, หรือ GIF) ไม่ใช่หน้าเว็บที่มีรูปภาพ โปรดทราบว่า URL นี้ควรอ้างอิงถึงรูปโปรไฟล์ของผู้ใช้ปลายทางโดยเฉพาะ เหมาะสำหรับแสดงเมื่ออธิบายผู้ใช้ปลายทาง ไม่ใช่รูปภาพใด ๆ ที่ผู้ใช้ถ่ายมาโดยพลการ |
+| created_at | `number` | เวลาที่สร้างผู้ใช้ปลายทาง เวลานี้แสดงเป็นจำนวนมิลลิวินาทีตั้งแต่ Unix epoch (1970-01-01T00:00:00Z) |
+| updated_at | `number` | เวลาที่ข้อมูลของผู้ใช้ปลายทางถูกอัปเดตล่าสุด เวลานี้แสดงเป็นจำนวนมิลลิวินาทีตั้งแต่ Unix epoch (1970-01-01T00:00:00Z) |
+
+[การอ้างสิทธิ์มาตรฐาน](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) อื่น ๆ เช่น `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `website`, `gender`, `birthdate`, `zoneinfo`, และ `locale` จะถูกรวมอยู่ในขอบเขต `profile` โดยไม่จำเป็นต้องร้องขอ endpoint userinfo ความแตกต่างเมื่อเทียบกับการอ้างสิทธิ์ข้างต้นคือ การอ้างสิทธิ์เหล่านี้จะถูกส่งกลับเมื่อค่าของมันไม่ว่างเปล่าเท่านั้น ในขณะที่การอ้างสิทธิ์ข้างต้นจะส่งกลับ `null` หากค่าของมันว่างเปล่า
:::note
-ต่างจากการอ้างสิทธิ์มาตรฐาน การอ้างสิทธิ์ `created_at` และ `updated_at` ใช้หน่วยมิลลิวินาทีแทนที่จะเป็นวินาที
+ต่างจากการอ้างสิทธิ์มาตรฐาน การอ้างสิทธิ์ `created_at` และ `updated_at` ใช้หน่วยเป็นมิลลิวินาทีแทนที่จะเป็นวินาที
:::
**`email`**
-| ชื่อการอ้างสิทธิ์ | ประเภท | คำอธิบาย | ต้องใช้ userinfo? |
-| ----------------- | --------- | ------------------------------- | ----------------- |
-| email | `string` | อีเมลของผู้ใช้ | ไม่ |
-| email_verified | `boolean` | อีเมลได้รับการยืนยันแล้วหรือไม่ | ไม่ |
+| Claim name | Type | คำอธิบาย |
+| -------------- | --------- | ------------------------------- |
+| email | `string` | อีเมลของผู้ใช้ |
+| email_verified | `boolean` | อีเมลได้รับการยืนยันแล้วหรือไม่ |
**`phone`**
-| ชื่อการอ้างสิทธิ์ | ประเภท | คำอธิบาย | ต้องใช้ userinfo? |
-| --------------------- | --------- | ----------------------------------------- | ----------------- |
-| phone_number | `string` | หมายเลขโทรศัพท์ของผู้ใช้ | ไม่ |
-| phone_number_verified | `boolean` | หมายเลขโทรศัพท์ได้รับการยืนยันแล้วหรือไม่ | ไม่ |
+| Claim name | Type | คำอธิบาย |
+| --------------------- | --------- | ----------------------------------------- |
+| phone_number | `string` | หมายเลขโทรศัพท์ของผู้ใช้ |
+| phone_number_verified | `boolean` | หมายเลขโทรศัพท์ได้รับการยืนยันแล้วหรือไม่ |
**`address`**
-โปรดดูรายละเอียดของการอ้างสิทธิ์ที่อยู่ได้ที่ [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#AddressClaim)
+โปรดดูรายละเอียดของการอ้างสิทธิ์ address ได้ที่ [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#AddressClaim)
+
+:::info
+ขอบเขตที่มีเครื่องหมาย **(ค่าเริ่มต้น)** จะถูกร้องขอโดย Logto SDK เสมอ การอ้างสิทธิ์ภายใต้ขอบเขต OIDC มาตรฐานจะถูกรวมอยู่ในโทเค็น ID เสมอเมื่อมีการร้องขอขอบเขตที่เกี่ยวข้อง — ไม่สามารถปิดการใช้งานได้
+:::
+
+### ขอบเขตเพิ่มเติม {#extended-scopes}
+
+ขอบเขตต่อไปนี้ถูกขยายโดย Logto และจะส่งคืนการอ้างสิทธิ์ผ่าน [userinfo endpoint](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo) การอ้างสิทธิ์เหล่านี้สามารถตั้งค่าให้ถูกรวมอยู่ในโทเค็น ID ได้โดยตรงผ่าน Console > Custom JWT ดูรายละเอียดเพิ่มเติมที่ [Custom ID token](/developers/custom-id-token)
**`custom_data`**
-| ชื่อการอ้างสิทธิ์ | ประเภท | คำอธิบาย | ต้องใช้ userinfo? |
-| ----------------- | -------- | ----------------------- | ----------------- |
-| custom_data | `object` | ข้อมูลกำหนดเองของผู้ใช้ | ใช่ |
+| Claim name | Type | คำอธิบาย | รวมใน ID token โดยค่าเริ่มต้น |
+| ----------- | -------- | ----------------------- | ----------------------------- |
+| custom_data | `object` | ข้อมูล custom ของผู้ใช้ | |
**`identities`**
-| ชื่อการอ้างสิทธิ์ | ประเภท | คำอธิบาย | ต้องใช้ userinfo? |
-| ----------------- | -------- | -------------------------------- | ----------------- |
-| identities | `object` | ข้อมูลตัวตนที่เชื่อมโยงของผู้ใช้ | ใช่ |
-| sso_identities | `array` | ข้อมูล SSO ที่เชื่อมโยงของผู้ใช้ | ใช่ |
+| Claim name | Type | คำอธิบาย | รวมใน ID token โดยค่าเริ่มต้น |
+| -------------- | -------- | -------------------------------- | ----------------------------- |
+| identities | `object` | ข้อมูลตัวตนที่เชื่อมโยงของผู้ใช้ | |
+| sso_identities | `array` | ข้อมูล SSO ที่เชื่อมโยงของผู้ใช้ | |
**`roles`**
-| ชื่อการอ้างสิทธิ์ | ประเภท | คำอธิบาย | ต้องใช้ userinfo? |
-| ----------------- | ---------- | ---------------------- | ----------------- |
-| roles | `string[]` | บทบาทของผู้ใช้ (Roles) | ไม่ |
+| Claim name | Type | คำอธิบาย | รวมใน ID token โดยค่าเริ่มต้น |
+| ---------- | ---------- | -------------- | ----------------------------- |
+| roles | `string[]` | บทบาทของผู้ใช้ | ✅ |
**`urn:logto:scope:organizations`**
-| ชื่อการอ้างสิทธิ์ | ประเภท | คำอธิบาย | ต้องใช้ userinfo? |
-| ----------------- | ---------- | --------------------------- | ----------------- |
-| organizations | `string[]` | รหัสองค์กรที่ผู้ใช้สังกัด | ไม่ |
-| organization_data | `object[]` | ข้อมูลองค์กรที่ผู้ใช้สังกัด | ใช่ |
+| Claim name | Type | คำอธิบาย | รวมใน ID token โดยค่าเริ่มต้น |
+| ----------------- | ---------- | --------------------------- | ----------------------------- |
+| organizations | `string[]` | รหัสองค์กรที่ผู้ใช้สังกัด | ✅ |
+| organization_data | `object[]` | ข้อมูลองค์กรที่ผู้ใช้สังกัด | |
:::note
-การอ้างสิทธิ์ขององค์กรเหล่านี้สามารถดึงได้ผ่าน endpoint userinfo เมื่อใช้ [โทเค็นทึบ (Opaque token)](/concepts/opaque-token) อย่างไรก็ตาม โทเค็นทึบไม่สามารถใช้เป็นโทเค็นองค์กรสำหรับเข้าถึงทรัพยากรเฉพาะองค์กร ดู [โทเค็นทึบและองค์กร](/concepts/opaque-token#opaque-token-and-organizations) สำหรับรายละเอียดเพิ่มเติม
+การอ้างสิทธิ์ขององค์กรเหล่านี้สามารถดึงได้ผ่าน userinfo endpoint เมื่อใช้ [โทเค็นทึบ (Opaque token)](/concepts/opaque-token) อย่างไรก็ตาม โทเค็นทึบไม่สามารถใช้เป็นโทเค็นองค์กรสำหรับเข้าถึงทรัพยากรเฉพาะองค์กรได้ ดูรายละเอียดที่ [โทเค็นทึบและองค์กร](/concepts/opaque-token#opaque-token-and-organizations)
:::
**`urn:logto:scope:organization_roles`**
-| ชื่อการอ้างสิทธิ์ | ประเภท | คำอธิบาย | ต้องใช้ userinfo? |
-| ------------------ | ---------- | --------------------------------------------------------------------- | ----------------- |
-| organization_roles | `string[]` | บทบาทขององค์กรที่ผู้ใช้สังกัดในรูปแบบ `:` | ไม่ |
-
----
-
-เพื่อประสิทธิภาพและขนาดข้อมูล หาก "ต้องใช้ userinfo?" เป็น "ใช่" หมายความว่าการอ้างสิทธิ์นั้นจะไม่แสดงในโทเค็น ID แต่จะถูกส่งกลับใน response ของ [userinfo endpoint](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo)
+| Claim name | Type | คำอธิบาย | รวมใน ID token โดยค่าเริ่มต้น |
+| ------------------ | ---------- | --------------------------------------------------------------------- | ----------------------------- |
+| organization_roles | `string[]` | บทบาทขององค์กรที่ผู้ใช้สังกัดในรูปแบบ `:` | ✅ |
diff --git a/i18n/th/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx b/i18n/th/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
index ddaf59f16fb..08a24446451 100644
--- a/i18n/th/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
+++ b/i18n/th/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
@@ -1,6 +1,8 @@
import ScopeClaimList from './_scope-claim-list.md';
-Logto ใช้มาตรฐาน [ขอบเขต (scopes) และ การอ้างสิทธิ์ (claims) ของ OIDC](https://openid.net/specs/openid-connect-core-1_0.html#Claims) เพื่อกำหนดขอบเขตและการอ้างสิทธิ์สำหรับดึงข้อมูลผู้ใช้จากโทเค็น ID (ID token) และ OIDC userinfo endpoint ทั้ง "ขอบเขต (scope)" และ "การอ้างสิทธิ์ (claim)" เป็นคำศัพท์จากข้อกำหนดของ OAuth 2.0 และ OpenID Connect (OIDC)
+Logto ใช้มาตรฐาน [ขอบเขต (Scopes) และ การอ้างสิทธิ์ (Claims) ของ OIDC](https://openid.net/specs/openid-connect-core-1_0.html#Claims) เพื่อกำหนดขอบเขตและการอ้างสิทธิ์สำหรับดึงข้อมูลผู้ใช้จากโทเค็น ID (ID token) และ OIDC userinfo endpoint ทั้ง "ขอบเขต (Scope)" และ "การอ้างสิทธิ์ (Claim)" เป็นคำศัพท์จากข้อกำหนดของ OAuth 2.0 และ OpenID Connect (OIDC)
+
+สำหรับการอ้างสิทธิ์ OIDC มาตรฐาน การรวมอยู่ในโทเค็น ID จะถูกกำหนดอย่างเคร่งครัดโดยขอบเขตที่ร้องขอ การอ้างสิทธิ์เพิ่มเติม (เช่น `custom_data` และ `organizations`) สามารถตั้งค่าเพิ่มเติมให้แสดงในโทเค็น ID ได้ผ่าน การตั้งค่า Custom ID token
{/* TODO: Remove below */}
@@ -8,12 +10,12 @@ Logto ใช้มาตรฐาน [ขอบเขต (scopes) และ ก
<>
-โดยสรุป เมื่อคุณร้องขอขอบเขต (scope) ใด คุณจะได้รับข้อมูลการอ้างสิทธิ์ (claim) ที่เกี่ยวข้องในข้อมูลผู้ใช้ เช่น หากคุณร้องขอขอบเขต `email` คุณจะได้รับข้อมูล `email` และ `email_verified` ของผู้ใช้
+โดยสรุป เมื่อคุณร้องขอขอบเขต (scope) ใด คุณจะได้รับการอ้างสิทธิ์ (claim) ที่เกี่ยวข้องในข้อมูลผู้ใช้ เช่น หากคุณร้องขอขอบเขต `email` คุณจะได้รับข้อมูล `email` และ `email_verified` ของผู้ใช้
- โดยปกติ Logto SDK จะร้องขอขอบเขตสามรายการเสมอ: `openid`, `profile` และ `offline_access`
- และไม่สามารถลบขอบเขตเริ่มต้นเหล่านี้ได้ แต่คุณสามารถเพิ่มขอบเขตเพิ่มเติมขณะกำหนดค่า Logto ได้:
+ โดยค่าเริ่มต้น Logto SDK จะร้องขอขอบเขตสามรายการเสมอ: `openid`, `profile` และ `offline_access`
+ และไม่สามารถลบขอบเขตเริ่มต้นเหล่านี้ได้ แต่คุณสามารถเพิ่มขอบเขตเพิ่มเติมได้เมื่อกำหนดค่า Logto:
{props.configScopesCode}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/README.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/README.mdx
index b85c5a81d79..771786e024b 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/README.mdx
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/README.mdx
@@ -1,8 +1,8 @@
# 开发者
-Logto 是一个基于 [OAuth 2](https://auth.wiki/oauth-2.0) 和 [OIDC](https://auth.wiki/openid-connect) 协议的 [身份与访问管理 (IAM)](https://auth.wiki/iam) 服务。像 Logto 这样的 IAM 服务通常作为其他 Web 服务的基础;这些 Web 服务中的各种授权 (Authorization) 状态会直接受到 Logto 的影响。
+Logto 是一个基于 [OAuth 2](https://auth.wiki/oauth-2.0) 和 [OIDC](https://auth.wiki/openid-connect) 协议的 [身份和访问管理 (IAM)](https://auth.wiki/iam) 服务。像 Logto 这样的 IAM 服务通常作为其他 Web 服务的基础;这些 Web 服务中的各种授权 (Authorization) 状态会直接受到 Logto 的影响。
-为了为用户提供便利,Logto 提供了一系列常用的开发者功能。
+为了方便用户,Logto 提供了一系列常用的开发者功能。
## 登录体验相关 \{#sign-in-experience-related}
@@ -19,9 +19,18 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
items={[
{
type: 'link',
- label: '自定义令牌声明 (Custom token claims)',
+ label: '自定义访问令牌 (Access token)',
href: '/developers/custom-token-claims',
- description: '通过附加额外的声明 (Claims),扩展访问控制能力,可实现 ABAC 或拒绝令牌 (Token) 签发。',
+ description: '使用自定义脚本为访问令牌 (Access token) 添加额外声明 (Claims),实现 ABAC 或拒绝令牌 (Token) 签发。',
+ customProps: {
+ icon: ,
+ }
+ },
+ {
+ type: 'link',
+ label: '自定义 ID 令牌 (ID token)',
+ href: '/developers/custom-id-token',
+ description: '按照 OIDC 规范,控制哪些扩展声明 (Claims) 被包含在 ID 令牌 (ID token) 中。',
customProps: {
icon: ,
}
@@ -46,7 +55,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
items={[
{
type: 'link',
- label: '签名密钥 (Signing keys)',
+ label: '签名密钥',
href: '/developers/signing-keys',
description: '提供系统级签名密钥,通过密码保险库提升认证 (Authentication) 服务的安全性。',
customProps: {
@@ -57,14 +66,14 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: 'Webhooks',
href: '/developers/webhooks',
- description: 'Webhooks 通过 HTTP 请求支持关于用户信息和权限 (Permission) 更新的实时通知,增强 Logto 集成的便利性和灵活性。',
+ description: 'Webhooks 通过 HTTP 请求支持用户信息和权限 (Permission) 更新的实时通知,增强 Logto 集成的便利性和灵活性。',
customProps: {
icon: ,
}
},
{
type: 'link',
- label: '审计日志 (Audit logs)',
+ label: '审计日志',
href: '/developers/audit-logs',
description: '记录用户认证 (Authentication) 相关活动,便于调试和分析用户行为。',
customProps: {
@@ -73,7 +82,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
},
{
type: 'link',
- label: 'SDK 约定 (SDK convention)',
+ label: 'SDK 约定',
href: '/developers/',
description: '介绍 SDK 中的数据结构、用途和方法,帮助用户自定义 SDK 以适配各种业务场景。',
customProps: {
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
index 5f3c59026aa..5f5c7b7001a 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
@@ -1,14 +1,14 @@
---
-sidebar_position: 6
+sidebar_position: 7
---
# 审计日志
-Logto 的审计日志让你可以轻松监控用户活动和事件。它为各种用户管理和健康检查业务场景提供了坚实的基础。
+Logto 的审计日志让你可以轻松监控用户活动和事件,为各种用户管理和健康检查业务场景提供了坚实的基础。
## 查看所有日志 \{#view-all-logs}
-导航到 控制台 > 审计日志。Logto 会捕获并将认证 (Authentication) 事件整理成表格。它会记录事件名称、用户、应用程序和时间戳。你可以通过事件名称和应用程序名称进行筛选,以缩小结果范围。点击某个具体事件可以查看更多详细信息。
+前往 控制台 > 审计日志。Logto 会捕获并将认证 (Authentication) 事件整理成表格,记录事件名称、用户、应用程序和时间戳。你可以通过事件名称和应用程序名称进行筛选,缩小结果范围。点击某个具体事件可以查看更多详细信息。
:::warning
审计日志仅包含用户认证 (Authentication) 过程中的日志,不记录 Management API 操作日志。
@@ -18,7 +18,7 @@ Logto 的审计日志让你可以轻松监控用户活动和事件。它为各
Logto 的日志提供了全面的细节,确保操作便捷和客户安全。它们会捕获并记录以下信息:
-- 事件类型(完整的审计日志事件列表可在[这里](/developers/audit-logs/event-types)查看)
+- 事件类型(完整的审计日志事件列表可在[这里](/developers/audit-logs/event-types)找到)
- 涉及的应用程序
- IP 地址
- 涉及的用户
@@ -36,7 +36,7 @@ Logto 的日志提供了全面的细节,确保操作便捷和客户安全。
要访问特定用户的日志,请按照以下步骤操作:
-1. 导航到 控制台 > 用户管理。
+1. 前往 控制台 > 用户管理。
2. 选择目标用户并进入详情页。
3. 点击“用户日志”。结果表格将只显示该用户执行和触发的日志事件。
@@ -51,6 +51,6 @@ Logto 的日志提供了全面的细节,确保操作便捷和客户安全。
-OSS 用户应定期添加 cronjob 清理过期的审计日志。
+OSS 用户应定期添加定时任务清理过期的审计日志。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
new file mode 100644
index 00000000000..9fed5c4c0c4
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
@@ -0,0 +1,81 @@
+---
+sidebar_position: 3
+---
+
+# 自定义 ID 令牌 (ID token)
+
+## 简介 \{#introduction}
+
+[ID 令牌 (ID token)](https://auth.wiki/id-token) 是由 [OpenID Connect (OIDC)](https://auth.wiki/openid-connect) 协议定义的一种特殊类型的令牌。它作为由授权 (Authorization) 服务器(Logto)在用户成功认证 (Authentication) 后签发的身份声明,携带经过认证 (Authentication) 用户身份的声明 (Claims)。
+
+与用于访问受保护资源的 [访问令牌 (Access tokens)](/developers/custom-token-claims) 不同,ID 令牌 (ID token) 专门用于向客户端应用程序传递经过认证 (Authentication) 的用户身份。它们是包含有关认证 (Authentication) 事件和已认证 (Authentication) 用户声明 (Claims) 的 [JSON Web Token (JWT)](https://auth.wiki/jwt)。
+
+## ID 令牌 (ID token) 声明 (Claims) 的工作原理 \{#how-id-token-claims-work}
+
+在 Logto 中,ID 令牌 (ID token) 的声明 (Claims) 分为两类:
+
+1. **标准 OIDC 声明 (Claims)**:由 OIDC 规范定义,这些声明 (Claims) 完全由认证 (Authentication) 时请求的权限 (Scopes) 决定。
+2. **扩展声明 (Claims)**:Logto 扩展的声明 (Claims),用于携带额外的身份信息,由**双条件模型**(权限 (Scope) + 开关 (Toggle))控制。
+
+```mermaid
+flowchart TD
+ A[用户认证 (Authentication) 请求] --> B{请求的权限 (Scopes)}
+ B --> C[标准 OIDC 权限 (Scopes)]
+ B --> D[扩展权限 (Scopes)]
+ C --> E[标准声明 (Claims) 包含在 ID 令牌 (ID token) 中]
+ D --> F{控制台开关已启用?}
+ F -->|是| G[扩展声明 (Claims) 包含在 ID 令牌 (ID token) 中]
+ F -->|否| H[声明 (Claims) 不包含]
+```
+
+## 标准 OIDC 声明 (Claims) \{#standard-oidc-claims}
+
+标准声明 (Claims) 完全受 OIDC 规范约束。它们是否包含在 ID 令牌 (ID token) 中,仅取决于你的应用在认证 (Authentication) 时请求的权限 (Scopes)。Logto 不提供禁用或有选择地排除单个标准声明 (Claims) 的选项。
+
+下表展示了标准权限 (Scopes) 与其对应声明 (Claims) 的映射关系:
+
+| Scope | Claims |
+| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `openid` | `sub` |
+| `profile` | `name`, `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `picture`, `website`, `gender`, `birthdate`, `zoneinfo`, `locale`, `updated_at` |
+| `email` | `email`, `email_verified` |
+| `phone` | `phone_number`, `phone_number_verified` |
+| `address` | `address` |
+
+例如,如果你的应用请求了 `openid profile email` 权限 (Scopes),ID 令牌 (ID token) 将包含来自 `openid`、`profile` 和 `email` 权限 (Scopes) 的所有声明 (Claims)。
+
+## 扩展声明 (Claims) \{#extended-claims}
+
+除了标准 OIDC 声明 (Claims) 外,Logto 还扩展了携带 Logto 生态特定身份信息的声明 (Claims)。这些扩展声明 (Claims) 遵循**双条件模型**,才能被包含在 ID 令牌 (ID token) 中:
+
+1. **权限 (Scope) 条件**:应用在认证 (Authentication) 时必须请求相应的权限 (Scope)。
+2. **控制台开关 (Toggle)**:管理员必须通过 Logto 控制台启用该声明 (Claim) 在 ID 令牌 (ID token) 中的包含。
+
+这两个条件必须同时满足。权限 (Scope) 作为协议层的访问声明 (Claims),开关 (Toggle) 作为产品层的暴露控制——两者职责明确且不可替代。
+
+### 可用的扩展权限 (Scopes) 与声明 (Claims) \{#available-extended-scopes-and-claims}
+
+| Scope | Claims | 描述 | 默认包含 |
+| ------------------------------------ | ------------------------------ | -------------------------------------------- | -------- |
+| `custom_data` | `custom_data` | 存储在用户对象上的自定义数据 | |
+| `identities` | `identities`, `sso_identities` | 用户关联的社交和 SSO 身份 | |
+| `roles` | `roles` | 用户分配的角色 (Roles) | ✅ |
+| `urn:logto:scope:organizations` | `organizations` | 用户的组织 (Organizations) ID | ✅ |
+| `urn:logto:scope:organizations` | `organization_data` | 用户的组织 (Organizations) 数据 | |
+| `urn:logto:scope:organization_roles` | `organization_roles` | 用户的组织 (Organizations) 角色 (Roles) 分配 | ✅ |
+
+### 在 Logto 控制台中配置 \{#configure-in-logto-console}
+
+要在 ID 令牌 (ID token) 中启用扩展声明 (Claims):
+
+1. 前往 控制台 > 自定义 JWT。
+2. 打开你希望包含在 ID 令牌 (ID token) 中的声明 (Claims) 开关 (Toggle)。
+3. 确保你的应用在认证 (Authentication) 时请求了相应的权限 (Scopes)。
+
+## 相关资源 \{#related-resources}
+
+自定义访问令牌 (Access token)
+
+
+ OpenID Connect Core - ID Token
+
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
index b08c10f4bc7..935f1f5c093 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
@@ -2,26 +2,26 @@
sidebar_position: 2
---
-# 自定义令牌声明 (Custom token claims)
+# 自定义访问令牌 (Access token)
-Logto 提供了在访问令牌(JWT / 不透明令牌)中添加自定义声明的灵活性。通过此功能,你可以为你的业务逻辑包含额外信息,这些信息会安全地传递在令牌中,并在不透明令牌的情况下通过内省检索。
+Logto 提供了在访问令牌 (访问令牌 / 不透明令牌) 中添加自定义声明 (Claims) 的灵活性。通过此功能,你可以为你的业务逻辑包含额外的信息,这些信息都可以安全地在令牌中传递,并在不透明令牌的情况下通过内省检索。
## 简介 \{#introduction}
-[访问令牌 (Access tokens)](https://auth.wiki/access-token) 在认证 (Authentication) 和授权 (Authorization) 过程中扮演着关键角色,携带主体的身份信息和权限,并在 [Logto 服务器](/concepts/core-service)(作为认证服务器或身份提供商 (IdP))、你的 Web 服务服务器(资源提供者)和客户端应用程序(客户端)之间传递。
+[访问令牌 (Access tokens)](https://auth.wiki/access-token) 在认证 (Authentication) 与授权 (Authorization) 过程中扮演着关键角色,携带主体的身份信息和权限,并在 [Logto 服务器](/concepts/core-service)(作为认证服务器或身份提供商 (IdP))、你的 Web 服务服务器(资源提供者)和客户端应用程序(客户端)之间传递。
-[令牌声明 (Token claims)](https://auth.wiki/claim) 是提供关于实体或令牌本身信息的键值对。声明可能包括用户信息、令牌过期时间、权限以及与认证 (Authentication) 和授权 (Authorization) 过程相关的其他元数据。
+[令牌声明 (Token claims)](https://auth.wiki/claim) 是提供关于实体或令牌本身信息的键值对。声明 (Claims) 可能包括用户信息、令牌过期时间、权限以及与认证 (Authentication) 和授权 (Authorization) 过程相关的其他元数据。
-在 Logto 中有两种类型的访问令牌:
+在 Logto 中有两种类型的访问令牌 (Access tokens):
-- **JSON Web Token:** [JSON Web Token (JWT)](https://auth.wiki/jwt) 是一种流行的格式,以安全且可被客户端读取的方式编码声明。常见声明如 `sub`、`iss`、`aud` 等,符合 OAuth 2.0 协议(详见 [此链接](https://datatracker.ietf.org/doc/html/rfc7519#section-4))。JWT 允许消费者无需额外验证步骤即可直接访问声明。在 Logto 中,当客户端发起特定资源或组织的授权 (Authorization) 请求时,访问令牌默认以 JWT 格式签发。
-- **不透明令牌 (Opaque token):** [不透明令牌 (Opaque token)](http://localhost:3000/concepts/opaque-token) 不是自包含的,总是需要通过 [令牌内省 (token introspection)](https://auth.wiki/token-introspection) 端点进行额外验证。尽管其格式不透明,不透明令牌同样可以安全地在各方之间传递声明。令牌声明被安全地存储在 Logto 服务器中,并通过令牌内省端点由客户端应用程序访问。当授权 (Authorization) 请求中未包含特定资源或组织时,访问令牌将以不透明格式签发。这些令牌主要用于访问 OIDC `userinfo` 端点及其他通用用途。
+- **JSON Web Token:** [JSON Web Token (JWT)](https://auth.wiki/jwt) 是一种流行的格式,以安全且可被客户端读取的方式编码声明 (Claims)。常见声明如 `sub`、`iss`、`aud` 等,符合 OAuth 2.0 协议(详见 [此链接](https://datatracker.ietf.org/doc/html/rfc7519#section-4))。JWT 允许消费者直接访问声明 (Claims) 而无需额外验证步骤。在 Logto 中,当客户端初始化特定资源或组织的授权请求时,访问令牌 (Access tokens) 默认以 JWT 格式签发。
+- **不透明令牌 (Opaque token):** [不透明令牌 (Opaque token)](http://localhost:3000/concepts/opaque-token) 不是自包含的,总是需要通过 [令牌内省](https://auth.wiki/token-introspection) 端点进行额外的验证步骤。尽管其格式不透明,不透明令牌 (Opaque tokens) 也可以用于获取声明 (Claims),并在各方之间安全传递。令牌声明 (Claims) 安全地存储在 Logto 服务器中,并通过令牌内省端点由客户端应用程序访问。当授权请求中未包含特定资源或组织时,访问令牌 (Access tokens) 以不透明格式签发。这些令牌主要用于访问 OIDC `userinfo` 端点和其他通用用途。
-在许多情况下,标准声明无法满足你的应用的特定需求,无论你使用的是 JWT 还是不透明令牌。为此,Logto 提供了在访问令牌中添加自定义声明的灵活性。通过此功能,你可以为你的业务逻辑包含额外信息,这些信息会安全地传递在令牌中,并在不透明令牌的情况下通过内省检索。
+在许多情况下,标准声明 (Claims) 并不能满足你的应用程序的特定需求,无论你使用的是 JWT 还是不透明令牌 (Opaque token)。为了解决这个问题,Logto 提供了在访问令牌 (Access tokens) 中添加自定义声明 (Claims) 的灵活性。通过此功能,你可以为你的业务逻辑包含额外的信息,这些信息都可以安全地在令牌中传递,并在不透明令牌 (Opaque token) 的情况下通过内省检索。
-## 自定义令牌声明如何工作?\{#how-do-custom-token-claims-work}
+## 自定义令牌声明 (Claims) 如何工作?\{#how-do-custom-token-claims-work}
-Logto 允许你通过回调函数 `getCustomJwtClaims` 向 `访问令牌 (access token)` 中插入自定义声明。你可以实现自己的 `getCustomJwtClaims` 函数来返回一个自定义声明对象。返回值将与原始令牌负载合并,并签名生成最终的访问令牌。
+Logto 允许你通过回调函数 `getCustomJwtClaims` 向 `访问令牌 (Access token)` 插入自定义声明 (Claims)。你可以实现自己的 `getCustomJwtClaims` 函数来返回一个自定义声明 (Claims) 对象。返回值将与原始令牌负载合并,并签名生成最终的访问令牌 (Access token)。
```mermaid
sequenceDiagram
@@ -30,11 +30,11 @@ sequenceDiagram
participant SP as 服务提供者
autonumber
- U ->> IdP: 认证 (Authentication) 请求(携带凭证)
+ U ->> IdP: 认证请求(携带凭据)
activate IdP
- IdP-->>IdP: 验证凭证 &
生成原始访问令牌负载
+ IdP-->>IdP: 验证凭据 &
生成原始访问令牌负载
rect var(--mermaid-rect-fill)
- note over IdP: 自定义令牌声明
+ note over IdP: 自定义令牌声明 (Claims)
IdP->>IdP: 运行自定义令牌声明脚本(`getCustomJwtClaims`)&
获取额外令牌声明
end
IdP-->>IdP: 合并原始访问令牌负载和额外令牌声明
@@ -48,11 +48,11 @@ sequenceDiagram
```
:::warning
-Logto 内置令牌声明不可被覆盖或修改。自定义声明将作为附加声明添加到令牌中。如果任何自定义声明与内置声明冲突,这些自定义声明将被忽略。
+Logto 内置令牌声明 (Claims) 不能被覆盖或修改。自定义声明 (Claims) 会作为附加声明添加到令牌中。如果任何自定义声明与内置声明冲突,这些自定义声明将被忽略。
:::
## 相关资源 \{#related-resources}
- 使用 Logto 为 JWT 访问令牌添加自定义声明,提升你的授权 (Authorization)
+ 使用 Logto 为 JWT 访问令牌 (Access tokens) 添加自定义声明 (Claims) ,提升你的授权 (Authorization)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
index b6f3b216bb3..00c382d1538 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
@@ -1,40 +1,40 @@
---
id: common-use-cases
-title: 常见用例
-sidebar_label: 常见用例
+title: 常见用例 (Common use cases)
+sidebar_label: 常见用例 (Common use cases)
sidebar_position: 2
---
-# 常见用例
+# 常见用例 (Common use cases)
-在本节中,我们将通过一些示例,帮助你理解 [自定义令牌声明 (Claims)](/developers/custom-token-claims) 在某些场景下的应用,为你提供一些参考。这样,当你在访问管理中遇到困难时,可以评估自定义令牌声明 (Claims) 是否能为你带来便利。
+在本节中,我们将通过一些示例,帮助你理解 [自定义访问令牌 (Access token) 声明 (Claims)](/developers/custom-token-claims) 在某些场景下的应用,为你提供一些参考。这样,当你在访问管理上遇到困难时,可以评估自定义访问令牌 (Access token) 声明 (Claims) 是否能为你带来便利。
## 实现基于属性的访问控制 (ABAC) \{#make-attribute-based-access-control-abac-possible}
-[基于属性的访问控制 (ABAC)](https://auth.wiki/abac) 是一种使用属性(如用户角色、资源属性和环境条件)来做出访问控制决策的访问控制模型。这是一种灵活且动态的方式,用于管理对受保护资源的访问。
+[基于属性的访问控制 (ABAC)](https://auth.wiki/abac) 是一种使用属性(如用户角色、资源属性和环境条件)来做出访问控制决策的访问控制模型。这是一种灵活且动态的受保护资源访问管理方式。
-假设你正在构建一个应用,该应用的发布分为两个阶段:公开测试和正式上线。即使在应用正式上线后,你也希望曾经参与公开测试的老用户可以继续使用付费功能。
+假设你正在开发一个应用,该应用的发布分为两个阶段:公开测试和正式上线。即使在应用正式上线后,你也希望参与过公开测试的老用户可以继续使用付费功能。
-在应用正式上线后,你可以使用 Logto 的 [基于角色的访问控制 (RBAC)](/authorization/role-based-access-control) 功能来实现对付费功能的访问控制。为了方便判断某个用户是否在公开测试阶段就已经在使用应用,你可以通过 `getCustomJwtClaims()` 方法,在令牌 (token) 负载中添加一个 `createdAt` 声明 (Claim)。
+在应用正式上线后,你使用 Logto 的 [基于角色的访问控制 (RBAC)](/authorization/role-based-access-control) 功能来实现对付费功能的访问控制。为了方便判断某个用户是否在公开测试阶段就已使用该应用,你可以通过 `getCustomJwtClaims()` 方法,在令牌 (Token) 载荷中添加一个 `createdAt` 声明 (Claim)。
然后,在你的受保护 API 中进行访问控制时,你需要允许满足以下任一条件的访问令牌 (Access token):
1. 在 RBAC 上下文中,拥有访问付费资源的权限 (Scope)。
-2. `createdAt` 早于公开测试阶段的结束时间。
+2. `createdAt` 早于公开测试阶段结束时间。
-如果没有自定义令牌声明 (Claims) 功能,在进行 [授权 (Authorization)](/authorization) 权限校验时,就需要调用 Logto Management API,检查当前访问令牌 (Access token) 所属用户是否拥有某个 API 资源所需角色对应的权限。
+如果没有自定义令牌 (Token) 声明 (Claims) 功能,在进行 [授权 (Authorization)](/authorization) 权限校验时,就需要调用 Logto Management API,检查当前访问令牌 (Access token) 所属用户是否拥有某个 API 资源所需角色对应的权限。
-在类似场景下,假设你的应用希望在用户生日临近时,在登录页面展示生日祝福。你可以通过自定义令牌声明 (Claims) 在 [令牌负载 (Token payload)](/user-management/personal-access-token#example-token-exchange) 中添加生日字段,用于判断是否展示特定消息。
+在类似场景下,假设你的应用希望在用户生日临近时,在登录页面展示生日祝福。你可以通过自定义令牌 (Token) 声明 (Claims) 在 [令牌 (Token) 载荷](/user-management/personal-access-token#example-token-exchange) 中添加生日字段,用于判断是否展示特定消息。
-## 手动阻止令牌 (Token) 签发 \{#manually-block-token-issuance}
+## 手动阻止令牌 (Token) 颁发 \{#manually-block-token-issuance}
假设 Joe 正在运营一款网络游戏,并使用 Logto 作为 [身份与访问管理 (IAM)](https://auth.wiki/iam) 系统。
-假设这款游戏需要充值购买游戏时长。Joe 在自己的游戏服务中记录每个用户的余额,并随着游戏时长的累计不断扣减余额。Joe 希望当玩家余额耗尽时强制其退出登录,以促使充值。
+假设该游戏需要充值购买游戏时间。Joe 在自己的游戏服务中记录每个用户的余额,并随着游戏时间的累计不断扣减余额。Joe 希望当玩家余额耗尽时强制其下线,以促使其充值。
-此时,Joe 也可以利用 Logto 提供的自定义令牌声明 (Claims) 功能来实现:
+此时,Joe 也可以利用 Logto 提供的自定义令牌 (Token) 声明 (Claims) 功能来实现:
-1. 在脚本中,可以通过外部 API 调用 [获取外部数据](/developers/custom-token-claims/create-script/#step-3-fetch-external-data) 的方式,从 Joe 的游戏服务器获取当前玩家的余额。
-2. 如果余额小于或等于 0,可以通过 [`api.denyAccess()`](/developers/custom-token-claims/create-script/#api) 方法阻止令牌 (Token) 签发。
+1. 在脚本中,可以通过外部 API 调用 [获取外部数据](/developers/custom-token-claims/create-script/#step-3-fetch-external-data),从 Joe 的游戏服务器获取当前玩家的余额。
+2. 如果余额小于等于 0,可以通过 [`api.denyAccess()`](/developers/custom-token-claims/create-script/#api) 方法阻止令牌 (Token) 颁发。
-此时,由于无法获取新的有效访问令牌 (Access token),玩家将被强制退出游戏。
+此时,由于无法获取新的有效访问令牌 (Access token),玩家将被强制登出游戏。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
index c63d4d58ab6..b2848dbe9a4 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
@@ -1,41 +1,41 @@
---
id: create-script
-title: 创建自定义令牌声明脚本
-sidebar_label: 创建自定义令牌声明脚本
+title: 创建自定义访问令牌 (Access token) 脚本
+sidebar_label: 创建自定义访问令牌 (Access token) 脚本
sidebar_position: 3
---
-# 创建自定义令牌声明脚本
+# 创建自定义访问令牌 (Access token) 脚本
-要[添加自定义声明](/developers/custom-token-claims)到[访问令牌 (Access token)](https://auth.wiki/access-token),你需要提供一个返回包含这些声明对象的脚本。该脚本应编写为一个返回自定义声明对象的 `JavaScript` 函数。
+要[为访问令牌 (Access token)](https://auth.wiki/access-token)[添加自定义声明 (Claims)](/developers/custom-token-claims),你需要提供一个返回包含这些声明 (Claims) 的对象的脚本。该脚本应编写为一个返回自定义声明 (Claims) 对象的 `JavaScript` 函数。
1. 进入 控制台 > 自定义 JWT。
-2. 你可以为两种不同类型的访问令牌 (Access tokens) 自定义访问令牌 (Access token) 声明:
+2. 你可以为以下两种不同类型的访问令牌 (Access token) 自定义其声明 (Claims):
- **用户访问令牌 (User access token)**:为终端用户签发的访问令牌 (Access token)。例如,Web 应用或移动应用。
- **机器对机器 (Machine-to-Machine) 访问令牌 (Access token)**:为服务或应用程序签发的访问令牌 (Access token)。例如,[机器对机器应用](/quick-starts/m2m)。
- 不同类型的访问令牌 (Access tokens) 可能有不同的令牌负载上下文。你可以分别为每种类型的访问令牌 (Access token) 自定义令牌声明。
+ 不同类型的访问令牌 (Access token) 可能具有不同的令牌负载上下文。你可以分别为每种类型的访问令牌 (Access token) 自定义声明 (Claims)。
- 选择你想要自定义令牌声明的访问令牌 (Access token) 类型,点击 **添加自定义声明** 按钮创建新脚本。
+ 选择你想自定义声明 (Claims) 的访问令牌 (Access token) 类型,点击 **添加自定义声明 (Add custom claims)** 按钮创建新脚本。
:::note
-自定义令牌声明功能仅对以下用户开放:
+自定义令牌声明 (Claims) 功能仅对以下用户开放:
- [Logto OSS](/logto-oss) 用户
- [拥有开发环境的 Logto Cloud 租户](/logto-cloud/tenant-settings#development)
-- 拥有生产环境的 Logto Cloud 付费租户(包括 [Pro 租户和企业租户](https://logto.io/pricing))
+- 拥有生产环境的 Logto Cloud 付费租户(包括 [Pro 租户和 Enterprise 租户](https://logto.io/pricing))
:::
## 实现 `getCustomJwtClaims()` 函数 \{#implement-getcustomjwtclaims-function}
-在 **自定义 JWT** 详情页,你可以找到脚本编辑器来编写你的自定义令牌声明脚本。该脚本应为一个返回自定义声明对象的 `JavaScript` 函数。
+在 **自定义 JWT** 详情页,你可以找到脚本编辑器来编写你的自定义令牌声明 (Claims) 脚本。该脚本应为一个返回自定义声明 (Claims) 对象的 `JavaScript` 函数。
-
+
## 步骤 1:编辑脚本 \{#step-1-edit-the-script}
-使用左侧的代码编辑器修改脚本。系统为你提供了一个默认返回空对象的 `getCustomJwtClaims`,你可以在此基础上修改函数以返回你自己的自定义声明对象。
+使用左侧的代码编辑器修改脚本。系统为你提供了一个默认返回空对象的 `getCustomJwtClaims`,你可以在此基础上修改函数以返回你自己的自定义声明 (Claims) 对象。
```jsx
const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
@@ -43,21 +43,21 @@ const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
};
```
-该编辑器使用 JavaScript 语言服务,提供基础语法高亮、代码补全和错误检查。输入参数类型良好,并采用 jsDoc 风格文档。你可以使用编辑器的智能提示 (IntelliSense) 正确访问输入对象的属性。详细的参数定义可在页面右侧查看。
+该编辑器使用 JavaScript 语言服务,提供基础语法高亮、代码补全和错误检查。输入参数类型良好,并采用 jsDoc 风格文档。你可以利用编辑器的 IntelliSense 正确访问输入对象的属性。详细的参数定义可在页面右侧查看。
:::note
-此函数将作为模块导出。请确保函数名保持为 `getCustomJwtClaims`,以便模块能正确导出该函数。
+该函数将作为模块导出。请确保函数名保持为 `getCustomJwtClaims`,以便模块正确导出该函数。
:::
## 步骤 2:输入参数 \{#step-2-input-parameters}
-`getCustomJwtClaims` 函数接收一个对象作为输入参数。该输入对象包含以下属性:
+`getCustomJwtClaims` 函数以一个对象作为输入参数。该输入对象包含以下属性:
### token \{#token}
令牌负载对象。该对象包含原始令牌声明 (Claims) 和你可能需要在脚本中访问的元数据。
-你可以在页面右侧找到令牌负载对象和用户数据对象的详细类型定义。编辑器的智能提示 (IntelliSense) 也会帮助你正确访问输入对象的这些属性。
+你可以在页面右侧找到令牌负载对象和用户数据对象的详细类型定义。编辑器的 IntelliSense 也会帮助你正确访问输入对象的这些属性。
- 用户访问令牌 (User access token) 数据对象
| 属性 | 描述 | 类型 |
@@ -65,8 +65,8 @@ const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
| `jti` | 唯一 JWT id | `string` |
| `aud` | 令牌受众 (Audience) | `string` |
| `scope` | 令牌权限 (Scopes) | `string` |
- | `clientId` | 令牌的客户端 id | `string` |
- | `accountId` | 令牌的用户 id | `string` |
+ | `clientId` | 令牌客户端 id | `string` |
+ | `accountId` | 令牌用户 id | `string` |
| `expiresWithSession` | 令牌是否随会话过期 | `boolean` |
| `grantId` | 令牌当前认证 (Authentication) 授权 id | `string` |
| `gty` | 令牌授权类型 | `string` |
@@ -77,23 +77,23 @@ const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
| `jti` | 唯一 JWT id | `string` |
| `aud` | 令牌受众 (Audience) | `string` |
| `scope` | 令牌权限 (Scopes) | `string` |
- | `clientId` | 令牌的客户端 id | `string` |
+ | `clientId` | 令牌客户端 id | `string` |
| `kind` | 令牌类型 | `ClientCredentials` |
### context(仅用户访问令牌 (User access token) 可用)\{#context-only-available-for-user-access-token}
-context 对象包含与当前授权 (Authorization) 流程相关的用户数据和授权数据。
+context 对象包含与当前授权 (Authorization) 过程相关的用户数据和授权数据。
- **用户数据对象**
- 对于用户访问令牌 (User access token),Logto 提供了额外的用户数据上下文供你访问。用户数据对象包含你设置自定义声明时可能需要的所有用户资料数据和组织 (Organization) 成员数据。请参阅 [用户](/user-management/user-data) 和 [组织 (Organizations)](/organizations/organization-management#organization-data-structure) 获取更多信息。
+ 对于用户访问令牌 (User access token),Logto 提供了额外的用户数据上下文供你访问。用户数据对象包含你设置自定义声明 (Claims) 可能需要的所有用户资料数据和组织 (Organization) 成员数据。详见 [用户](/user-management/user-data) 和 [组织 (Organizations)](/organizations/organization-management#organization-data-structure)。
- **授权数据对象**
- 对于通过模拟 (Impersonation) 令牌交换获得的用户访问令牌 (User access token),Logto 提供了额外的授权数据上下文供你访问。授权数据对象包含来自主体 (Subject) 令牌的自定义上下文。详情请参阅 [用户模拟 (User impersonation)](/developers/user-impersonation)。
+ 对于通过模拟 (Impersonation) 令牌交换获得的用户访问令牌 (User access token),Logto 提供了额外的授权数据上下文。授权数据对象包含来自主体 (Subject) 令牌的自定义上下文。详见 [用户模拟 (User impersonation)](/developers/user-impersonation)。
- **用户交互数据对象**
- 对于给定的用户访问令牌 (User access token),有时你需要访问当前授权 (Authorization) 会话的用户交互详情。例如,你可能需要获取用户用于登录的企业单点登录 (Enterprise SSO) 身份。该用户交互数据对象包含最近用户提交的交互数据,包括:
+ 对于给定的用户访问令牌 (User access token),有时你需要访问当前授权 (Authorization) 会话的用户交互详情。例如,你可能需要获取用户用于登录的企业单点登录 (Enterprise SSO) 身份。该用户交互数据对象包含最近一次用户提交的交互数据,包括:
| 属性 | 描述 | 类型 |
| --------------------- | ------------------------------------------------------ | ---------------------- |
- | `interactionEvent` | 当前用户交互事件 | `SignIn` 或 `Register` |
+ | `interactionEvent` | 当前用户交互的事件 | `SignIn` 或 `Register` |
| `userId` | 当前用户交互的用户 id | `string` |
| `verificationRecords` | 用户在交互过程中提交的用于身份识别和验证的验证记录列表 | `VerificationRecord[]` |
@@ -231,19 +231,19 @@ context 对象包含与当前授权 (Authorization) 流程相关的用户数据
### environmentVariables \{#environmentvariables}
-使用右侧的 **设置环境变量** 区域为你的脚本设置环境变量。你可以使用这些变量存储敏感信息或配置数据,避免在脚本中硬编码。例如 API 密钥、密钥或 URL。
+使用右侧的 **设置环境变量 (Set environment variables)** 区域为你的脚本设置环境变量。你可以用这些变量存储敏感信息或配置数据,避免在脚本中硬编码。例如 API 密钥、密钥或 URL。
-你在这里设置的所有环境变量都可以在脚本中使用。通过输入参数中的 `environmentVariables` 对象访问这些变量。
+你在此设置的所有环境变量都可在脚本中使用。通过输入参数中的 `environmentVariables` 对象访问这些变量。
### api \{#api}
-`api` 对象为你提供了一组实用函数,可用于在脚本中对令牌签发过程进行额外访问控制。`api` 对象包含以下函数:
+`api` 对象为你的脚本提供了一组实用函数,用于对令牌签发过程进行额外访问控制。`api` 对象包含以下函数:
```jsx
api.denyAccess(message?: string): void
```
-`api.denyAccess()` 函数允许你通过自定义消息拒绝令牌签发过程。你可以使用此函数在令牌签发过程中强制执行额外的访问验证。
+`api.denyAccess()` 函数允许你通过自定义消息拒绝令牌签发过程。你可以用此函数对令牌签发过程进行额外访问校验。
## 步骤 3:获取外部数据 \{#step-3-fetch-external-data}
@@ -276,14 +276,14 @@ const getCustomJwtClaims = async ({ environmentVariables }) => {
## 步骤 4:测试脚本 \{#step-4-test-the-script}
-在保存脚本前务必进行测试。点击页面右侧的 **测试上下文** 标签,修改用于测试的模拟令牌负载和用户数据上下文。
+请务必在保存前测试你的脚本。点击页面右侧的 **测试上下文 (Test context)** 标签,修改用于测试的模拟令牌负载和用户数据上下文。
-点击编辑器右上角的 **运行测试**,使用模拟数据运行脚本。脚本输出将在 **测试结果** 抽屉中显示。
+点击编辑器右上角的 **运行测试 (Run test)**,即可用模拟数据运行脚本。脚本输出将在 **测试结果 (Test Result)** 抽屉中展示。
:::note
-测试结果是你设置的模拟数据下 `getCustomJwtClaims` 函数的输出(即在[时序图](/developers/custom-token-claims/#how-do-custom-token-claims-work)第 3 步获得的“额外令牌声明”)。实际令牌负载和用户数据上下文在令牌签发过程中会有所不同。
+测试结果是你设置的模拟数据下 `getCustomJwtClaims` 函数的输出(即在[时序图](/developers/custom-token-claims/#how-do-custom-token-claims-work)第 3 步获得的“额外令牌声明 (Claims)”)。实际令牌负载和用户数据上下文在令牌签发流程中会有所不同。
:::
-点击 **创建** 按钮保存脚本。自定义令牌声明脚本将被保存并应用于访问令牌 (Access token) 签发流程。
+点击 **创建 (Create)** 按钮保存脚本。自定义令牌声明 (Claims) 脚本将被保存并应用于访问令牌 (Access token) 签发流程。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
index 9ae18a24af8..59adc513dea 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
@@ -2,20 +2,20 @@
id: sdk-conventions
title: 平台 SDK 约定
sidebar_label: 平台 SDK 约定
-sidebar_position: 7
+sidebar_position: 8
---
# 平台 SDK 约定
-Logto 提供了一个非常强大且灵活的网络认证 (Authentication) 服务。
+Logto 提供了非常强大且灵活的 Web 认证 (Authentication) 服务。
-在实际使用 Logto 的服务时,为了方便,开发者通常需要将 Logto SDK 集成到他们自己的客户端应用程序中,以管理用户登录状态、权限等。
+在实际使用 Logto 服务时,为了方便,开发者通常需要将 Logto SDK 集成到自己的客户端应用中,以管理用户登录状态、权限等。
你可以在 [这里](/quick-starts) 找到 Logto 支持的所有编程语言 / 框架的 SDK。
-如果你不幸没有找到你想要的 SDK,这里有一个约定,你可以遵循它来为你想要的编程语言实现 SDK,使使用 Logto 服务更加容易。
+如果你不幸没有找到想要的 SDK,这里有一套约定可以遵循,用于为你期望的编程语言实现 SDK,从而更方便地使用 Logto 服务。
-这个约定包含三个主要部分:
+本约定包含三个主要部分:
设计策略
核心 SDK 约定
@@ -25,8 +25,6 @@ Logto 提供了一个非常强大且灵活的网络认证 (Authentication) 服
实现一个简单的客户端 OIDC SDK
-
- 在几分钟内为 Logto 打造一个基于 Node.js 的框架 SDK
-
+几分钟打造基于 Node.js 的 Logto 框架 SDK
-在几分钟内为 Logto 打造一个 Web SDK
+几分钟打造 Logto Web SDK
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
index 12488054db6..7cc66717533 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
@@ -2,42 +2,42 @@
id: signing-keys
title: 签名密钥
sidebar_label: 签名密钥
-sidebar_position: 4
+sidebar_position: 5
---
# 签名密钥
-Logto [OIDC 签名密钥](https://auth.wiki/signing-key),也称为 “OIDC 私钥” 和 “OIDC Cookie 密钥”,是在 Logto [登录会话](/end-user-flows/sign-out#sign-in-session) 中用于签名 JWT([访问令牌 (Access tokens)](https://auth.wiki/access-token) 和 [ID 令牌 (ID tokens)](https://auth.wiki/id-token))以及浏览器 Cookie 的签名密钥。这些签名密钥会在初始化 Logto 数据库([开源版](/logto-oss))或创建新租户([云端](/logto-cloud))时生成,并可通过 [CLI](/logto-oss/using-cli)(开源版)、Management API 或控制台界面进行管理。
+Logto [OIDC 签名密钥](https://auth.wiki/signing-key),也称为 “OIDC 私钥” 和 “OIDC Cookie 密钥”,是用于在 Logto [登录会话](/end-user-flows/sign-out#sign-in-session) 中对 JWT([访问令牌 (Access token)](https://auth.wiki/access-token) 和 [ID 令牌 (ID token)](https://auth.wiki/id-token))以及浏览器 Cookie 进行签名的密钥。这些签名密钥会在初始化 Logto 数据库([开源版](/logto-oss))或创建新租户([云端](/logto-cloud))时生成,并可通过 [CLI](/logto-oss/using-cli)(开源版)、Management API 或控制台界面进行管理。
-默认情况下,Logto 使用椭圆曲线(EC)算法生成数字签名。然而,考虑到用户经常需要验证 JWT 签名,而许多旧工具并不支持 EC 算法(只支持 RSA),我们实现了私钥轮换功能,并允许用户选择签名算法(包括 RSA 和 EC)。这样可以确保与使用过时签名验证工具的服务兼容。
+默认情况下,Logto 使用椭圆曲线(EC)算法生成数字签名。然而,考虑到用户经常需要验证 JWT 签名,而许多旧工具并不支持 EC 算法(只支持 RSA),我们实现了私钥轮换功能,并允许用户选择签名算法(包括 RSA 和 EC)。这确保了与使用过时签名验证工具的服务的兼容性。
:::note
-理论上,签名密钥不应泄露且没有过期时间,也就是说无需轮换。但定期在一段时间后轮换签名密钥可以提升安全性。
+理论上,签名密钥不应泄露且没有过期时间,因此无需轮换。但定期在一段时间后轮换签名密钥可以提升安全性。
:::
-## 工作原理 \{#how-it-works}
+## 工作原理?\{#how-it-works}
- **OIDC 私钥**
- 在初始化 Logto 实例时,会自动生成一对公钥和私钥,并注册到底层 OIDC 提供方。因此,当 Logto 颁发新的 JWT(访问令牌 (Access token) 或 ID 令牌 (ID token))时,令牌会用私钥进行签名。同时,任何收到 JWT 的客户端应用都可以使用配对的公钥验证令牌签名,以确保令牌未被第三方篡改。私钥在 Logto 服务器上受到保护。而公钥,顾名思义,是公开的,任何人都可以通过 OIDC 端点的 `/oidc/jwks` 接口获取。生成私钥时可以指定签名密钥算法,Logto 默认使用 EC(椭圆曲线)算法。管理员用户可以通过轮换私钥将默认算法更改为 RSA(Rivest-Shamir-Adleman)。
+ 在初始化 Logto 实例时,会自动生成一对公钥和私钥,并注册到底层 OIDC 提供方。因此,当 Logto 颁发新的 JWT(访问令牌 (Access token) 或 ID 令牌 (ID token))时,令牌会使用私钥进行签名。同时,任何接收到 JWT 的客户端应用都可以使用配对的公钥验证令牌签名,以确保令牌未被第三方篡改。私钥在 Logto 服务器上受到保护。而公钥,顾名思义,是公开的,任何人都可以通过 OIDC 端点的 `/oidc/jwks` 接口获取。在生成私钥时可以指定签名密钥算法,Logto 默认使用 EC(椭圆曲线)算法。管理员用户可以通过轮换私钥将默认算法更改为 RSA(Rivest-Shamir-Adleman)。
- **OIDC Cookie 密钥**
- 当用户发起登录或注册流程时,服务器会创建一个 “OIDC 会话”,并生成一组浏览器 Cookie。借助这些 Cookie,浏览器可以代表用户请求 Logto Experience API 执行一系列交互,如登录、注册和重置密码。但与 JWT 不同,Cookie 只由 Logto OIDC 服务自身签名和验证,不需要非对称加密措施。因此,Cookie 签名密钥没有配对的公钥,也不使用非对称加密算法。
+ 当用户发起登录或注册流程时,服务器上会创建一个 “OIDC 会话”,以及一组浏览器 Cookie。借助这些 Cookie,浏览器可以代表用户请求 Logto Experience API 执行一系列交互,如登录、注册和重置密码。但与 JWT 不同,Cookie 仅由 Logto OIDC 服务自身签名和验证,不需要非对称加密措施。因此,Cookie 签名密钥没有配对的公钥,也不使用非对称加密算法。
## 通过控制台界面轮换签名密钥 \{#rotate-signing-keys-from-console-ui}
Logto 引入了 “签名密钥轮换” 功能,允许你在租户中创建新的 OIDC 私钥和 Cookie 密钥。
-1. 进入 控制台 > 签名密钥。在这里,你可以管理 OIDC 私钥和 OIDC Cookie 密钥。
-2. 若要轮换签名密钥,点击 “轮换私钥” 或 “轮换 Cookie 密钥” 按钮。轮换私钥时,你可以选择更改签名算法。
+1. 进入 控制台 > 签名密钥。你可以在这里管理 OIDC 私钥和 OIDC Cookie 密钥。
+2. 要轮换签名密钥,点击 “轮换私钥” 或 “轮换 Cookie 密钥” 按钮。轮换私钥时,你可以选择更改签名算法。
3. 你会看到一个表格,列出了所有正在使用的签名密钥。注意:你可以删除之前的密钥,但不能删除当前正在使用的密钥。
- | 状态 | 说明 |
- | ---- | -------------------------------------------------------------------- |
- | 当前 | 表示该密钥当前在你的应用和 API 中处于激活状态。 |
- | 之前 | 指之前使用过但已被轮换的密钥。使用该签名密钥签发的现有令牌仍然有效。 |
+ | 状态 | 说明 |
+ | ---- | ------------------------------------------------------------------------ |
+ | 当前 | 表示该密钥目前正在你的应用和 API 中被使用。 |
+ | 之前 | 指的是之前使用过但已被轮换的密钥。使用该签名密钥签发的现有令牌仍然有效。 |
请记住,轮换涉及以下三个操作:
-1. **创建新签名密钥**:这将要求你所有的**应用程序**和**API**采用新的签名密钥。
+1. **创建新签名密钥**:这将要求你的所有**应用程序**和**API**采用新的签名密钥。
2. **轮换当前密钥**:轮换后,现有密钥将被标记为 “之前”,不会被新创建的应用和 API 使用。但用该密钥签名的令牌仍然有效。
3. **移除之前的密钥**:标记为 “之前” 的密钥将被吊销并从表格中移除。
@@ -45,7 +45,7 @@ Logto 引入了 “签名密钥轮换” 功能,允许你在租户中创建新
切勿连续(两次或以上)轮换签名密钥,否则可能导致所有已签发的令牌失效。
- 对于 OSS 用户,轮换签名密钥后需要重启 Logto 实例,新签名密钥才会生效。
-- 对于云端用户,新签名密钥在轮换后立即生效,但请务必不要连续多次轮换签名密钥。
+- 对于云端用户,轮换后新签名密钥会立即生效,但请确保不要连续多次轮换签名密钥。
:::
## 相关资源 \{#related-resources}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
index 4b0ae30d01b..4057bad4e95 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
@@ -2,16 +2,16 @@
id: user-impersonation
title: 用户模拟 (User impersonation)
sidebar_label: 用户模拟 (User impersonation)
-sidebar_position: 3
+sidebar_position: 4
---
import TokenExchangePrerequisites from './fragments/_token-exchange-prerequisites.mdx';
# 用户模拟 (User impersonation)
-想象一下,TechCorp 的支持工程师 Sarah 收到了一张来自客户 Alex 的紧急工单,Alex 无法访问关键资源。为了高效地诊断和解决问题,Sarah 需要看到系统中 Alex 所看到的内容。这时,Logto 的用户模拟 (User impersonation) 功能就派上用场了。
+想象一下,TechCorp 的支持工程师 Sarah 收到了一条来自客户 Alex 的紧急工单,Alex 无法访问关键资源。为了高效地诊断和解决问题,Sarah 需要看到系统中 Alex 所看到的内容。这时,Logto 的用户模拟 (User impersonation) 功能就派上了用场。
-用户模拟 (User impersonation) 允许像 Sarah 这样的授权 (Authorization) 用户在系统内临时以其他用户(如 Alex)的身份进行操作。这个强大的功能对于故障排查、客户支持和执行管理任务非常有价值。
+用户模拟 (User impersonation) 允许像 Sarah 这样的授权用户在系统中临时以其他用户(如 Alex)的身份进行操作。这个强大的功能对于故障排查、客户支持和执行管理任务非常有价值。
## 工作原理?\{#how-it-works}
@@ -26,7 +26,7 @@ sequenceDiagram
Note over Sarah,TechCorp: 请求模拟 Alex
TechCorp->>Logto: POST /api/subject-tokens
- Note over TechCorp,Logto: 请求 Alex 的 subject token
+ Note over TechCorp,Logto: 为 Alex 请求 subject token
Logto-->>TechCorp: 返回 subject token
TechCorp-->>Sarah: 返回 subject token
@@ -41,10 +41,10 @@ sequenceDiagram
模拟流程包含三个主要步骤:
1. Sarah 通过 TechCorp 的后端服务器请求模拟
-2. TechCorp 的服务器通过 Logto Management API 获取 subject token
-3. Sarah 的应用用该 subject token 换取访问令牌 (Access token)
+2. TechCorp 的服务器从 Logto 的 Management API 获取 subject token
+3. Sarah 的应用用这个 subject token 换取访问令牌 (Access token)
-让我们看看 Sarah 如何使用这个功能来帮助 Alex。
+下面我们来看看 Sarah 如何使用这个功能帮助 Alex。
### 步骤 1:请求模拟 \{#step-1-requesting-impersonation}
@@ -60,18 +60,18 @@ Content-Type: application/json
{
"userId": "alex123",
- "reason": "正在调查资源访问问题",
+ "reason": "Investigating resource access issue",
"ticketId": "TECH-1234"
}
```
-在这个 API 中,后端应进行适当的授权 (Authorization) 检查,确保 Sarah 拥有模拟 Alex 的必要权限 (Permissions)。
+在这个 API 中,后端应进行适当的授权 (Authorization) 检查,确保 Sarah 拥有模拟 Alex 的必要权限。
### 步骤 2:获取 subject token \{#step-2-obtaining-a-subject-token}
TechCorp 的服务器在验证 Sarah 的请求后,会调用 Logto 的 [Management API](/integrate-logto/interact-with-management-api) 获取 subject token。
-**请求(TechCorp 的服务器到 Logto Management API)**
+**请求(TechCorp 的服务器到 Logto 的 Management API)**
```bash
POST /api/subject-tokens HTTP/1.1
@@ -83,7 +83,7 @@ Content-Type: application/json
"userId": "alex123",
"context": {
"ticketId": "TECH-1234",
- "reason": "资源访问问题",
+ "reason": "Resource access issue",
"supportEngineerId": "sarah789"
}
}
@@ -98,7 +98,7 @@ Content-Type: application/json
}
```
-TechCorp 的服务器随后应将该 subject token 返回给 Sarah 的应用。
+TechCorp 的服务器随后应将这个 subject token 返回给 Sarah 的应用。
**响应(TechCorp 的服务器到 Sarah 的应用)**
@@ -113,11 +113,11 @@ TechCorp 的服务器随后应将该 subject token 返回给 Sarah 的应用。
-现在,Sarah 的应用将该 subject token 换取代表 Alex 的访问令牌 (Access token),并指定该令牌将被用于的资源。
+现在,Sarah 的应用用这个 subject token 换取代表 Alex 的访问令牌 (Access token),并指定该令牌将被用于哪个资源。
-**请求(Sarah 的应用到 Logto token endpoint)**
+**请求(Sarah 的应用到 Logto 的 token endpoint)**
-对于传统 Web 应用或带有 app secret 的机器对机器应用,请在 `Authorization` 头中包含凭证:
+对于传统 Web 应用或带有 app secret 的机器对机器应用,在 `Authorization` 头中包含凭证:
```bash
POST /oidc/token HTTP/1.1
@@ -133,7 +133,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&resource=https://api.techcorp.com/customer-data
```
-对于单页应用 (SPA) 或无 app secret 的原生应用,请在请求体中包含 `client_id`:
+对于单页应用 (SPA) 或无 app secret 的原生应用,在请求体中包含 `client_id`:
```bash
POST /oidc/token HTTP/1.1
@@ -161,11 +161,11 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
}
```
-返回的 `access_token` 会绑定到指定资源,确保只能用于 TechCorp 的客户数据 API。
+返回的 `access_token` 会绑定到指定资源,确保它只能用于 TechCorp 的客户数据 API。
## 示例用法 \{#example-usage}
-以下是 Sarah 在 Node.js 支持应用中可能的用法:
+以下是 Sarah 在 Node.js 支持应用中如何使用该功能的示例:
```tsx
interface ImpersonationResponse {
@@ -201,14 +201,14 @@ async function impersonateUser(
},
body: JSON.stringify({
userId,
- reason: '正在调查资源访问问题',
+ reason: 'Investigating resource access issue',
ticketId,
}),
}
);
if (!impersonationResponse.ok) {
- throw new Error(`HTTP 错误。状态码: ${impersonationResponse.status}`);
+ throw new Error(`HTTP error occurred. Status: ${impersonationResponse.status}`);
}
const { subjectToken } = (await impersonationResponse.json()) as ImpersonationResponse;
@@ -246,13 +246,13 @@ async function impersonateUser(
});
if (!tokenExchangeResponse.ok) {
- throw new Error(`HTTP 错误!状态码: ${tokenExchangeResponse.status}`);
+ throw new Error(`HTTP error! status: ${tokenExchangeResponse.status}`);
}
const tokenData = (await tokenExchangeResponse.json()) as TokenExchangeResponse;
return tokenData.access_token;
} catch (error) {
- console.error('模拟失败:', error);
+ console.error('Impersonation failed:', error);
throw error;
}
}
@@ -261,7 +261,7 @@ async function impersonateUser(
async function performImpersonation(): Promise {
try {
// highlight-start
- // 传统 Web 或 M2M 应用传递 client secret
+ // 传统 Web 或 M2M 应用需传递 client secret
const accessToken = await impersonateUser(
'alex123',
'techcorp_support_app',
@@ -284,15 +284,15 @@ void performImpersonation();
1. subject token 是短时且一次性使用的。
2. 模拟访问令牌 (Access token) 不会携带 [刷新令牌 (Refresh token)](https://auth.wiki/refresh-token)。如果令牌在 Sarah 解决 Alex 问题前过期,需要重复此流程。
-3. TechCorp 的后端服务器必须实现适当的授权 (Authorization) 检查,确保只有像 Sarah 这样的授权 (Authorization) 支持人员才能请求模拟。
+3. TechCorp 的后端服务器必须实现适当的授权 (Authorization) 检查,确保只有像 Sarah 这样的授权支持人员才能请求模拟。
:::
## `act` 声明 (Claim) \{#act-claim}
-在使用令牌交换流程进行模拟时,签发的访问令牌 (Access token) 可以包含额外的 `act`(actor)声明 (Claim)。该声明 (Claim) 表示“执行方”的身份——在本例中即执行模拟的 Sarah。
+在使用令牌交换流程进行模拟时,签发的访问令牌 (Access token) 可以包含额外的 `act`(actor)声明 (Claim)。该声明 (Claim) 表示“执行方”的身份——在我们的例子中,就是执行模拟操作的 Sarah。
-要包含 `act` 声明 (Claim),Sarah 的应用需要在令牌交换请求中提供 `actor_token`。该 token 应为带有 `openid` 权限 (Scope) 的 Sarah 的有效访问令牌 (Access token)。以下是如何在令牌交换请求中包含它:
+要包含 `act` 声明 (Claim),Sarah 的应用需要在令牌交换请求中提供一个 `actor_token`。该 token 应为带有 `openid` 权限 (Scope) 的 Sarah 的有效访问令牌 (Access token)。以下是如何在令牌交换请求中包含它:
对于传统 Web 应用或机器对机器应用:
@@ -312,7 +312,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&resource=https://api.techcorp.com/customer-data
```
-对于 SPA 或原生应用,在请求体中包含 `client_id`:
+对于 SPA 或原生应用,则在请求体中包含 `client_id`:
```bash
POST /oidc/token HTTP/1.1
@@ -330,7 +330,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&resource=https://api.techcorp.com/customer-data
```
-如果提供了 `actor_token`,最终的访问令牌 (Access token) 会包含如下 `act` 声明 (Claim):
+如果提供了 `actor_token`,最终的访问令牌 (Access token) 会包含如下的 `act` 声明 (Claim):
```json
{
@@ -344,26 +344,26 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
}
```
-这个 `act` 声明 (Claim) 明确表示 Sarah(sarah789)正在以 Alex(alex123)的身份操作。`act` 声明 (Claim) 对于审计和追踪模拟操作非常有用。
+这个 `act` 声明 (Claim) 清楚地表明 Sarah(sarah789)正在以 Alex(alex123)的身份操作。`act` 声明 (Claim) 对于审计和追踪模拟操作非常有用。
## 自定义令牌声明 (Claims) \{#customizing-token-claims}
Logto 允许你为模拟令牌 [自定义令牌声明 (Claims)](/developers/custom-token-claims)。这对于在模拟过程中添加额外的上下文或元数据(如模拟原因或关联工单)非常有用。
-当 TechCorp 的服务器向 Logto Management API 请求 subject token 时,可以包含一个 `context` 对象:
+当 TechCorp 的服务器向 Logto 的 Management API 请求 subject token 时,可以包含一个 `context` 对象:
```json
{
"userId": "alex123",
"context": {
"ticketId": "TECH-1234",
- "reason": "资源访问问题",
+ "reason": "Resource access issue",
"supportEngineerId": "sarah789"
}
}
```
-这个 [context](/developers/custom-token-claims/create-script#context-only-available-for-user-access-token) 可在 `getCustomJwtClaims()` 函数中用于向最终访问令牌 (Access token) 添加特定声明 (Claims)。示例实现如下:
+这个 [context](/developers/custom-token-claims/create-script#context-only-available-for-user-access-token) 可以在 `getCustomJwtClaims()` 函数中用于向最终访问令牌 (Access token) 添加特定声明 (Claims)。示例实现如下:
```tsx
const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
@@ -389,17 +389,17 @@ Sarah 获得的最终访问令牌 (Access token) 可能如下所示:
"aud": "https://api.techcorp.com/customer-data",
"impersonation_context": {
"ticket_id": "TECH-1234",
- "reason": "资源访问问题",
+ "reason": "Resource access issue",
"support_engineer": "sarah789"
}
// ... 其他标准声明 (Claims)
}
```
-通过这种方式自定义访问令牌 (Access token) 声明 (Claims),TechCorp 可以在系统中包含关于模拟上下文的有价值信息,便于审计和理解模拟活动。
+通过这种方式自定义访问令牌 (Access token) 声明 (Claims),TechCorp 可以在系统中包含关于模拟上下文的有价值信息,使审计和理解模拟操作更加容易。
:::note
-在为令牌添加自定义声明 (Claims) 时请谨慎。避免包含敏感信息,以防令牌被截获或泄露带来安全风险。JWT 虽然已签名但未加密,任何获得令牌的人都能看到声明 (Claims) 内容。
+在为令牌添加自定义声明 (Claims) 时要谨慎。避免包含敏感信息,以防令牌被截获或泄露带来安全风险。JWT 虽然已签名但未加密,任何获得令牌的人都能看到声明 (Claims) 内容。
:::
## 相关资源 \{#related-resources}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
index d1898b0c740..d584cdcccd9 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
@@ -1,35 +1,35 @@
---
-sidebar_position: 5
+sidebar_position: 6
---
# Webhook
Logto [Webhook](https://auth.wiki/webhook) 为各种事件提供实时通知,包括用户账户、角色、权限、组织 (Organizations)、组织角色、组织权限以及 [用户交互](/end-user-flows) 的变更。
-当事件被触发时,Logto 会向你提供的 Endpoint URL 发送 HTTP 请求,其中包含有关事件的详细信息,如用户 ID、用户名、邮箱及其他相关细节(关于 payload 和 header 中包含的数据,详见 [Webhook 请求](/developers/webhooks/webhooks-request))。你的应用可以处理该请求并执行自定义操作,比如发送邮件或更新数据库中的数据。
+当事件被触发时,Logto 会向你提供的 Endpoint URL 发送 HTTP 请求,其中包含有关事件的详细信息,如用户 ID、用户名、邮箱以及其他相关细节(关于 payload 和 header 中包含的数据,详见 [Webhook 请求](/developers/webhooks/webhooks-request))。你的应用可以处理该请求并执行自定义操作,比如发送邮件或更新数据库中的数据。
我们会根据用户需求持续增加更多事件。如果你有特定的业务需求,请告知我们。
## 为什么要使用 Webhook?\{#why-use-webhook}
-Webhook 在应用之间提供实时通信,无需轮询,能够实现即时数据更新。它们简化了应用集成和工作流自动化,无需复杂代码或专有 API。
+Webhook 提供了应用之间的实时通信,无需轮询即可实现即时数据更新。它们简化了应用集成和工作流自动化,无需复杂代码或专有 API。
以下是 CIAM 常见 Webhook 用例示例:
- **发送邮件:** 配置 Webhook,在新用户注册时发送欢迎邮件,或在用户从新设备或位置登录时通知管理员。
-- **发送通知:** 配置 Webhook,当用户注册时,触发与你的 CRM 系统集成的虚拟助手,提供实时客户支持。
-- **执行额外 API 调用:** 配置 Webhook,通过检查用户邮箱域名或 IP 地址来验证用户访问,然后使用 Logto Management API 分配带有资源权限的合适角色。
-- **数据同步:** 配置 Webhook,保持应用关于用户账户暂停或删除等变更的实时更新。
+- **发送通知:** 配置 Webhook,结合你的 CRM 系统触发虚拟助手,为用户注册时提供实时客户支持。
+- **执行额外 API 调用:** 配置 Webhook,通过检查用户邮箱域名或 IP 地址来验证用户访问权限,然后使用 Logto Management API 分配带有资源权限的合适角色。
+- **数据同步:** 配置 Webhook,确保应用及时获知如用户账户被暂停或删除等变更。
- **生成报告:** 设置 Webhook 接收用户登录活动数据,并利用这些数据生成用户参与度或使用模式报告。
## 术语 \{#terms}
-| Item | Description |
-| ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
-| Event | 当执行特定操作时,会触发具有特定类型的 hook 事件。例如,当用户完成注册流程并创建新账户时,Logto 会发出 PostRegister hook 事件。 |
-| Hook | 挂载到特定事件上的一个或一系列操作。操作可以是调用 API、执行代码片段等。 |
-| Webhook | hook 的一种子类型,表示用事件 payload 调用 API。 |
-| 假设开发者希望在用户通过新设备登录时发送通知,可以为 PostSignIn 事件添加一个调用其安全服务 API 的 webhook。 |
+| Item | Description |
+| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
+| Event | 当执行特定操作时,会触发带有特定类型的 hook 事件。例如,用户完成注册流程并创建新账户后,Logto 会发出 PostRegister hook 事件。 |
+| Hook | 挂载到特定事件上的一个或一系列操作。操作可以是调用 API、执行代码片段等。 |
+| Webhook | hook 的一种子类型,表示用事件 payload 调用 API。 |
+| 假如开发者希望在用户通过新设备登录时发送通知,可以为 PostSignIn 事件添加一个调用其安全服务 API 的 webhook。 |
以下是在 Logto 中为 `PostSignIn` 事件启用两个 web hook 的示例:
@@ -89,7 +89,7 @@ graph LR
-对于接收 Webhook 的 endpoint,应尽快返回 2xx 响应,以告知 Logto Webhook 已被成功接收。由于不同用户对 Webhook 的处理逻辑差异很大,过于复杂的任务可能需要几秒钟,导致 Logto Webhook 超时。最佳实践是维护你自己的事件队列;收到 Logto Webhook 后,将事件插入队列,并立即向 Logto 返回 2xx 响应。然后让你自己的 worker 逐步处理队列中的任务。如果 worker 遇到错误,请在你自己的服务器上处理。
+对于接收 Webhook 的 endpoint,应尽快返回 2xx 响应,以告知 Logto Webhook 已被成功接收。由于不同用户对 Webhook 的处理逻辑差异很大,过于复杂的任务可能需要几秒钟,导致 Logto Webhook 超时。最佳实践是维护你自己的事件队列;收到 Logto Webhook 后,将事件插入队列并立即返回 2xx 响应给 Logto。然后让你自己的 worker 逐步处理队列中的任务。如果 worker 处理出错,请在你自己的服务器上处理。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
index 937d473be1d..23891d96506 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
@@ -8,26 +8,51 @@ import GearIcon from '@site/src/assets/gear.svg';
# 账户设置
-Logto 提供了两套账户设置 API,允许用户管理存储在 Logto 中的账户和个人资料。
+Logto 提供多种方式,让用户管理存储在 Logto 中的账户和个人资料。
-## 使用 Account API(推荐)\{#use-account-apis-recommended}
+## 使用预构建的账户中心界面(推荐) \{#use-prebuilt-account-center-ui-recommended}
-Logto 的 Account API 是即开即用的前端端点,让终端用户可以安全地查看和更新自己的信息,并内置权限控制。只需将其嵌入你的客户端应用,即可打造精美的自助账户设置页面。
+Logto 提供了一个预构建的账户中心界面,为终端用户提供现成的账户设置管理页面。这是为你的应用添加账户管理功能最快捷的方式。
主要特性:
-- **终端用户设置**:用户可管理自己的登录标识符和凭据、社交账号、多因素认证 (MFA) 方法和个人资料数据。
-- **客户端集成**:专为前端安全、直接使用而设计。
-- **极简配置**:无需自定义服务器即可使用的即插即用端点。
+- **零开发成本**:开箱即用的页面,无需开发即可使用。
+- **一致的体验**:与 Logto 登录体验保持一致的外观和风格。
+- **内置安全性**:所有验证流程和安全措施均自动处理。
+- **完整功能**:支持更新邮箱、手机号、用户名、密码和多因素认证 (MFA) 设置。
+
+,
+ },
+ },
+ ]}
+/>
+
+## 使用 Account API \{#use-account-apis}
+
+Logto 的 Account API 是可直接使用的前端端点,让终端用户可以安全地查看和更新自己的信息,并内置权限检查。当你需要用自定义界面构建账户设置页面时,可以使用此方式。
+
+主要特性:
+
+- **终端用户设置**:用户可管理自己的登录标识和凭证、社交账号、多因素认证 (MFA) 方法和个人资料数据。
+- **客户端集成**:专为前端安全直接调用设计。
+- **完全自定义**:你可以自定义界面,同时利用 Logto 的安全 API。
- **权限控制**:可通过 Management API 设置切换哪些 Account API 被启用。
,
},
@@ -51,7 +76,7 @@ Management API 构成了 Logto 的核心管理接口,仅限管理员或后端
type: 'link',
label: '使用 Logto Management API',
href: '/end-user-flows/account-settings/by-management-api',
- description: '了解如何使用用户 Management API 构建你自己的账户设置页面。',
+ description: '了解更多如何使用用户 Management API 构建你自己的账户设置页面。',
customProps: {
icon: ,
},
@@ -59,13 +84,14 @@ Management API 构成了 Logto 的核心管理接口,仅限管理员或后端
]}
/>
-## Account API 与 Management API 对比 \{#account-api-vs-management-api}
+## 账户设置选项对比 \{#comparison-of-account-settings-options}
-| 功能 | Account API | Management API |
-| -------------- | ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
-| **目标用户** | 终端用户 | 管理员 / 开发者 |
-| **访问场景** | 客户端 / 前端 | 服务器端 / 后端 |
-| **权限模型** | 可通过 Management API 切换哪些 Account API 被启用。 | 开发者可完全自定义 |
-| **支持的功能** | 查看、更新和删除:用户名、邮箱、手机号、密码、社交账号、多因素认证 (MFA)、个人资料 | 所有基础设置 + 删除 / 暂停 / 恢复账户、个人访问令牌、用户模拟、连接 OAuth 应用等 |
-| **配置复杂度** | 极低(即插即用) | 中等到高(需要自定义实现) |
-| **适用场景** | 需要在客户端应用中快速上线安全的自助账户设置页面,且配置最少时使用。 | 当 Account API 不能满足你的需求时使用。例如复杂的账户删除逻辑、高风险操作或构建后台管理工具等场景。 |
+| 功能 | 预构建账户中心界面 | Account API | Management API |
+| -------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
+| **目标用户** | 终端用户 | 终端用户 | 管理员 / 开发者 |
+| **访问场景** | 跳转到 Logto 托管页面 | 客户端 / 前端 | 服务端 / 后端 |
+| **权限模型** | 通过账户中心设置切换哪些字段可用 | 通过 Management API 设置切换哪些 Account API 可用 | 开发者可完全自定义 |
+| **支持的功能** | 更新:邮箱、手机号、用户名、密码、多因素认证 (MFA)(TOTP、通行密钥、备份码) | 查看、更新和删除:用户名、邮箱、手机号、密码、社交账号、多因素认证 (MFA)、个人资料 | 所有基础设置 + 删除 / 暂停 / 恢复账户、个人访问令牌、用户模拟、连接 OAuth 应用等 |
+| **界面自定义** | 继承登录体验品牌风格 | 完全自定义(自建界面) | 完全自定义(自建界面) |
+| **集成复杂度** | 无(只需链接到预构建页面) | 低(用 API 配合自定义界面) | 中到高(需要自定义实现) |
+| **适用场景** | 最快添加账户管理且无需自定义页面时 | 需要自定义界面但希望利用 Logto 安全 API 时 | 当 Account API 无法满足需求时,例如复杂的账户删除逻辑、高风险操作或构建后台管理工具 |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
new file mode 100644
index 00000000000..c743739233a
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
@@ -0,0 +1,152 @@
+---
+description: 了解如何使用 Logto 的预构建账户中心 UI,让用户管理他们的账户
+sidebar_position: 2
+---
+
+# 通过预构建账户中心 UI 进行账户设置
+
+## 什么是预构建账户中心 UI \{#what-is-the-prebuilt-account-center-ui}
+
+Logto 提供了一个预构建的账户中心 UI,为终端用户提供了可直接使用的页面来管理他们的账户设置。这个预构建 UI 由 Logto 托管,处理常见的账户管理任务,包括:
+
+- 更新邮箱地址
+- 更新手机号
+- 更新用户名
+- 设置或更新密码
+- 管理多因素认证 (MFA) 设置(TOTP 认证器应用、通行密钥、备份码)
+
+预构建账户中心 UI 旨在与你的应用无缝协作,提供一致的用户体验,无需你自行开发自定义账户管理页面。
+
+## 使用预构建 UI 的优势 \{#benefits-of-using-the-prebuilt-ui}
+
+- **零开发成本**:开箱即用的页面
+- **一致体验**:与 Logto 登录体验风格一致
+- **内置安全性**:所有验证流程和安全措施自动处理
+- **始终保持最新**:新功能和安全改进会自动获得
+
+## 可用页面 \{#available-pages}
+
+预构建账户中心 UI 提供以下页面,均可通过你的 Logto 租户端点下的 `/account` 路径访问:
+
+| 路径 | 描述 |
+| -------------------------------- | -------------------------- |
+| `/account/email` | 更新主邮箱地址 |
+| `/account/phone` | 更新主手机号 |
+| `/account/username` | 更新用户名 |
+| `/account/password` | 设置或更新密码 |
+| `/account/passkey/add` | 添加新通行密钥(WebAuthn) |
+| `/account/passkey/manage` | 查看和管理现有通行密钥 |
+| `/account/authenticator-app` | 设置 TOTP 认证器应用 |
+| `/account/backup-codes/generate` | 生成新的备份码 |
+| `/account/backup-codes/manage` | 查看和管理备份码 |
+
+例如,如果你的租户端点是 `https://example.logto.app`,邮箱更新页面的地址就是 `https://example.logto.app/account/email`。
+
+## 如何使用预构建 UI \{#how-to-use-the-prebuilt-ui}
+
+### 第一步:启用 Account API \{#step-1-enable-account-api}
+
+预构建账户中心 UI 依赖于 Account API。前往 控制台 > 登录与账户 > 账户中心 并启用 Account API。
+
+根据你的需求配置字段权限:
+
+- 将字段设置为 `Edit` 允许用户修改
+- 将字段设置为 `ReadOnly` 仅允许用户查看
+- 将字段设置为 `Off` 完全隐藏字段
+
+### 第二步:从你的应用跳转到预构建页面 \{#step-2-link-to-prebuilt-pages}
+
+要使用预构建账户中心 UI,你需要将用户从你的应用重定向到相应的 Logto 页面。有两种方式:
+
+#### 方式 A:直接链接并带上重定向参数 \{#approach-a-direct-linking}
+
+在你的应用中添加链接,将用户重定向到预构建页面。添加 `redirect` 查询参数,用户完成操作后会返回你的应用:
+
+```
+https://[tenant-id].logto.app/account/email?redirect=https://your-app.com/settings
+```
+
+当用户完成邮箱更新后,会被重定向回 `https://your-app.com/settings`。
+
+#### 方式 B:嵌入到你的账户设置流程中 \{#approach-b-embedding}
+
+你可以将预构建页面集成到你现有的账户设置流程中:
+
+1. 在你的应用账户设置页展示用户当前信息
+2. 提供“编辑”或“更新”按钮,链接到相应的预构建页面
+3. 用户完成操作后会被重定向回你的应用
+
+示例实现:
+
+```tsx
+function AccountSettings() {
+ const tenantEndpoint = 'https://example.logto.app';
+ const redirectUrl = encodeURIComponent(window.location.href);
+
+ return (
+
+
账户设置
+
+
+
邮箱:user@example.com
+
更新邮箱
+
+
+
+
+
+
+ );
+}
+```
+
+### 第三步:处理成功重定向 \{#step-3-handle-success-redirects}
+
+用户完成操作后,会被重定向到你指定的 URL,并带有可选的 `show_success` 查询参数。你可以用它来展示成功提示:
+
+```tsx
+function SettingsPage() {
+ const searchParams = new URLSearchParams(window.location.search);
+ const showSuccess = searchParams.get('show_success');
+
+ return (
+
+ {showSuccess === 'email' &&
邮箱更新成功!
}
+ {showSuccess === 'password' &&
密码更新成功!
}
+ {/* ... 你的设置页面其他内容 */}
+
+ );
+}
+```
+
+## 安全性说明 \{#security-considerations}
+
+预构建账户中心 UI 内置了安全措施:
+
+- **身份验证**:在进行敏感操作(邮箱、手机号、密码、MFA)前,用户必须通过当前密码或现有验证方式验证身份
+- **验证码**:邮箱和手机号更新需要向新地址 / 号码发送验证码
+- **会话校验**:所有操作都会校验用户会话,防止未授权访问
+
+## 个性化定制选项 \{#customization-options}
+
+预构建账户中心 UI 会继承你的登录体验设置中的品牌,包括:
+
+- Logo 和配色
+- 深色 / 浅色模式
+- 语言设置
+
+如果你需要超出预构建 UI 提供范围的自定义,可以考虑使用 [Account API](/end-user-flows/account-settings/by-account-api) 自行开发账户管理页面。
+
+## 相关资源 \{#related-resources}
+
+- [通过 Account API 进行账户设置](/end-user-flows/account-settings/by-account-api) - 使用完整 API 控制自定义账户管理
+- [通过 Management API 进行账户设置](/end-user-flows/account-settings/by-management-api) - 管理员级账户管理
+- [MFA 配置](/end-user-flows/mfa) - 设置多因素认证 (MFA)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/README.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/README.mdx
index 066b216ef2f..07487c56897 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/README.mdx
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/introduction/README.mdx
@@ -1,5 +1,5 @@
---
-description: 通过集成 Logto,快速启动你的身份和访问管理系统。尽享认证 (Authentication)、授权 (Authorization) 和多租户管理于一体的体验。
+description: 通过集成 Logto,快速启动你的身份和访问管理系统。享受认证 (Authentication)、授权 (Authorization) 和多租户管理一体化体验。
---
import AuditLogIcon from '@site/src/assets/audit-log.svg';
@@ -32,7 +32,7 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
# 简介
-欢迎来到 Logto 文档!Logto 是为现代应用和 SaaS 产品设计的身份与访问管理 (IAM) 解决方案。它为你的应用程序提供安全、可扩展且可定制的认证 (Authentication) 和授权 (Authorization) 系统。
+欢迎来到 Logto 文档!Logto 是为现代应用和 SaaS 产品设计的身份和访问管理 (IAM) 解决方案。它为你的应用程序提供安全、可扩展且可定制的认证 (Authentication) 和授权 (Authorization) 系统。
## 按功能探索 \{#explore-by-features}
@@ -143,6 +143,10 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
icon: ,
docId: 'developers/custom-token-claims/README',
},
+ {
+ icon: ,
+ docId: 'developers/custom-id-token/README',
+ },
{
icon: ,
docId: 'developers/user-impersonation',
@@ -160,15 +164,15 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
## 按支持工具包探索 \{#explore-by-support-toolkit}
-Logto 的能力基于四大支柱,为你轻松集成到产品或业务中提供坚实基础。
+Logto 的能力基于四大支柱,构成了你可以轻松集成到产品或业务中的功能基础。
,
},
@@ -178,7 +182,7 @@ Logto 的能力基于四大支柱,为你轻松集成到产品或业务中提
label: '终端用户体验',
href: '/end-user-flows',
description:
- '提供完整的认证 (Authentication) 流程和用户界面,并可通过 Logto 控制台和 API 进行深度定制。',
+ '提供完整的认证 (Authentication) 流程和用户界面,并可通过 Logto Console 和 API 进行深度定制。',
customProps: {
icon: ,
},
@@ -207,7 +211,7 @@ Logto 的能力基于四大支柱,为你轻松集成到产品或业务中提
label: 'Logto MCP Server',
href: '/logto-cloud/logto-mcp-server',
description:
- '连接 AI 工具和 IDE 到 Logto Cloud 的远程 MCP 服务器,实现资源管理和认证 (Authentication) 集成。',
+ '一个远程 MCP 服务器,将 AI 工具和 IDE 连接到 Logto Cloud,实现资源管理和认证 (Authentication) 集成。',
customProps: {
icon: ,
},
@@ -224,7 +228,7 @@ Logto 的能力基于四大支柱,为你轻松集成到产品或业务中提
label: 'Logto Cloud',
href: '/logto-cloud',
description:
- '我们的云服务包含 Free、Pro 和 Enterprise 计划,满足不同客户需求。由 Logto 托管和运维,并提供包含全部功能的开发租户用于测试。',
+ '我们的云服务包含 Free、Pro 和 Enterprise 计划,满足不同客户需求。由 Logto 托管和管理。同时提供 dev tenant,包含 Logto 的全部功能用于测试。',
customProps: {
icon: ,
},
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
index 8947cdad7ea..71a22f9e677 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
@@ -1,22 +1,24 @@
以下是支持的权限 (Scopes) 列表及其对应的声明 (Claims):
-**`openid`**
+### 标准 OIDC 权限 (Scopes) {#standard-oidc-scopes}
-| Claim name | Type | 描述 | 需要 userinfo 吗? |
-| ---------- | -------- | ---------------- | ------------------ |
-| sub | `string` | 用户的唯一标识符 | 否 |
+**`openid`**(默认)
-**`profile`**
+| Claim name | Type | Description |
+| ---------- | -------- | ---------------- |
+| sub | `string` | 用户的唯一标识符 |
-| Claim name | Type | 描述 | 需要 userinfo 吗? |
-| ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
-| name | `string` | 用户的全名 | 否 |
-| username | `string` | 用户名 | 否 |
-| picture | `string` | 终端用户头像的 URL。该 URL 必须指向图片文件(如 PNG、JPEG 或 GIF),而不是包含图片的网页。注意,该 URL 应专门指向适合在描述终端用户时展示的头像,而不是终端用户拍摄的任意照片。 | 否 |
-| created_at | `number` | 终端用户的创建时间。该时间以自 Unix 纪元(1970-01-01T00:00:00Z)以来的毫秒数表示。 | 否 |
-| updated_at | `number` | 终端用户信息最后更新时间。该时间以自 Unix 纪元(1970-01-01T00:00:00Z)以来的毫秒数表示。 | 否 |
+**`profile`**(默认)
-其他 [标准声明 (Claims)](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) 包括 `family_name`、`given_name`、`middle_name`、`nickname`、`preferred_username`、`profile`、`website`、`gender`、`birthdate`、`zoneinfo` 和 `locale` 也会包含在 `profile` 权限 (Scope) 中,无需请求 userinfo 端点。与上表声明 (Claims) 不同的是,这些声明 (Claims) 只有在值不为空时才会返回,而上表中的声明 (Claims) 如果值为空则会返回 `null`。
+| Claim name | Type | Description |
+| ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| name | `string` | 用户的全名 |
+| username | `string` | 用户名 |
+| picture | `string` | 终端用户头像的 URL。该 URL 必须指向图片文件(如 PNG、JPEG 或 GIF),而不是包含图片的网页。注意,该 URL 应专门指向适合在描述终端用户时展示的头像,而不是终端用户拍摄的任意照片。 |
+| created_at | `number` | 终端用户的创建时间。时间以自 Unix 纪元(1970-01-01T00:00:00Z)以来的毫秒数表示。 |
+| updated_at | `number` | 终端用户信息最后更新时间。时间以自 Unix 纪元(1970-01-01T00:00:00Z)以来的毫秒数表示。 |
+
+其他 [标准声明 (Claims)](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) 包括 `family_name`、`given_name`、`middle_name`、`nickname`、`preferred_username`、`profile`、`website`、`gender`、`birthdate`、`zoneinfo` 和 `locale` 也会包含在 `profile` 权限 (Scope) 中,无需请求 userinfo 端点。与上表声明 (Claims) 不同的是,这些声明 (Claims) 仅在其值不为空时返回,而上表中的声明 (Claims) 若值为空则返回 `null`。
:::note
与标准声明 (Claims) 不同,`created_at` 和 `updated_at` 声明 (Claims) 使用的是毫秒而不是秒。
@@ -24,58 +26,62 @@
**`email`**
-| Claim name | Type | 描述 | 需要 userinfo 吗? |
-| -------------- | --------- | ---------------------- | ------------------ |
-| email | `string` | 用户的电子邮件地址 | 否 |
-| email_verified | `boolean` | 电子邮件地址是否已验证 | 否 |
+| Claim name | Type | Description |
+| -------------- | --------- | ---------------------- |
+| email | `string` | 用户的电子邮件地址 |
+| email_verified | `boolean` | 电子邮件地址是否已验证 |
**`phone`**
-| Claim name | Type | 描述 | 需要 userinfo 吗? |
-| --------------------- | --------- | ------------------ | ------------------ |
-| phone_number | `string` | 用户的电话号码 | 否 |
-| phone_number_verified | `boolean` | 电话号码是否已验证 | 否 |
+| Claim name | Type | Description |
+| --------------------- | --------- | ------------------ |
+| phone_number | `string` | 用户的电话号码 |
+| phone_number_verified | `boolean` | 电话号码是否已验证 |
**`address`**
关于 address 声明 (Claim) 的详细信息,请参阅 [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#AddressClaim)。
+:::info
+带有 **(默认)** 标记的权限 (Scopes) 总是由 Logto SDK 请求。当请求相应权限 (Scope) 时,标准 OIDC 权限 (Scopes) 下的声明 (Claims) 总会包含在 ID 令牌 (ID token) 中——无法关闭。
+:::
+
+### 扩展权限 (Scopes) {#extended-scopes}
+
+以下权限 (Scopes) 由 Logto 扩展,并会通过 [userinfo 端点](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo) 返回声明 (Claims)。这些声明 (Claims) 也可以配置为直接包含在 ID 令牌 (ID token) 中,路径为 控制台 > 自定义 JWT。详见 [自定义 ID 令牌](/developers/custom-id-token)。
+
**`custom_data`**
-| Claim name | Type | 描述 | 需要 userinfo 吗? |
-| ----------- | -------- | ---------------- | ------------------ |
-| custom_data | `object` | 用户的自定义数据 | 是 |
+| Claim name | Type | Description | Included in ID token by default |
+| ----------- | -------- | ---------------- | ------------------------------- |
+| custom_data | `object` | 用户的自定义数据 | |
**`identities`**
-| Claim name | Type | 描述 | 需要 userinfo 吗? |
-| -------------- | -------- | ----------------------- | ------------------ |
-| identities | `object` | 用户关联的身份信息 | 是 |
-| sso_identities | `array` | 用户关联的 SSO 身份信息 | 是 |
+| Claim name | Type | Description | Included in ID token by default |
+| -------------- | -------- | ----------------------- | ------------------------------- |
+| identities | `object` | 用户关联的身份信息 | |
+| sso_identities | `array` | 用户关联的 SSO 身份信息 | |
**`roles`**
-| Claim name | Type | 描述 | 需要 userinfo 吗? |
-| ---------- | ---------- | ------------------ | ------------------ |
-| roles | `string[]` | 用户的角色 (Roles) | 否 |
+| Claim name | Type | Description | Included in ID token by default |
+| ---------- | ---------- | ------------------ | ------------------------------- |
+| roles | `string[]` | 用户的角色 (Roles) | ✅ |
**`urn:logto:scope:organizations`**
-| Claim name | Type | 描述 | 需要 userinfo 吗? |
-| ----------------- | ---------- | -------------------------------------- | ------------------ |
-| organizations | `string[]` | 用户所属的组织 (Organizations) ID 列表 | 否 |
-| organization_data | `object[]` | 用户所属的组织 (Organizations) 数据 | 是 |
+| Claim name | Type | Description | Included in ID token by default |
+| ----------------- | ---------- | ----------------------------------- | ------------------------------- |
+| organizations | `string[]` | 用户所属的组织 (Organizations) ID | ✅ |
+| organization_data | `object[]` | 用户所属的组织 (Organizations) 数据 | |
:::note
-这些组织 (Organizations) 声明 (Claims) 也可以通过 userinfo 端点获取,当使用 [不透明令牌 (Opaque token)](/concepts/opaque-token) 时也是如此。然而,不透明令牌 (Opaque tokens) 不能作为组织令牌 (Organization tokens) 用于访问组织专属资源。详情请参见 [不透明令牌 (Opaque token) 与组织 (Organizations)](/concepts/opaque-token#opaque-token-and-organizations)。
+这些组织 (Organizations) 声明 (Claims) 也可以在使用 [不透明令牌 (Opaque token)](/concepts/opaque-token) 时通过 userinfo 端点获取。但不透明令牌 (Opaque tokens) 不能作为组织令牌 (Organization tokens) 用于访问组织专属资源。详见 [不透明令牌 (Opaque token) 与组织 (Organizations)](/concepts/opaque-token#opaque-token-and-organizations)。
:::
**`urn:logto:scope:organization_roles`**
-| Claim name | Type | 描述 | 需要 userinfo 吗? |
-| ------------------ | ---------- | ----------------------------------------------------------------------------------- | ------------------ |
-| organization_roles | `string[]` | 用户所属组织 (Organizations) 的角色 (Roles),格式为 `:` | 否 |
-
----
-
-考虑到性能和数据大小,如果“需要 userinfo 吗?”为“是”,则该声明 (Claim) 不会出现在 ID 令牌 (ID token) 中,而会在 [userinfo 端点](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo) 响应中返回。
+| Claim name | Type | Description | Included in ID token by default |
+| ------------------ | ---------- | --------------------------------------------------------------------------------- | ------------------------------- |
+| organization_roles | `string[]` | 用户所属组织 (Organizations) 角色 (Roles),格式为 `:` | ✅ |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
index a976ea2ce4a..f797a0cc69a 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
@@ -1,6 +1,8 @@
import ScopeClaimList from './_scope-claim-list.md';
-Logto 使用 OIDC [权限和声明约定](https://openid.net/specs/openid-connect-core-1_0.html#Claims) 来定义从 ID 令牌和 OIDC 用户信息端点检索用户信息的权限和声明。“权限”和“声明”都是 OAuth 2.0 和 OpenID Connect (OIDC) 规范中的术语。
+Logto 使用 OIDC [权限 (Scopes) 和声明 (Claims) 约定](https://openid.net/specs/openid-connect-core-1_0.html#Claims) 来定义用于从 ID 令牌 (ID token) 和 OIDC userinfo 端点 获取用户信息的权限 (Scopes) 和声明 (Claims)。"scope" 和 "claim" 都是 OAuth 2.0 与 OpenID Connect (OIDC) 规范中的术语。
+
+对于标准 OIDC 声明 (Claims),其在 ID 令牌 (ID token) 中的包含严格由所请求的权限 (Scopes) 决定。扩展声明 (Claims)(如 `custom_data` 和 `organizations`)可以通过 自定义 ID 令牌 (ID token) 设置额外配置到 ID 令牌 (ID token) 中。
{/* TODO: Remove below */}
@@ -8,12 +10,12 @@ Logto 使用 OIDC [权限和声明约定](https://openid.net/specs/openid-connec
<>
-简而言之,当你请求一个权限时,你将获得用户信息中的相应声明。例如,如果你请求 `email` 权限,你将获得用户的 `email` 和 `email_verified` 数据。
+简而言之,当你请求某个权限 (Scope) 时,你将在用户信息中获得对应的声明 (Claims)。例如,如果你请求了 `email` 权限 (Scope),你将获得用户的 `email` 和 `email_verified` 数据。
- 默认情况下,Logto SDK 总是会请求三个权限:`openid`、`profile` 和
- `offline_access`,并且无法移除这些默认权限。但你可以在配置 Logto 时添加更多权限:
+ 默认情况下,Logto SDK 总是会请求三个权限 (Scopes):`openid`、`profile` 和 `offline_access`,
+ 并且无法移除这些默认权限 (Scopes)。但你可以在配置 Logto 时添加更多权限 (Scopes):
{props.configScopesCode}
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/README.mdx b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/README.mdx
index dd5d7226729..05d10fe82cc 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/README.mdx
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/README.mdx
@@ -1,6 +1,6 @@
# 開發者 (Developer)
-Logto 是一個基於 [OAuth 2](https://auth.wiki/oauth-2.0) 與 [OIDC](https://auth.wiki/openid-connect) 協議的 [身分與存取管理 (IAM, Identity and Access Management)](https://auth.wiki/iam) 服務。像 Logto 這樣的 IAM 服務通常作為其他網路服務的基礎;這些網路服務中的各種授權 (Authorization) 狀態會直接受到 Logto 的影響。
+Logto 是一套基於 [OAuth 2](https://auth.wiki/oauth-2.0) 與 [OIDC](https://auth.wiki/openid-connect) 協議的 [身分與存取管理 (IAM, Identity and Access Management)](https://auth.wiki/iam) 服務。像 Logto 這樣的 IAM 服務通常作為其他網路服務的基礎;這些網路服務中的各種授權 (Authorization) 狀態會直接受到 Logto 的影響。
為了方便使用者,Logto 提供了一系列常用的開發者功能。
@@ -19,9 +19,18 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
items={[
{
type: 'link',
- label: '自訂權杖宣告 (Custom token claims)',
+ label: '自訂存取權杖 (Custom access token)',
href: '/developers/custom-token-claims',
- description: '透過附加額外宣告 (Claims),擴展存取控制能力,有助於實現 ABAC 或拒絕權杖 (Token) 發放。',
+ description: '使用自訂腳本為存取權杖 (Access token) 附加額外宣告 (Claims),以實現 ABAC 或拒絕權杖 (Token) 發放。',
+ customProps: {
+ icon: ,
+ }
+ },
+ {
+ type: 'link',
+ label: '自訂 ID 權杖 (Custom ID token)',
+ href: '/developers/custom-id-token',
+ description: '依據 OIDC 規範,控制哪些擴充宣告 (Claims) 被包含於 ID 權杖 (ID token) 中。',
customProps: {
icon: ,
}
@@ -30,7 +39,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: '使用者模擬 (User impersonation)',
href: '/developers/user-impersonation',
- description: '允許授權 (Authorization) 使用者暫時以終端使用者身分操作,適用於疑難排解、客戶支援與管理任務。',
+ description: '允許授權 (Authorization) 使用者暫時以終端使用者身分操作,適用於疑難排解、客服支援與管理任務。',
customProps: {
icon: ,
}
@@ -48,7 +57,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: '簽章金鑰 (Signing keys)',
href: '/developers/signing-keys',
- description: '提供系統層級簽章金鑰,透過密碼保管庫 (Password vault),讓驗證 (Authentication) 服務更加安全。',
+ description: '提供系統層級簽章金鑰,透過密碼保管庫,讓驗證 (Authentication) 服務更加安全。',
customProps: {
icon: ,
}
@@ -57,7 +66,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: 'Webhook',
href: '/developers/webhooks',
- description: 'Webhook 透過 HTTP 請求支援使用者資訊與權限 (Permission) 更新的即時通知,提升 Logto 整合的便利性與彈性。',
+ description: 'Webhook 透過 HTTP 請求即時通知使用者資訊與權限 (Permission) 更新,提升 Logto 整合的便利性與彈性。',
customProps: {
icon: ,
}
@@ -75,7 +84,7 @@ import Settings from '@site/docs/developers/assets/icons/gear.svg';
type: 'link',
label: 'SDK 規範 (SDK convention)',
href: '/developers/',
- description: '介紹 SDK 中的資料結構、用途與方法,讓使用者能自訂 SDK 以符合各種業務場景。',
+ description: '介紹 SDK 中的資料結構、用途與方法,協助使用者自訂 SDK 以因應各種業務場景。',
customProps: {
icon: ,
}
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
index 5900a751469..c366fb5274f 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/audit-logs/README.mdx
@@ -1,5 +1,5 @@
---
-sidebar_position: 6
+sidebar_position: 7
---
# 稽核日誌 (Audit logs)
@@ -8,7 +8,7 @@ Logto 的稽核日誌讓你輕鬆監控使用者活動與事件,為各種使
## 檢視所有日誌 \{#view-all-logs}
-前往 主控台 > 稽核日誌 (Audit logs)。Logto 會將驗證 (Authentication) 事件記錄並整理成表格,追蹤事件名稱、使用者、應用程式與時間戳記。你可以根據事件名稱與應用程式名稱進行篩選,以縮小結果範圍。點擊特定事件可查看更多詳細資訊。
+前往 主控台 > 稽核日誌 (Audit logs)。Logto 會將驗證 (Authentication) 事件記錄並整理成表格,追蹤事件名稱、使用者、應用程式與時間戳記。你可以根據事件名稱與應用程式名稱進行篩選,以縮小結果範圍。點擊特定事件可查看更多細節。
:::warning
稽核日誌僅包含使用者驗證 (Authentication) 流程中發生的日誌,不會記錄 Management API 操作日誌。
@@ -18,7 +18,7 @@ Logto 的稽核日誌讓你輕鬆監控使用者活動與事件,為各種使
Logto 的日誌提供完整細節,確保操作便利與客戶安全。它們會捕捉並記錄以下資訊:
-- 事件類型(完整稽核日誌事件清單請參閱[這裡](/developers/audit-logs/event-types))
+- 事件類型(完整稽核日誌事件列表請參閱[此處](/developers/audit-logs/event-types))
- 涉及的應用程式
- IP 位址
- 涉及的使用者
@@ -32,13 +32,13 @@ Logto 的日誌提供完整細節,確保操作便利與客戶安全。它們
## 在使用者層級進行詳細分析 \{#perform-a-detailed-analysis-at-the-user-level}
-管理員可針對特定使用者關聯的日誌進行詳細分析,便於對特定事件進行全面調查。導覽流程簡單且易於操作。
+管理員可針對特定使用者的日誌進行詳細分析,便於對特定事件展開全面調查。導覽流程直觀且易於操作。
-存取特定使用者日誌,請依下列步驟:
+存取特定使用者日誌,請依下列步驟操作:
1. 前往 主控台 > 使用者管理。
2. 選擇目標使用者並進入詳細頁面。
-3. 點擊「使用者日誌 (User logs)」。結果表格將僅顯示該使用者執行與觸發的日誌事件。
+3. 點擊「使用者日誌 (User logs)」,表格將僅顯示該使用者執行與觸發的日誌事件。
@@ -47,7 +47,7 @@ Logto 的日誌提供完整細節,確保操作便利與客戶安全。它們
-### 我使用自架版 Logto,取得稽核日誌需數秒,有什麼方法能提升效能? \{#im-using-self-hosted-logto-and-it-takes-seconds-to-get-the-audit-logs-how-can-i-improve-the-performance}
+### 我使用自託管 Logto,取得稽核日誌需數秒,如何提升效能? \{#im-using-self-hosted-logto-and-it-takes-seconds-to-get-the-audit-logs-how-can-i-improve-the-performance}
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
new file mode 100644
index 00000000000..782f76d6035
--- /dev/null
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-id-token/README.mdx
@@ -0,0 +1,81 @@
+---
+sidebar_position: 3
+---
+
+# 自訂 ID 權杖 (ID token)
+
+## 介紹 \{#introduction}
+
+[ID 權杖 (ID token)](https://auth.wiki/id-token) 是由 [OpenID Connect (OIDC)](https://auth.wiki/openid-connect) 協議定義的一種特殊權杖。它作為授權伺服器(Logto)在使用者成功驗證後簽發的身分聲明,攜帶經驗證使用者身分的宣告 (Claims)。
+
+與用於存取受保護資源的 [存取權杖 (Access tokens)](/developers/custom-token-claims) 不同,ID 權杖專為向用戶端應用程式傳遞經驗證使用者身分而設計。它們是 [JSON Web Token (JWT)](https://auth.wiki/jwt),包含有關驗證事件與經驗證使用者的宣告 (Claims)。
+
+## ID 權杖宣告 (Claims) 的運作方式 \{#how-id-token-claims-work}
+
+在 Logto 中,ID 權杖宣告 (Claims) 分為兩類:
+
+1. **標準 OIDC 宣告 (Standard OIDC claims)**:由 OIDC 規範定義,完全由驗證時請求的權限範圍 (Scopes) 決定。
+2. **擴充宣告 (Extended claims)**:Logto 擴充的宣告,用於攜帶額外身分資訊,受 **雙重條件模型(Scope + 開關)** 控制。
+
+```mermaid
+flowchart TD
+ A[使用者驗證請求 (User authentication request)] --> B{請求的權限範圍 (Requested scopes)}
+ B --> C[標準 OIDC 權限範圍 (Standard OIDC scopes)]
+ B --> D[擴充權限範圍 (Extended scopes)]
+ C --> E[標準宣告納入 ID 權杖 (Standard claims included in ID token)]
+ D --> F{控制台開關已啟用? (Console toggle enabled?)}
+ F -->|是 (Yes)| G[擴充宣告納入 ID 權杖 (Extended claims included in ID token)]
+ F -->|否 (No)| H[宣告未納入 (Claims not included)]
+```
+
+## 標準 OIDC 宣告 (Standard OIDC claims) \{#standard-oidc-claims}
+
+標準宣告完全遵循 OIDC 規範。它們是否被納入 ID 權杖,僅取決於你的應用程式在驗證時請求了哪些權限範圍 (Scopes)。Logto 不提供任何選項來停用或選擇性排除個別標準宣告。
+
+下表顯示標準權限範圍與其對應宣告的對應關係:
+
+| 權限範圍 (Scope) | 宣告 (Claims) |
+| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `openid` | `sub` |
+| `profile` | `name`, `family_name`, `given_name`, `middle_name`, `nickname`, `preferred_username`, `profile`, `picture`, `website`, `gender`, `birthdate`, `zoneinfo`, `locale`, `updated_at` |
+| `email` | `email`, `email_verified` |
+| `phone` | `phone_number`, `phone_number_verified` |
+| `address` | `address` |
+
+例如,若你的應用程式請求了 `openid profile email` 權限範圍,ID 權杖將包含來自 `openid`、`profile` 與 `email` 權限範圍的所有宣告。
+
+## 擴充宣告 (Extended claims) \{#extended-claims}
+
+除了標準 OIDC 宣告外,Logto 還擴充了額外宣告,攜帶 Logto 生態系專屬的身分資訊。這些擴充宣告需同時滿足 **雙重條件模型** 才會被納入 ID 權杖:
+
+1. **權限範圍條件 (Scope condition)**:應用程式在驗證時必須請求對應的權限範圍。
+2. **控制台開關 (Console toggle)**:管理員需在 Logto Console 啟用該宣告納入 ID 權杖。
+
+兩個條件必須同時滿足。權限範圍屬於協議層級的存取聲明,開關則屬於產品層級的資訊揭露控制——兩者職責明確且不可互相取代。
+
+### 可用的擴充權限範圍與宣告 \{#available-extended-scopes-and-claims}
+
+| 權限範圍 (Scope) | 宣告 (Claims) | 說明 (Description) | 預設納入 (Included by default) |
+| ------------------------------------ | ------------------------------ | --------------------------------- | ------------------------------ |
+| `custom_data` | `custom_data` | 儲存在使用者物件上的自訂資料 | |
+| `identities` | `identities`, `sso_identities` | 使用者綁定的社交與 SSO 身分 | |
+| `roles` | `roles` | 使用者被指派的角色 (Roles) | ✅ |
+| `urn:logto:scope:organizations` | `organizations` | 使用者所屬組織 (Organizations) ID | ✅ |
+| `urn:logto:scope:organizations` | `organization_data` | 使用者的組織資料 | |
+| `urn:logto:scope:organization_roles` | `organization_roles` | 使用者的組織角色指派 | ✅ |
+
+### 在 Logto Console 設定 \{#configure-in-logto-console}
+
+啟用 ID 權杖中的擴充宣告:
+
+1. 前往 Console > Custom JWT。
+2. 開啟你希望納入 ID 權杖的宣告開關。
+3. 確保你的應用程式在驗證時請求對應的權限範圍。
+
+## 相關資源 \{#related-resources}
+
+自訂存取權杖 (Custom access token)
+
+
+ OpenID Connect Core - ID Token
+
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
index b59e1dcd4e7..626153dcec6 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-token-claims/README.mdx
@@ -2,35 +2,35 @@
sidebar_position: 2
---
-# 自訂權杖宣告 (Custom token claims)
+# 自訂存取權杖 (Access token)
-Logto 提供在存取權杖 (存取權杖 (Access token):JWT / 不透明權杖 (Opaque token)) 中新增自訂宣告 (Claims) 的彈性。透過此功能,你可以將額外的業務資訊安全地包含於權杖中,並在使用不透明權杖時透過 introspection 端點檢索這些資訊。
+Logto 提供在存取權杖(JWT / 不透明權杖 (Opaque token))中新增自訂宣告 (Claims) 的彈性。透過此功能,你可以在權杖中安全地傳遞並儲存額外的業務資訊,若為不透明權杖,亦可透過內省 (introspection) 取得這些資訊。
-## 介紹 \{#introduction}
+## 簡介 \{#introduction}
-[存取權杖 (Access tokens)](https://auth.wiki/access-token) 在驗證 (Authentication) 與授權 (Authorization) 流程中扮演關鍵角色,攜帶主體的身分資訊與權限,並於 [Logto 伺服器](/concepts/core-service)(作為驗證伺服器或身分提供者 (IdP))、你的 Web 服務伺服器(資源提供者)以及用戶端應用程式(客戶端)之間傳遞。
+[存取權杖 (Access tokens)](https://auth.wiki/access-token) 在驗證 (Authentication) 與授權 (Authorization) 流程中扮演關鍵角色,攜帶主體的身分資訊與權限,並在 [Logto 伺服器](/concepts/core-service)(作為授權伺服器或身分提供者 (IdP))、你的 Web 服務伺服器(資源提供者)與用戶端應用程式(客戶端)之間傳遞。
-[權杖宣告 (Token claims)](https://auth.wiki/claim) 是提供有關實體或權杖本身資訊的鍵值對。宣告可能包含使用者資訊、權杖過期時間、權限以及其他與驗證 (Authentication) 和授權 (Authorization) 流程相關的中繼資料。
+[權杖宣告 (Token claims)](https://auth.wiki/claim) 是提供關於實體或權杖本身資訊的鍵值對。宣告可能包含使用者資訊、權杖到期時間、權限及其他與驗證 (Authentication) 和授權 (Authorization) 流程相關的中繼資料。
Logto 中有兩種類型的存取權杖:
-- **JSON Web Token:** [JSON Web Token (JWT)](https://auth.wiki/jwt) 是一種流行的格式,以安全且可由客戶端讀取的方式編碼宣告。常見宣告如 `sub`、`iss`、`aud` 等,皆符合 OAuth 2.0 協議(詳見 [此連結](https://datatracker.ietf.org/doc/html/rfc7519#section-4))。JWT 允許消費者直接存取宣告,無需額外驗證步驟。在 Logto 中,當客戶端針對特定資源或組織發起授權請求時,預設會以 JWT 格式發放存取權杖。
-- **不透明權杖 (Opaque token):** [不透明權杖 (Opaque token)](http://localhost:3000/concepts/opaque-token) 並非自我描述,總是需要透過 [權杖內省 (token introspection)](https://auth.wiki/token-introspection) 端點進行額外驗證。儘管格式不透明,不透明權杖仍可安全傳遞並取得宣告。權杖宣告會安全地儲存在 Logto 伺服器,並由客戶端應用程式透過權杖內省端點存取。當授權請求未包含特定資源或組織時,存取權杖會以不透明格式發放。這些權杖主要用於存取 OIDC `userinfo` 端點及其他一般用途。
+- **JSON Web Token:** [JSON Web Token (JWT)](https://auth.wiki/jwt) 是一種流行的格式,能以安全且可由客戶端讀取的方式編碼宣告。常見宣告如 `sub`、`iss`、`aud` 等,皆符合 OAuth 2.0 協議(詳見 [此連結](https://datatracker.ietf.org/doc/html/rfc7519#section-4))。JWT 允許消費者直接存取宣告,無需額外驗證步驟。在 Logto 中,當客戶端針對特定資源或組織發起授權請求時,預設會以 JWT 格式簽發存取權杖。
+- **不透明權杖 (Opaque token):** [不透明權杖 (Opaque token)](http://localhost:3000/concepts/opaque-token) 並非自我描述,必須透過 [權杖內省 (token introspection)](https://auth.wiki/token-introspection) 端點進行額外驗證。儘管格式不透明,不透明權杖仍可安全傳遞並取得宣告。權杖宣告會安全儲存在 Logto 伺服器,並由客戶端應用程式透過權杖內省端點存取。當授權請求未包含特定資源或組織時,存取權杖會以不透明格式簽發。這類權杖主要用於存取 OIDC `userinfo` 端點及其他一般用途。
-在許多情境下,標準宣告無法滿足你的應用程式需求,無論你使用的是 JWT 或不透明權杖。為此,Logto 提供在存取權杖中新增自訂宣告的彈性。透過此功能,你可以將額外的業務資訊安全地包含於權杖中,並在使用不透明權杖時透過 introspection 端點檢索這些資訊。
+許多情境下,標準宣告無法滿足應用程式的特定需求,無論你使用 JWT 或不透明權杖。為此,Logto 提供在存取權杖中自訂宣告的彈性。透過此功能,你可以在權杖中安全地傳遞額外的業務資訊,若為不透明權杖,亦可透過內省取得這些資訊。
## 自訂權杖宣告如何運作?\{#how-do-custom-token-claims-work}
-Logto 允許你透過回呼函式 `getCustomJwtClaims` 將自訂宣告插入 `存取權杖 (access token)`。你可以實作自己的 `getCustomJwtClaims` 函式,回傳自訂宣告物件。回傳值會與原始權杖內容合併並簽署,產生最終的存取權杖。
+Logto 允許你透過回呼函式 `getCustomJwtClaims` 將自訂宣告插入 `存取權杖 (access token)`。你可以實作自己的 `getCustomJwtClaims` 函式,回傳自訂宣告物件。回傳值會與原始權杖內容合併並簽名,產生最終的存取權杖。
```mermaid
sequenceDiagram
- participant U as 使用者或使用者代理程式 (User or user agent)
+ participant U as 使用者或使用者代理 (User or user agent)
participant IdP as Logto(身分提供者 (identity provider))
participant SP as 服務提供者 (Service Provider)
autonumber
- U ->> IdP: 驗證請求 (Auth request)(附帶憑證)
+ U ->> IdP: 驗證請求 (Auth request)(附憑證)
activate IdP
IdP-->>IdP: 驗證憑證 &
產生原始存取權杖內容
rect var(--mermaid-rect-fill)
@@ -38,21 +38,21 @@ sequenceDiagram
IdP->>IdP: 執行自訂權杖宣告腳本(`getCustomJwtClaims`)&
取得額外權杖宣告
end
IdP-->>IdP: 合併原始存取權杖內容與額外權杖宣告
- IdP-->>IdP: 簽署並加密內容以取得存取權杖
+ IdP-->>IdP: 簽名並加密內容以取得存取權杖
deactivate IdP
- IdP-->>U: 發放 JWT 格式存取權杖
- par 透過 API 取得服務
- U->>SP: 服務請求(附帶 JWT 存取權杖)
+ IdP-->>U: 發送 JWT 格式存取權杖
+ par 透過 API 取得服務 (Get service via API)
+ U->>SP: 服務請求(附 JWT 存取權杖)
SP-->>U: 服務回應
end
```
:::warning
-Logto 內建權杖宣告不可被覆蓋或修改。自訂宣告會以額外宣告的形式加入權杖中。若自訂宣告與內建宣告衝突,該自訂宣告將被忽略。
+Logto 內建權杖宣告不可被覆蓋或修改。自訂宣告會以額外宣告加入權杖中。若自訂宣告與內建宣告衝突,該自訂宣告將被忽略。
:::
## 相關資源 \{#related-resources}
- 使用 Logto 為 JWT 存取權杖新增自訂宣告,提升你的授權 (Authorization)
+ 使用 Logto 為 JWT 存取權杖新增自訂宣告,強化你的授權 (Authorization)
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
index 5bff1924d15..3b1c657fac4 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-token-claims/common-use-cases.mdx
@@ -7,34 +7,34 @@ sidebar_position: 2
# 常見使用情境 (Common use cases)
-本節將舉例說明 [自訂權杖宣告 (custom token claims)](/developers/custom-token-claims) 在某些場景下的應用,提供你參考。當你在存取管理上遇到困難時,可以評估自訂權杖宣告是否能帶來便利。
+本節將舉例說明 [自訂存取權杖 (Access token) 宣告 (Claims)](/developers/custom-token-claims) 在某些情境下的應用,提供你參考。當你遇到存取管理上的困難時,可以評估自訂存取權杖 (Access token) 宣告 (Claims) 是否能為你帶來便利。
## 實現屬性型存取控制 (ABAC, Attribute-based access control) \{#make-attribute-based-access-control-abac-possible}
-[屬性型存取控制 (ABAC, Attribute-based access control)](https://auth.wiki/abac) 是一種以屬性(如使用者角色、資源屬性、環境條件等)做為存取決策依據的存取控制模型。這是一種靈活且動態的受保護資源存取管理方式。
+[屬性型存取控制 (ABAC, Attribute-based access control)](https://auth.wiki/abac) 是一種以屬性(如使用者角色、資源屬性與環境條件)做為存取控制決策依據的模型。這是一種靈活且動態的受保護資源存取管理方式。
-假設你正在開發一款應用程式,並將其發佈分為公測與正式上線兩個階段。即使應用程式正式上線後,你仍希望參與過公測的老用戶能繼續使用付費功能。
+假設你正在開發一款應用程式,並將其發佈分為公開測試與正式上線兩個階段。即使應用程式正式上線後,你仍希望參與過公開測試的老用戶能繼續使用付費功能。
-在應用程式正式上線後,你可利用 Logto 的 [角色型存取控制 (RBAC, Role-based access control)](/authorization/role-based-access-control) 功能,實現付費功能的存取控制。為了方便判斷某使用者是否在公測階段就已經開始使用,你可以透過 `getCustomJwtClaims()` 方法,在權杖 (token) 載荷中加入 `createdAt` 宣告 (claim)。
+在應用程式正式上線後,你可利用 Logto 的 [角色型存取控制 (RBAC, Role-based Access Control)](/authorization/role-based-access-control) 功能,實作付費功能的存取控制。為了方便判斷某使用者是否在公開測試階段就已經開始使用,你可以透過 `getCustomJwtClaims()` 方法,在權杖 (Token) 載荷中新增一個 `createdAt` 宣告 (Claim)。
-接著,在受保護 API 進行存取控制時,你只需允許符合下列任一條件的存取權杖 (access token) 通過:
+接著,在受保護 API 進行存取控制時,你只需允許符合下列任一條件的存取權杖 (Access token):
-1. 具備 RBAC 權限範圍 (scope),可存取付費資源。
-2. 權杖中的 `createdAt` 早於公測結束時間。
+1. 具備 RBAC 權限範圍 (Scope),可存取付費資源。
+2. `createdAt` 早於公開測試階段結束時間。
-若沒有自訂權杖宣告功能,當你在驗證 [授權 (Authorization)](/authorization) 權限時,就必須呼叫 Logto Management API,查詢當前 access token 對應的使用者是否擁有某 API 資源所需角色的權限。
+若沒有自訂權杖 (Token) 宣告 (Claims) 功能,當你驗證 [授權 (Authorization)](/authorization) 權限時,必須呼叫 Logto Management API,檢查目前存取權杖 (Access token) 所屬使用者是否擁有某 API 資源所需角色的權限。
-類似情境下,假設你的應用程式希望在登入頁面顯示生日祝福,當使用者生日將近時。你可以利用自訂權杖宣告,在 [權杖載荷 (token payload)](/user-management/personal-access-token#example-token-exchange) 中加入生日欄位,據此判斷是否顯示特定訊息。
+類似情境下,假設你的應用程式希望在登入頁面顯示即將生日的使用者祝福語,你可以利用自訂權杖 (Token) 宣告 (Claims) 在 [權杖 (Token) 載荷](/user-management/personal-access-token#example-token-exchange) 中新增生日欄位,據此判斷是否顯示特定訊息。
-## 手動阻擋權杖發放 \{#manually-block-token-issuance}
+## 手動阻擋權杖 (Token) 發放 \{#manually-block-token-issuance}
假設 Joe 經營一款線上遊戲,並以 Logto 作為 [身分與存取管理 (IAM, Identity and Access Management)](https://auth.wiki/iam) 系統。
-這款遊戲需儲值購買遊戲時間。Joe 會在遊戲服務中記錄每位玩家的餘額,並隨著遊戲時間消耗持續扣款。Joe 希望當玩家餘額歸零時,強制玩家登出,以鼓勵儲值。
+假設這款遊戲需儲值購買遊戲時間,Joe 會在自己的遊戲服務中記錄每位使用者的餘額,並隨著遊戲時間累積持續扣款。Joe 希望當帳戶餘額歸零時,強制玩家登出以促使儲值。
-這時,Joe 也可以利用 Logto 提供的自訂權杖宣告功能來實現:
+這時,Joe 也可以利用 Logto 提供的自訂權杖 (Token) 宣告 (Claims) 功能來實現:
-1. 在腳本中,可透過外部 API 呼叫 [擷取外部資料](/developers/custom-token-claims/create-script/#step-3-fetch-external-data),查詢玩家在 Joe 遊戲伺服器上的當前餘額。
-2. 若餘額小於等於 0,則可呼叫 [`api.denyAccess()`](/developers/custom-token-claims/create-script/#api) 方法,阻擋權杖發放。
+1. 在腳本中,可透過外部 API 呼叫 [擷取外部資料](/developers/custom-token-claims/create-script/#step-3-fetch-external-data),從 Joe 的遊戲伺服器取得當前玩家餘額。
+2. 若餘額小於等於 0,則可呼叫 [`api.denyAccess()`](/developers/custom-token-claims/create-script/#api) 方法,阻擋權杖 (Token) 發放。
-此時,由於無法取得新的有效 access token,玩家將被強制登出遊戲。
+此時,由於無法取得新的有效存取權杖 (Access token),玩家將被強制登出遊戲。
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
index 06dcadf4cac..a861ec3f8a4 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/custom-token-claims/create-script.mdx
@@ -1,41 +1,41 @@
---
id: create-script
-title: 建立自訂權杖宣告 (claims) 腳本
-sidebar_label: 建立自訂權杖宣告 (claims) 腳本
+title: 建立自訂存取權杖 (Access token) 腳本
+sidebar_label: 建立自訂存取權杖 (Access token) 腳本
sidebar_position: 3
---
-# 建立自訂權杖宣告 (claims) 腳本
+# 建立自訂存取權杖 (Access token) 腳本
-若要[新增自訂宣告 (claims)](/developers/custom-token-claims)到[存取權杖 (Access token)](https://auth.wiki/access-token),你需要提供一個回傳包含這些宣告 (claims) 的物件的腳本。該腳本應以 `JavaScript` 函式撰寫,並回傳一個包含自訂宣告 (claims) 的物件。
+若要[新增自訂宣告 (Claims)](/developers/custom-token-claims)到[存取權杖 (Access token)](https://auth.wiki/access-token),你需要提供一個回傳包含這些宣告的物件的腳本。該腳本應以 `JavaScript` 函式撰寫,並回傳一個包含自訂宣告的物件。
1. 前往 主控台 > 自訂 JWT。
-2. 你可以針對兩種不同類型的存取權杖 (Access token) 自訂其權杖宣告 (claims):
+2. 你可以針對兩種不同型態的存取權杖 (Access token) 自訂其權杖宣告 (Claims):
- **使用者存取權杖 (User access token)**:發給終端使用者的存取權杖。例如 Web 應用程式或行動應用程式。
- **機器對機器存取權杖 (Machine-to-Machine access token)**:發給服務或應用程式的存取權杖。例如[機器對機器應用程式](/quick-starts/m2m)。
- 不同類型的存取權杖 (Access token) 可能有不同的權杖內容 (payload) 上下文。你可以分別自訂每種存取權杖的宣告 (claims)。
+ 不同型態的存取權杖可能有不同的權杖內容 (Payload) 上下文。你可以分別自訂每種存取權杖的宣告。
- 選擇你想自訂權杖宣告 (claims) 的存取權杖類型,然後點擊 **新增自訂宣告 (Add custom claims)** 按鈕來建立新腳本。
+ 選擇你想自訂權杖宣告的存取權杖型態,點擊 **新增自訂宣告 (Add custom claims)** 按鈕以建立新腳本。
:::note
-自訂權杖宣告 (claims) 功能僅提供給:
+自訂權杖宣告功能僅開放給:
- [Logto OSS](/logto-oss) 使用者
- [Logto Cloud 開發環境租戶](/logto-cloud/tenant-settings#development)
-- Logto Cloud 付費租戶的生產環境(包含 [Pro 租戶與 Enterprise 租戶](https://logto.io/pricing))
+- Logto Cloud 付費租戶的正式環境(包含 [Pro 租戶與 Enterprise 租戶](https://logto.io/pricing))
:::
## 實作 `getCustomJwtClaims()` 函式 \{#implement-getcustomjwtclaims-function}
-在 **自訂 JWT** 詳細頁面,你可以找到腳本編輯器來撰寫你的自訂權杖宣告 (claims) 腳本。該腳本應為一個回傳自訂宣告 (claims) 物件的 `JavaScript` 函式。
+在 **自訂 JWT** 詳細頁面,你可以找到腳本編輯器來撰寫自訂權杖宣告腳本。該腳本應為一個回傳自訂宣告物件的 `JavaScript` 函式。
-
+
## 步驟 1:編輯腳本 \{#step-1-edit-the-script}
-使用左側的程式碼編輯器來修改腳本。預設會提供一個回傳空物件的 `getCustomJwtClaims`,你可以從這裡開始,修改函式以回傳你自訂的宣告 (claims) 物件。
+使用左側的程式碼編輯器修改腳本。預設已提供一個回傳空物件的 `getCustomJwtClaims`,你可以從這裡開始,修改函式以回傳你自訂的宣告物件。
```jsx
const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
@@ -46,37 +46,37 @@ const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
此編輯器使用 JavaScript 語言伺服器,提供基本語法高亮、程式碼補全與錯誤檢查。輸入參數皆有良好型別與 jsDoc 文件說明。你可以利用編輯器的 IntelliSense 正確存取輸入物件的屬性。詳細參數定義可於頁面右側查看。
:::note
-此函式將作為模組匯出。請務必保持函式名稱為 `getCustomJwtClaims`,以確保模組正確匯出該函式。
+此函式將作為模組匯出。請確保函式名稱維持為 `getCustomJwtClaims`,以便模組正確匯出該函式。
:::
## 步驟 2:輸入參數 \{#step-2-input-parameters}
-`getCustomJwtClaims` 函式接受一個物件作為輸入參數。該輸入物件包含以下屬性:
+`getCustomJwtClaims` 函式以一個物件作為輸入參數。該物件包含以下屬性:
### token \{#token}
-權杖內容 (payload) 物件。此物件包含原始權杖宣告 (claims) 與你可能需要在腳本中存取的中繼資料。
+權杖內容 (Payload) 物件。此物件包含原始權杖宣告與你可能需要在腳本中存取的中繼資料。
-你可以在頁面右側找到權杖內容 (payload) 物件與使用者資料物件的詳細型別定義。編輯器的 IntelliSense 也會協助你正確存取這些屬性。
+你可以在頁面右側找到權杖內容物件與使用者資料物件的詳細型別定義。編輯器的 IntelliSense 也會協助你正確存取這些屬性。
- 使用者存取權杖資料物件
- | 屬性 (Property) | 說明 (Description) | 型別 (Type) |
+ | Property | 說明 | Type |
| -------------------- | ------------------------------------------------ | ------------- |
| `jti` | JWT 唯一識別碼 | `string` |
- | `aud` | 權杖的受眾 (Audience) | `string` |
- | `scope` | 權杖的權限範圍 (Scopes) | `string` |
+ | `aud` | 權杖受眾 (Audience) | `string` |
+ | `scope` | 權杖權限範圍 (Scopes) | `string` |
| `clientId` | 權杖的用戶端 ID | `string` |
| `accountId` | 權杖的使用者 ID | `string` |
- | `expiresWithSession` | 權杖是否隨會話到期 | `boolean` |
- | `grantId` | 權杖的當前驗證 (Authentication) 授權 ID | `string` |
- | `gty` | 權杖的授權類型 | `string` |
+ | `expiresWithSession` | 權杖是否隨工作階段到期 | `boolean` |
+ | `grantId` | 權杖的當前驗證 (Authentication) 授權 (Grant) ID | `string` |
+ | `gty` | 權杖的授權類型 (Grant type) | `string` |
| `kind` | 權杖類型 | `AccessToken` |
- 機器對機器存取權杖資料物件
- | 屬性 (Property) | 說明 (Description) | 型別 (Type) |
+ | Property | 說明 | Type |
| ---------- | -------------------------- | ------------------- |
| `jti` | JWT 唯一識別碼 | `string` |
- | `aud` | 權杖的受眾 (Audience) | `string` |
- | `scope` | 權杖的權限範圍 (Scopes) | `string` |
+ | `aud` | 權杖受眾 (Audience) | `string` |
+ | `scope` | 權杖權限範圍 (Scopes) | `string` |
| `clientId` | 權杖的用戶端 ID | `string` |
| `kind` | 權杖類型 | `ClientCredentials` |
@@ -85,13 +85,13 @@ const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
context 物件包含與當前授權 (Authorization) 流程相關的使用者資料與授權資料。
- **使用者資料物件**
- 對於使用者存取權杖,Logto 會提供額外的使用者資料 context 供你存取。該物件包含所有使用者個人資料與組織 (Organization) 成員資料,方便你設置自訂宣告 (claims)。詳情請參閱 [使用者](/user-management/user-data) 與 [組織](/organizations/organization-management#organization-data-structure)。
+ 對於使用者存取權杖,Logto 會提供額外的使用者資料 context 供你存取。該物件包含所有使用者個人資料與組織成員資料,方便你設置自訂宣告。詳情請參閱 [使用者](/user-management/user-data)與[組織](/organizations/organization-management#organization-data-structure)。
- **授權資料物件**
- 對於透過模擬 (Impersonation) 權杖交換取得的使用者存取權杖,Logto 會提供額外的授權資料 context。該物件包含來自主體 (Subject) 權杖的自訂 context。詳情請參閱 [使用者模擬 (User impersonation)](/developers/user-impersonation)。
+ 對於透過模擬 (Impersonation) 權杖交換取得的使用者存取權杖,Logto 會提供額外的授權資料 context。該物件包含來自主體權杖的自訂 context。詳情請參閱[使用者模擬 (User impersonation)](/developers/user-impersonation)。
- **使用者互動資料物件**
- 對於特定使用者存取權杖,有時你需要存取當前授權 (Authorization) 會話的使用者互動細節。例如,你可能需要取得使用者登入時所用的企業級單一登入 (Enterprise SSO) 身分。此物件包含最近一次使用者提交的互動資料,包括:
+ 對於特定使用者存取權杖,你可能需要存取當前授權會話的使用者互動細節。例如,你可能需要取得使用者登入時所用的企業級單一登入 (Enterprise SSO) 身分。此物件包含最近一次使用者提交的互動資料,包括:
- | 屬性 (Property) | 說明 (Description) | 型別 (Type) |
+ | Property | 說明 | Type |
| --------------------- | -------------------------------------------------------- | ---------------------- |
| `interactionEvent` | 當前使用者互動事件 | `SignIn` 或 `Register` |
| `userId` | 當前使用者互動的使用者 ID | `string` |
@@ -224,30 +224,30 @@ context 物件包含與當前授權 (Authorization) 流程相關的使用者資
:::note
使用者互動資料物件中可能包含多筆驗證紀錄,特別是當使用者經歷多次登入或註冊流程時。
- 例如,使用者先以 `Social` 驗證紀錄登入,再透過 `EmailVerificationCode` 綁定新電子郵件,最後以 `Totp` 驗證紀錄驗證 MFA 狀態。在這種情況下,你可能需要在腳本中分別處理所有驗證紀錄。
+ 例如,使用者先以 `Social` 驗證紀錄登入,再透過 `EmailVerificationCode` 綁定新電子郵件,最後以 `Totp` 驗證紀錄驗證 MFA 狀態。此時,你可能需要在腳本中依序處理所有驗證紀錄。
- 每種驗證紀錄類型在使用者互動資料物件中僅會出現一次。
+ 每種驗證紀錄型別在使用者互動資料物件中僅會出現一次。
:::
### environmentVariables \{#environmentvariables}
-使用右側的 **設定環境變數 (Set environment variables)** 區塊來為你的腳本設置環境變數。你可以利用這些變數儲存敏感資訊或設定資料,避免在腳本中硬編碼。例如 API 金鑰、密鑰或 URL。
+使用右側的 **設定環境變數 (Set environment variables)** 區塊為你的腳本設置環境變數。你可以用這些變數儲存敏感資訊或設定資料,避免在腳本中硬編碼,例如 API 金鑰、密鑰或 URL。
-你在此設置的所有環境變數都可於腳本中存取。請透過輸入參數中的 `environmentVariables` 物件來取得這些變數。
+所有你在此設置的環境變數都可於腳本中取得。請透過輸入參數中的 `environmentVariables` 物件存取這些變數。
### api \{#api}
-`api` 物件提供一組實用函式,讓你在腳本中對權杖發放流程進行額外存取控制。`api` 物件包含以下函式:
+`api` 物件提供一組工具函式,讓你在腳本中對權杖發放流程進行額外存取控制。`api` 物件包含以下函式:
```jsx
api.denyAccess(message?: string): void
```
-`api.denyAccess()` 函式允許你以自訂訊息拒絕權杖發放流程。你可以利用此函式對權杖發放流程施加額外存取驗證。
+`api.denyAccess()` 函式可讓你以自訂訊息拒絕權杖發放流程。你可以利用此函式對權杖發放流程進行額外存取驗證。
## 步驟 3:擷取外部資料 \{#step-3-fetch-external-data}
-你可以在腳本中使用 Node 內建的 `fetch` 函式來擷取外部資料。`fetch` 是一個基於 Promise 的函式,允許你向外部 API 發送 HTTP 請求。
+你可以在腳本中使用 Node 內建的 `fetch` 函式擷取外部資料。`fetch` 是一個基於 Promise 的函式,允許你向外部 API 發送 HTTP 請求。
```jsx
const getCustomJwtClaims = async ({ environmentVariables }) => {
@@ -276,14 +276,14 @@ const getCustomJwtClaims = async ({ environmentVariables }) => {
## 步驟 4:測試腳本 \{#step-4-test-the-script}
-請務必在儲存前測試你的腳本。點擊頁面右側的 **測試 context (Test context)** 分頁,修改測試用的權杖內容 (payload) 與使用者資料 context。
+請務必在儲存前測試你的腳本。點擊頁面右側的 **測試 context (Test context)** 分頁,修改測試用的權杖內容與使用者資料 context。
-點擊編輯器右上角的 **執行測試 (Run test)**,即可以測試資料執行腳本。腳本的輸出結果將顯示於 **測試結果 (Test Result)** 抽屜中。
+點擊編輯器右上角的 **執行測試 (Run test)**,即可用測試資料執行腳本。腳本輸出將顯示於 **測試結果 (Test Result)** 抽屜中。
:::note
-測試結果即為 `getCustomJwtClaims` 函式以你設定的測試資料執行後的輸出(即[時序圖](/developers/custom-token-claims/#how-do-custom-token-claims-work)第 3 步取得的「額外權杖宣告 (extra token claims)」)。實際權杖內容 (payload) 與使用者資料 context 會因發放流程而異。
+測試結果即為 `getCustomJwtClaims` 函式以你設定的測試資料執行後的輸出(即[時序圖](/developers/custom-token-claims/#how-do-custom-token-claims-work)步驟 3 完成後取得的「額外權杖宣告」)。實際權杖內容與使用者資料 context 會因發放流程而異。
:::
-點擊 **建立 (Create)** 按鈕以儲存腳本。自訂權杖宣告 (claims) 腳本將被儲存並應用於存取權杖發放流程。
+點擊 **建立 (Create)** 按鈕以儲存腳本。自訂權杖宣告腳本將被儲存並應用於存取權杖發放流程。
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
index 7c351940c02..69385b84d20 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/sdk-conventions/README.mdx
@@ -1,32 +1,41 @@
---
id: sdk-conventions
-title: 平台 SDK 慣例
-sidebar_label: 平台 SDK 慣例
-sidebar_position: 7
+title: 平台 SDK 慣例 (Platform SDK conventions)
+sidebar_label: 平台 SDK 慣例 (Platform SDK conventions)
+sidebar_position: 8
---
-# 平台 SDK 慣例
+# 平台 SDK 慣例 (Platform SDK conventions)
-Logto 提供了一個非常強大且靈活的網頁驗證服務。
+Logto 提供功能強大且彈性的網頁驗證 (Authentication) 服務。
-在實際使用 Logto 的服務時,為了方便,開發者通常需要將 Logto SDK 整合到自己的客戶端應用程式中,以管理使用者登入狀態、權限等。
+在實際使用 Logto 服務時,為了方便,開發者通常需要將 Logto SDK 整合進自己的用戶端應用程式,以管理使用者登入狀態、權限等。
你可以在 [這裡](/quick-starts) 找到 Logto 支援的所有程式語言 / 框架的 SDK。
-如果不幸地沒有找到你想要的 SDK,這裡有一個慣例可以遵循,以便為你想要的程式語言實現 SDK,使使用 Logto 服務更為簡便。
+如果你不幸沒找到想要的 SDK,這裡有一套慣例可供參考,協助你為目標程式語言實作 SDK,讓你更輕鬆地使用 Logto 服務。
-此慣例包含三個主要部分:
+本慣例包含三個主要部分:
-設計策略
-核心 SDK 慣例
-平台 SDK 慣例
+設計策略 (Design strategy)
+
+ 核心 SDK 慣例 (Core SDK convention)
+
+
+ 平台 SDK 慣例 (Platform SDK convention)
+
## 相關資源 \{#related-resources}
-實現一個簡單的客戶端 OIDC SDK
+
+ 實作簡易用戶端 OIDC SDK (Implement a simple client-side OIDC SDK)
+
- 在幾分鐘內為 Logto 打造一個基於 Node.js 的框架 SDK
+ 幾分鐘打造 Logto 專用 Node.js 框架 SDK (Crafting a Node.js based framework SDK for Logto in
+ minutes)
-在幾分鐘內為 Logto 打造一個網頁 SDK
+
+ 幾分鐘打造 Logto 專用網頁 SDK (Crafting a web SDK for Logto in minutes)
+
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
index 12e095c5030..b62bc16eca9 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/signing-keys.mdx
@@ -2,7 +2,7 @@
id: signing-keys
title: 簽章金鑰 (Signing keys)
sidebar_label: 簽章金鑰 (Signing keys)
-sidebar_position: 4
+sidebar_position: 5
---
# 簽章金鑰 (Signing keys)
@@ -12,37 +12,37 @@ Logto [OIDC 簽章金鑰](https://auth.wiki/signing-key)(又稱「OIDC 私鑰
預設情況下,Logto 使用橢圓曲線(EC)演算法產生數位簽章。然而,考量到使用者經常需要驗證 JWT 簽章,且許多舊有工具不支援 EC 演算法(僅支援 RSA),我們實作了私鑰輪替功能,並允許使用者選擇簽章演算法(包含 RSA 與 EC)。這確保了與使用舊版簽章驗證工具的服務相容。
:::note
-理論上,簽章金鑰不應外洩且沒有過期時間,因此無需輪替。不過,定期在一段時間後輪替簽章金鑰可提升安全性。
+理論上,簽章金鑰不應外洩且沒有過期時間,意即無需輪替。但定期在一段時間後輪替簽章金鑰可提升安全性。
:::
-## 運作原理?\{#how-it-works}
+## 運作方式說明 \{#how-it-works}
- **OIDC 私鑰 (OIDC private key)**
- 當初始化 Logto 實例時,會自動產生一對公鑰與私鑰,並註冊於底層 OIDC 提供者。當 Logto 發行新的 JWT(存取權杖或 ID 權杖)時,權杖會以私鑰簽署。同時,任何收到 JWT 的用戶端應用程式都可使用對應的公鑰驗證權杖簽章,以確保權杖未被第三方竄改。私鑰會在 Logto 伺服器上受到保護,而公鑰則如其名對所有人公開,可透過 OIDC 端點的 `/oidc/jwks` 介面存取。產生私鑰時可指定簽章金鑰演算法,Logto 預設使用 EC(橢圓曲線)演算法。管理員可透過輪替私鑰將預設演算法改為 RSA(Rivest-Shamir-Adleman)。
+ 初始化 Logto 實例時,會自動產生一對公鑰與私鑰,並註冊於底層 OIDC 提供者。當 Logto 發行新的 JWT(存取權杖或 ID 權杖)時,會以私鑰簽署該權杖。任何收到 JWT 的用戶端應用程式皆可使用對應公鑰驗證權杖簽章,以確保權杖未遭第三方竄改。私鑰會受到 Logto 伺服器保護,而公鑰則如其名,對所有人公開,可透過 OIDC 端點的 `/oidc/jwks` 介面存取。產生私鑰時可指定簽章金鑰演算法,Logto 預設使用 EC(橢圓曲線)演算法。管理員可透過輪替私鑰將預設演算法改為 RSA(Rivest-Shamir-Adleman)。
- **OIDC Cookie 金鑰 (OIDC cookie key)**
- 當使用者啟動登入或註冊流程時,伺服器會建立一個「OIDC 階段 (session)」以及一組瀏覽器 Cookie。藉由這些 Cookie,瀏覽器可代表使用者向 Logto 使用體驗 (Experience) API 發起一系列互動,例如登入、註冊與重設密碼。然而,與 JWT 不同,Cookie 僅由 Logto OIDC 服務本身簽署與驗證,無需非對稱加密。因此,Cookie 簽章金鑰沒有對應的公鑰,也不採用非對稱加密演算法。
+ 當使用者啟動登入或註冊流程時,伺服器會建立一個「OIDC 階段 (Session)」以及一組瀏覽器 Cookie。藉由這些 Cookie,瀏覽器可代表使用者向 Logto 使用體驗 (Experience) API 發起一系列互動,例如登入、註冊、重設密碼。然而,與 JWT 不同,Cookie 僅由 Logto OIDC 服務本身簽署與驗證,無需非對稱加密。因此,Cookie 簽章金鑰沒有對應公鑰,也不採用非對稱加密演算法。
## 透過 Console UI 輪替簽章金鑰 \{#rotate-signing-keys-from-console-ui}
Logto 提供「簽章金鑰輪替 (Signing Keys Rotation)」功能,讓你能在租戶中建立新的 OIDC 私鑰與 Cookie 金鑰。
1. 前往 Console > 簽章金鑰 (Signing keys),即可管理 OIDC 私鑰與 OIDC Cookie 金鑰。
-2. 若要輪替簽章金鑰,請點擊「輪替私鑰 (Rotate private keys)」或「輪替 Cookie 金鑰 (Rotate cookie keys)」按鈕。輪替私鑰時,你可以選擇更換簽章演算法。
+2. 若要輪替簽章金鑰,請點擊「輪替私鑰 (Rotate private keys)」或「輪替 Cookie 金鑰 (Rotate cookie keys)」按鈕。輪替私鑰時,你可選擇更換簽章演算法。
3. 你會看到一個表格,列出所有正在使用的簽章金鑰。注意:你可以刪除前一組金鑰,但無法刪除目前使用中的金鑰。
- | 狀態 | 說明 |
- | ----------------- | ------------------------------------------------------------------ |
- | 目前 (Current) | 表示此金鑰目前正於你的應用程式與 API 中啟用。 |
- | 前一組 (Previous) | 指的是先前使用過但已被輪替的金鑰。以此金鑰簽署的現有權杖仍然有效。 |
+ | 狀態 | 說明 |
+ | ----------------- | -------------------------------------------------------------- |
+ | 目前 (Current) | 表示此金鑰目前正於你的應用程式與 API 中使用。 |
+ | 前一組 (Previous) | 指先前使用過但已被輪替的金鑰。以此金鑰簽署的現有權杖仍然有效。 |
請記得,輪替包含以下三個動作:
1. **建立新簽章金鑰**:這將要求所有**應用程式**與**API**採用新簽章金鑰。
-2. **輪替目前金鑰**:輪替後,現有金鑰會標記為「前一組 (previous)」,不再用於新建立的應用程式與 API。但以此金鑰簽署的權杖仍然有效。
-3. **移除前一組金鑰**:標記為「前一組 (previous)」的金鑰將被撤銷並從表格中移除。
+2. **輪替目前金鑰**:輪替後,現有金鑰會標記為「前一組 (Previous)」,不再用於新建立的應用程式與 API。但以該金鑰簽署的權杖仍然有效。
+3. **移除前一組金鑰**:標記為「前一組 (Previous)」的金鑰將被撤銷並自表格移除。
:::warning
-切勿連續(兩次或以上)輪替簽章金鑰,否則可能導致所有已發行的權杖失效。
+切勿連續(兩次或以上)輪替簽章金鑰,否則可能導致所有已發行權杖失效。
- 對於 OSS 使用者,輪替簽章金鑰後需重新啟動 Logto 實例,新金鑰才會生效。
- 對於雲端使用者,輪替後新簽章金鑰立即生效,但請務必避免連續多次輪替。
@@ -51,5 +51,5 @@ Logto 提供「簽章金鑰輪替 (Signing Keys Rotation)」功能,讓你能
## 相關資源 \{#related-resources}
- JWT 中 EC 與 RSA 簽章演算法介紹 (Introduction to EC and RSA signing algorithms in JWT)
+ JWT 中 EC 與 RSA 簽章演算法介紹
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
index e69584f7c0a..7b74c2dee56 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/user-impersonation.mdx
@@ -2,16 +2,16 @@
id: user-impersonation
title: 使用者模擬 (User impersonation)
sidebar_label: 使用者模擬 (User impersonation)
-sidebar_position: 3
+sidebar_position: 4
---
import TokenExchangePrerequisites from './fragments/_token-exchange-prerequisites.mdx';
# 使用者模擬 (User impersonation)
-想像一下,TechCorp 的支援工程師 Sarah 收到來自客戶 Alex 的緊急工單,Alex 無法存取關鍵資源。為了有效診斷並解決問題,Sarah 需要看到與 Alex 在系統中完全相同的畫面。這時,Logto 的使用者模擬功能就派上用場了。
+想像一下,TechCorp 的支援工程師 Sarah 收到來自客戶 Alex 的緊急工單,Alex 無法存取關鍵資源。為了有效診斷並解決問題,Sarah 需要看到系統中 Alex 所見的內容。這時,Logto 的使用者模擬功能就派上用場了。
-使用者模擬允許像 Sarah 這樣的授權使用者,能在系統內暫時以其他使用者(如 Alex)的身分行動。這項強大功能對於疑難排解、客戶支援與執行管理任務極為有用。
+使用者模擬允許像 Sarah 這樣的授權使用者,能在系統內暫時以其他使用者(如 Alex)的身分行動。這項強大功能對於疑難排解、客戶支援及執行管理任務極為有用。
## 運作方式?\{#how-it-works}
@@ -42,13 +42,13 @@ sequenceDiagram
1. Sarah 透過 TechCorp 的後端伺服器請求模擬
2. TechCorp 的伺服器向 Logto 的 Management API 取得 subject token
-3. Sarah 的應用程式將此 subject token 兌換為存取權杖 (access token)
+3. Sarah 的應用程式以此 subject token 兌換存取權杖 (access token)
以下說明 Sarah 如何利用此功能協助 Alex。
### 步驟 1:請求模擬 \{#step-1-requesting-impersonation}
-首先,Sarah 的支援應用程式需向 TechCorp 的後端伺服器提出模擬請求。
+首先,Sarah 的支援應用程式需向 TechCorp 的後端伺服器發送模擬請求。
**請求(Sarah 的應用程式 → TechCorp 伺服器)**
@@ -113,11 +113,11 @@ TechCorp 的伺服器接著將此 subject token 回傳給 Sarah 的應用程式
-現在,Sarah 的應用程式會將此 subject token 兌換為代表 Alex 的存取權杖 (access token),並指定權杖將用於的資源。
+現在,Sarah 的應用程式會以此 subject token 兌換代表 Alex 的存取權杖 (access token),並指定該權杖將用於的資源。
**請求(Sarah 的應用程式 → Logto 權杖端點)**
-對於傳統網頁應用程式或帶有 app secret 的機器對機器應用程式,請在 `Authorization` 標頭中包含憑證:
+對於傳統 Web 應用程式或帶有 app secret 的機器對機器應用程式,請在 `Authorization` 標頭中包含憑證:
```bash
POST /oidc/token HTTP/1.1
@@ -161,7 +161,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
}
```
-回傳的 `access_token` 會綁定於指定資源,確保僅能用於 TechCorp 的 customer data API。
+回傳的 `access_token` 會綁定至指定資源,確保僅能用於 TechCorp 的客戶資料 API。
## 範例用法 \{#example-usage}
@@ -187,7 +187,7 @@ async function impersonateUser(
ticketId: string,
resource: string,
// highlight-next-line
- clientSecret?: string // 傳統網頁或機器對機器應用程式需填寫
+ clientSecret?: string // 傳統 Web 或機器對機器應用程式需填寫
): Promise {
try {
// 步驟 1 & 2:請求模擬並取得 subject token
@@ -215,8 +215,8 @@ async function impersonateUser(
// 步驟 3:以 subject token 兌換存取權杖 (access token)
// highlight-start
- // 傳統網頁或 M2M 應用程式請用 Basic auth 並帶入 client secret
- // SPA 或原生應用程式請在主體帶入 client_id
+ // 傳統 Web 或 M2M 應用程式請用 Basic auth 並帶入 client secret
+ // SPA 或原生應用程式請在請求主體帶入 client_id
const headers: Record = {
'Content-Type': 'application/x-www-form-urlencoded',
};
@@ -234,7 +234,7 @@ async function impersonateUser(
headers['Authorization'] =
`Basic ${Buffer.from(`${clientId}:${clientSecret}`).toString('base64')}`;
} else {
- // 公開型 client:主體帶入 client_id
+ // 公開型 client:在 body 帶入 client_id
tokenExchangeBody.append('client_id', clientId);
}
// highlight-end
@@ -252,27 +252,27 @@ async function impersonateUser(
const tokenData = (await tokenExchangeResponse.json()) as TokenExchangeResponse;
return tokenData.access_token;
} catch (error) {
- console.error('Impersonation failed:', error);
+ console.error('模擬失敗:', error);
throw error;
}
}
-// Sarah 使用此函式模擬 Alex
+// Sarah 使用此函式來模擬 Alex
async function performImpersonation(): Promise {
try {
// highlight-start
- // 傳統網頁或 M2M 應用程式需傳入 client secret
+ // 傳統 Web 或 M2M 應用程式請傳入 client secret
const accessToken = await impersonateUser(
'alex123',
'techcorp_support_app',
'TECH-1234',
'https://api.techcorp.com/customer-data',
- 'your-client-secret' // SPA 或原生應用程式可省略
+ 'your-client-secret' // SPA 或原生應用程式請省略
);
// highlight-end
- console.log('Alex 的模擬存取權杖 (access token):', accessToken);
+ console.log('Alex 的模擬存取權杖:', accessToken);
} catch (error) {
- console.error('執行模擬失敗:', error);
+ console.error('執行模擬失敗:', error);
}
}
@@ -283,18 +283,18 @@ void performImpersonation();
:::note
1. subject token 為短效且僅能使用一次。
-2. 模擬存取權杖 (access token) 不會附帶 [重新整理權杖 (refresh token)](https://auth.wiki/refresh-token)。若權杖過期,Sarah 需重複此流程以協助 Alex。
+2. 模擬存取權杖 (access token) 不會附帶 [重新整理權杖 (refresh token)](https://auth.wiki/refresh-token)。若權杖過期且問題尚未解決,Sarah 需重新執行此流程。
3. TechCorp 的後端伺服器必須實作適當的授權檢查,確保僅有授權的支援人員(如 Sarah)能請求模擬。
:::
## `act` 宣告 (claim) \{#act-claim}
-當使用權杖交換流程進行模擬時,發出的存取權杖 (access token) 可包含額外的 `act`(actor)宣告 (claim)。此宣告代表「執行方」的身分——在本例中即執行模擬的 Sarah。
+當使用權杖交換流程進行模擬時,發出的存取權杖 (access token) 可包含額外的 `act`(actor)宣告 (claim)。此宣告代表「執行者」的身分——在本例中即執行模擬的 Sarah。
-若要包含 `act` 宣告,Sarah 的應用程式需在權杖交換請求中提供 `actor_token`,此權杖應為帶有 `openid` 權限範圍 (scope) 的有效存取權杖 (access token)。以下為請求範例:
+若要包含 `act` 宣告,Sarah 的應用程式需在權杖交換請求中提供 `actor_token`,此權杖應為帶有 `openid` 權限範圍 (scope) 的有效存取權杖。以下為請求範例:
-傳統網頁或機器對機器應用程式:
+傳統 Web 或機器對機器應用程式:
```bash
POST /oidc/token HTTP/1.1
@@ -312,7 +312,7 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&resource=https://api.techcorp.com/customer-data
```
-SPA 或原生應用程式則在主體帶入 `client_id`:
+SPA 或原生應用程式則在請求主體帶入 `client_id`:
```bash
POST /oidc/token HTTP/1.1
@@ -346,11 +346,11 @@ grant_type=urn:ietf:params:oauth:grant-type:token-exchange
此 `act` 宣告明確指出 Sarah(sarah789)正以 Alex(alex123)的身分行動。`act` 宣告有助於稽核與追蹤模擬操作。
-## 自訂權杖宣告 (Customizing token claims) \{#customizing-token-claims}
+## 自訂權杖宣告 (claims) \{#customizing-token-claims}
-Logto 允許你[自訂模擬權杖的宣告 (claims)](/developers/custom-token-claims)。這對於在模擬流程中加入額外情境或中繼資料(如模擬原因或支援工單)非常有用。
+Logto 允許你[自訂模擬權杖的宣告 (claims)](/developers/custom-token-claims)。這對於在模擬流程中加入額外情境或中繼資料(如模擬原因、支援工單等)非常有用。
-當 TechCorp 的伺服器向 Logto Management API 請求 subject token 時,可包含 `context` 物件:
+當 TechCorp 的伺服器向 Logto Management API 請求 subject token 時,可以包含 `context` 物件:
```json
{
@@ -363,7 +363,7 @@ Logto 允許你[自訂模擬權杖的宣告 (claims)](/developers/custom-token-c
}
```
-此 [context](/developers/custom-token-claims/create-script#context-only-available-for-user-access-token) 可於 `getCustomJwtClaims()` 函式中使用,將特定宣告加入最終存取權杖 (access token)。範例如下:
+此 [context](/developers/custom-token-claims/create-script#context-only-available-for-user-access-token) 可於 `getCustomJwtClaims()` 函式中使用,將特定宣告加入最終存取權杖。範例如下:
```tsx
const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
@@ -381,7 +381,7 @@ const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
};
```
-Sarah 取得的最終存取權杖 (access token) 可能如下:
+Sarah 取得的最終存取權杖可能如下:
```json
{
@@ -392,14 +392,14 @@ Sarah 取得的最終存取權杖 (access token) 可能如下:
"reason": "Resource access issue",
"support_engineer": "sarah789"
}
- // ... 其他標準宣告 (claims)
+ // ... 其他標準宣告
}
```
-透過這種方式自訂存取權杖 (access token) 宣告,TechCorp 可在系統中輕鬆稽核與理解模擬操作的情境資訊。
+透過這種方式自訂存取權杖宣告,TechCorp 可於權杖中納入有價值的模擬情境資訊,便於稽核與理解系統內的模擬行為。
:::note
-為權杖新增自訂宣告 (claims) 時請謹慎,避免包含敏感資訊,以免權杖遭攔截或洩漏時造成安全風險。JWT 雖經簽章但未加密,任何取得權杖者皆可檢視內容。
+在權杖中加入自訂宣告時請謹慎,避免包含敏感資訊,以免權杖遭攔截或外洩時造成安全風險。JWT 雖經簽章但未加密,任何取得權杖者皆可檢視其內容。
:::
## 相關資源 \{#related-resources}
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
index 598c102e0b6..6ac14bff8b2 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/developers/webhooks/README.mdx
@@ -1,37 +1,37 @@
---
-sidebar_position: 5
+sidebar_position: 6
---
# Webhook
Logto [Webhook](https://auth.wiki/webhook) 提供各種事件的即時通知,包括使用者帳號、角色、權限、組織、組織角色、組織權限,以及 [使用者互動](/end-user-flows) 的變更。
-當事件被觸發時,Logto 會向你提供的 Endpoint URL 發送 HTTP 請求,內容包含事件的詳細資訊,例如使用者 ID、使用者名稱、電子郵件及其他相關細節(關於 payload 與 header 所包含的資料,請參閱 [Webhook 請求](/developers/webhooks/webhooks-request))。你的應用程式可以處理這個請求並執行自訂動作,例如發送電子郵件或更新資料庫資料。
+當事件被觸發時,Logto 會向你提供的 Endpoint URL 發送 HTTP 請求,內容包含事件的詳細資訊,例如使用者 ID、使用者名稱、電子郵件及其他相關細節(有關 payload 與 header 所含資料,請參閱 [Webhook 請求](/developers/webhooks/webhooks-request))。你的應用程式可以處理這個請求並執行自訂動作,例如發送電子郵件或更新資料庫資料。
我們會根據用戶需求持續新增更多事件。如果你有特定業務需求,歡迎告訴我們。
-## 為什麼要使用 Webhook?\{#why-use-webhook}
+## 為什麼要使用 Webhook? \{#why-use-webhook}
-Webhook 提供應用程式間的即時通訊,免除輪詢需求,實現資料的即時更新。它們簡化了應用程式整合與工作流程自動化,無需複雜程式碼或專有 API。
+Webhook 提供應用程式間的即時通訊,免除輪詢需求,實現即時資料更新。它們簡化了應用程式整合與工作流程自動化,無需複雜程式碼或專有 API。
-以下是 CIAM 常見 Webhook 使用案例:
+以下是 CIAM 常見 Webhook 使用情境範例:
- **發送電子郵件:** 設定 Webhook,讓新使用者註冊時自動發送歡迎信,或在使用者從新裝置或地點登入時通知管理員。
- **發送通知:** 設定 Webhook,當使用者註冊時觸發 CRM 系統的虛擬助理,提供即時客戶支援。
-- **執行額外 API 呼叫:** 設定 Webhook,根據使用者的電子郵件網域或 IP 位址驗證其存取權,然後使用 Logto Management API 指派具備資源權限的適當角色。
+- **執行額外 API 呼叫:** 設定 Webhook,根據使用者電子郵件網域或 IP 位址驗證其存取權,然後使用 Logto Management API 指派具備資源權限的適當角色。
- **資料同步:** 設定 Webhook,讓應用程式即時獲知如使用者帳號停用或刪除等變更。
- **產生報表:** 設定 Webhook 接收使用者登入活動資料,並用於產生使用者參與度或使用模式報表。
## 術語 \{#terms}
-| 項目 | 說明 |
-| ------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
-| Event(事件) | 當特定動作發生時,會觸發具有特定類型的 hook 事件。例如,當使用者完成註冊流程並建立新帳號時,Logto 會發出 PostRegister hook 事件。 |
-| Hook(鉤子) | 連接到特定事件的一個或一系列動作。動作可以是呼叫 API、執行程式碼片段等。 |
-| Webhook | hook 的一種子類型,表示以事件 payload 呼叫 API。 |
-| 假設開發者希望在使用者透過新裝置登入時發送通知,可以新增一個 webhook,將 PostSignIn 事件呼叫其安全服務 API。 |
+| Item | Description |
+| ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
+| Event | 當特定動作發生時,會觸發具有特定型別的 hook 事件。例如,當使用者完成註冊流程並建立新帳號時,Logto 會發出 PostRegister hook 事件。 |
+| Hook | 連接到特定事件的一個或一系列動作。動作可以是呼叫 API、執行程式碼片段等。 |
+| Webhook | hook 的一種子型別,表示以事件 payload 呼叫 API。 |
+| 假設開發者希望在使用者從新裝置登入時發送通知,可以新增 webhook,讓 PostSignIn 事件呼叫其安全服務 API。 |
-以下是在 Logto 中為 `PostSignIn` 事件啟用兩個 webhook 的範例:
+以下是在 Logto 為 `PostSignIn` 事件啟用兩個 webhook 的範例:
```mermaid
graph LR
@@ -63,18 +63,18 @@ graph LR
-### Logto 支援同步 webhook 嗎?\{#does-logto-support-synced-webhooks}
+### Logto 支援同步 webhook 嗎? \{#does-logto-support-synced-webhooks}
-雖然同步 webhook 能讓使用者登入流程更順暢,但目前尚未支援(未來會支援)。因此,目前所有依賴同步 webhook 的情境都需要不同的替代方案。如有疑問,歡迎聯繫我們。
+雖然同步 webhook 能讓使用者登入流程更順暢,但目前尚未支援(未來會支援)。因此,目前所有依賴同步 webhook 的情境都需要其他替代方案。如有疑問,歡迎聯絡我們。
-### 如何處理使用者權限變更?\{#how-to-deal-with-user-permission-change}
+### 如何處理使用者權限變更? \{#how-to-deal-with-user-permission-change}
@@ -85,22 +85,22 @@ graph LR
-### 如何偵錯 webhook 超時?\{#how-to-debug-webhook-timeout}
+### 如何除錯 webhook 逾時? \{#how-to-debug-webhook-timeout}
-接收 Webhook 的 endpoint 應盡快回傳 2xx 回應,告知 Logto Webhook 已成功接收。由於不同用戶對 Webhook 的處理邏輯差異極大,過於複雜的任務可能需數秒,導致 Logto Webhook 超時。最佳做法是維護自己的事件佇列;收到 Logto Webhook 時,將事件寫入佇列並立即回傳 2xx 給 Logto,然後讓自己的 worker 逐步處理佇列任務。若 worker 發生錯誤,請於自己的伺服器處理。
+接收 Webhook 的 endpoint 應盡快回傳 2xx 回應,告知 Logto Webhook 已成功接收。由於不同用戶對 Webhook 的處理邏輯差異極大,若任務過於複雜,可能需數秒才完成,導致 Logto Webhook 逾時。最佳做法是維護自己的事件佇列;收到 Logto Webhook 時,將事件寫入佇列並立即回傳 2xx 給 Logto,然後讓自己的 worker 逐步處理佇列任務。若 worker 發生錯誤,請在自己的伺服器上處理。
-### 可以從 `PostSignIn` webhook 取得 client IP 嗎?\{#can-i-get-the-client-ip-address-from-postsignin-webhooks}
+### 可以從 `PostSignIn` webhook 取得 client IP 嗎? \{#can-i-get-the-client-ip-address-from-postsignin-webhooks}
-可以,你可以在 Webhook payload 中取得 IP 位址、user agent 等資訊。如果需要目前未支援的資訊,歡迎在 GitHub issues 提出功能需求,或聯繫我們。
+可以,你可以在 Webhook payload 中取得 IP 位址、user agent 等資訊。如需目前未支援的資訊,歡迎在 GitHub issues 提出功能需求或聯絡我們。
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx b/i18n/zh-TW/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
index f2009a45793..e177f0cbd2c 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/README.mdx
@@ -1,33 +1,58 @@
---
sidebar_position: 9
sidebar_custom_props:
- sublist_label: 帳號流程 (Account flows)
+ sublist_label: 帳號流程
---
import GearIcon from '@site/src/assets/gear.svg';
-# 帳號設定 (Account settings)
+# 帳號設定
-Logto 提供兩組帳號設定 API,讓使用者能管理儲存在 Logto 的帳號與個人資料。
+Logto 提供多種方式,讓使用者管理儲存在 Logto 的帳號與個人資料。
-## 使用 Account API(推薦)\{#use-account-apis-recommended}
+## 使用預建帳號中心 UI(推薦) \{#use-prebuilt-account-center-ui-recommended}
-Logto 的 Account API 是現成可用的前端端點,讓終端使用者能安全地檢視與更新自己的資訊,並內建權限檢查。只需將其嵌入你的用戶端應用程式,即可打造完善的自助帳號設定頁面。
+Logto 提供預建的帳號中心 UI,為終端使用者提供現成的帳號設定管理頁面。這是最快速將帳號管理功能加入應用程式的方法。
主要特色:
-- **終端使用者設定**:使用者可管理自己的登入識別碼與憑證、社交帳號、MFA 方法,以及個人資料。
-- **用戶端整合**:設計為可安全直接於前端使用。
-- **極簡設定**:即插即用端點,無需自訂伺服器。
+- **零開發成本**:現成可用的頁面,開箱即用。
+- **一致體驗**:外觀與 Logto 登入體驗一致。
+- **內建安全性**:所有驗證流程與安全措施自動處理。
+- **完整功能**:支援更新電子郵件、手機、使用者名稱、密碼與 MFA 設定。
+
+,
+ },
+ },
+ ]}
+/>
+
+## 使用 Account API \{#use-account-apis}
+
+Logto 的 Account API 是現成可用的前端端點,讓終端使用者能安全地檢視與更新自己的資訊,並內建權限檢查。當你需要自訂帳號設定頁面並使用自己的 UI 時,請選擇此方案。
+
+主要特色:
+
+- **終端使用者設定**:使用者可管理自己的登入識別、憑證、社交帳號、MFA 方法與個人資料。
+- **前端整合**:設計為可安全直接於前端使用。
+- **完全自訂**:可自建 UI,同時利用 Logto 的安全 API。
- **權限控制**:可透過 Management API 設定啟用哪些 Account API。
,
},
@@ -37,13 +62,13 @@ Logto 的 Account API 是現成可用的前端端點,讓終端使用者能安
## 使用 Management API \{#use-management-apis}
-Management API 是 Logto 的核心管理介面,僅限管理員或後端服務存取。它提供最大彈性與完整 CRUD 控制權,讓你能自訂管理工具。若你需要完全自訂的自助入口或非標準的使用者管理功能,可將部分 Management API 端點包裝於自有「Account API」層,並以你的業務驗證邏輯保護。
+Management API 是 Logto 的核心管理介面,僅限管理員或後端服務存取。它提供最大彈性與完整 CRUD 控制權,讓你能自建管理工具。若你需要完全自訂的自助入口或非標準使用者管理功能,可將部分 Management API 端點包裝於自家「Account API」層,並以你的業務驗證邏輯保護。
主要特色:
- **僅限管理員存取**:適用於開發者與後台系統
-- **完整使用者生命週期**:建立、讀取、更新、刪除、停用或還原帳號
-- **進階操作**:產生個人存取權杖、模擬使用者、連接 OAuth 應用程式、自訂工作流程等
+- **完整使用者生命週期**:建立、查詢、更新、刪除、停用或還原帳號
+- **進階操作**:產生個人存取權杖、模擬使用者、連接 OAuth 應用程式、自訂工作流程
,
},
@@ -59,13 +84,14 @@ Management API 是 Logto 的核心管理介面,僅限管理員或後端服務
]}
/>
-## Account API vs. Management API \{#account-api-vs-management-api}
+## 帳號設定方案比較 \{#comparison-of-account-settings-options}
-| 功能 (Feature) | Account API | Management API |
-| -------------- | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
-| **目標使用者** | 終端使用者 | 管理員 / 開發者 |
-| **存取情境** | 用戶端 / 前端 | 伺服器端 / 後端 |
-| **權限模型** | 可透過 Management API 切換啟用哪些 Account API | 由開發者完全自訂 |
-| **支援功能** | 檢視、更新、刪除:使用者名稱、電子郵件、電話、密碼、社交帳號、MFA、個人資料 | 所有基本設定 + 刪除 / 停用 / 還原帳號、個人存取權杖、使用者模擬、連接 OAuth 應用程式等 |
-| **設定複雜度** | 極低(即插即用) | 中至高(需自訂實作) |
-| **適用時機** | 需快速在用戶端應用程式推出安全的自助帳號設定頁面,且設定最少時 | 當 Account API 無法滿足需求時,例如複雜的帳號刪除邏輯、高風險操作或需打造後台管理工具 |
+| 功能 | 預建帳號中心 UI | Account API | Management API |
+| -------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
+| **目標使用者** | 終端使用者 | 終端使用者 | 管理員 / 開發者 |
+| **存取情境** | 重新導向至 Logto 託管頁面 | 前端 / 用戶端 | 後端 / 伺服器端 |
+| **權限模型** | 透過帳號中心設定切換啟用欄位 | 透過 Management API 切換啟用哪些 Account API | 開發者可完全自訂 |
+| **支援功能** | 更新:電子郵件、手機、使用者名稱、密碼、MFA(TOTP、通行密鑰、備用碼) | 檢視、更新、刪除:使用者名稱、電子郵件、手機、密碼、社交帳號、MFA、個人資料 | 所有基本設定 + 刪除 / 停用 / 還原帳號、個人存取權杖、使用者模擬、連接 OAuth 應用程式等 |
+| **UI 自訂化** | 承襲登入體驗品牌設定 | 完全自訂(自建 UI) | 完全自訂(自建 UI) |
+| **設定複雜度** | 無(僅需連結至預建頁面) | 低(API 搭配自家 UI 使用) | 中至高(需自訂實作) |
+| **適用時機** | 最快速加入帳號管理且無需自訂頁面時 | 需自訂 UI 且想利用 Logto 安全 API 時 | 當 Account API 無法滿足需求時,例如複雜帳號刪除邏輯、高風險操作或需建置後台管理工具時 |
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx b/i18n/zh-TW/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
new file mode 100644
index 00000000000..d48b83c9d1d
--- /dev/null
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/end-user-flows/account-settings/by-account-center-ui.mdx
@@ -0,0 +1,152 @@
+---
+description: 瞭解如何使用 Logto 預建的帳號中心 UI,讓使用者管理他們的帳號
+sidebar_position: 2
+---
+
+# 透過預建帳號中心 UI 進行帳號設定
+
+## 什麼是預建帳號中心 UI \{#what-is-the-prebuilt-account-center-ui}
+
+Logto 提供預建的帳號中心 UI,為終端使用者提供現成的帳號設定管理頁面。這個預建 UI 由 Logto 託管,並處理常見的帳號管理任務,包括:
+
+- 更新電子郵件地址
+- 更新手機號碼
+- 更新使用者名稱
+- 設定或更新密碼
+- 管理 MFA 設定(TOTP 驗證器應用程式、通行密鑰、備用代碼)
+
+預建帳號中心 UI 設計上可與你的應用程式無縫整合,提供一致的使用體驗,無需你自行開發帳號管理頁面。
+
+## 使用預建 UI 的好處 \{#benefits-of-using-the-prebuilt-ui}
+
+- **零開發成本**:現成可用的頁面,開箱即用
+- **一致體驗**:與 Logto 登入體驗風格一致
+- **內建安全性**:所有驗證流程與安全措施自動處理
+- **自動更新**:新功能與安全性改進自動獲得
+
+## 可用頁面 \{#available-pages}
+
+預建帳號中心 UI 提供以下頁面,全部可透過你的 Logto 租戶端點下的 `/account` 路徑存取:
+
+| Path | 說明 |
+| -------------------------------- | ------------------------ |
+| `/account/email` | 更新主要電子郵件地址 |
+| `/account/phone` | 更新主要手機號碼 |
+| `/account/username` | 更新使用者名稱 |
+| `/account/password` | 設定或更新密碼 |
+| `/account/passkey/add` | 新增通行密鑰(WebAuthn) |
+| `/account/passkey/manage` | 檢視與管理現有通行密鑰 |
+| `/account/authenticator-app` | 設定 TOTP 驗證器應用程式 |
+| `/account/backup-codes/generate` | 產生新的備用代碼 |
+| `/account/backup-codes/manage` | 檢視與管理備用代碼 |
+
+例如,若你的租戶端點為 `https://example.logto.app`,則電子郵件更新頁面為 `https://example.logto.app/account/email`。
+
+## 如何使用預建 UI \{#how-to-use-the-prebuilt-ui}
+
+### 步驟 1:啟用 Account API \{#step-1-enable-account-api}
+
+預建帳號中心 UI 依賴 Account API。請前往 控制台 > 登入與帳號 > 帳號中心 並啟用 Account API。
+
+根據需求設定欄位權限:
+
+- 欄位設為 `Edit` 允許使用者修改
+- 欄位設為 `ReadOnly` 僅允許檢視
+- 欄位設為 `Off` 完全隱藏
+
+### 步驟 2:從你的應用程式連結到預建頁面 \{#step-2-link-to-prebuilt-pages}
+
+要使用預建帳號中心 UI,需將使用者從你的應用程式導向對應的 Logto 頁面。有兩種方式:
+
+#### 方式 A:直接連結並帶上 redirect 參數 \{#approach-a-direct-linking}
+
+在你的應用程式中加入連結,將使用者導向預建頁面。加上 `redirect` 查詢參數,讓使用者完成操作後返回你的應用程式:
+
+```
+https://[tenant-id].logto.app/account/email?redirect=https://your-app.com/settings
+```
+
+當使用者完成電子郵件更新後,會被導回 `https://your-app.com/settings`。
+
+#### 方式 B:嵌入你的帳號設定流程 \{#approach-b-embedding}
+
+你可以將預建頁面整合進現有的帳號設定流程:
+
+1. 在應用程式的帳號設定頁面顯示使用者目前資訊
+2. 提供「編輯」或「更新」按鈕,連結到對應的預建頁面
+3. 使用者完成操作後會被導回你的應用程式
+
+實作範例:
+
+```tsx
+function AccountSettings() {
+ const tenantEndpoint = 'https://example.logto.app';
+ const redirectUrl = encodeURIComponent(window.location.href);
+
+ return (
+
+
帳號設定
+
+
+
電子郵件:user@example.com
+
更新電子郵件
+
+
+
+
+
+
+ );
+}
+```
+
+### 步驟 3:處理成功導回 \{#step-3-handle-success-redirects}
+
+使用者完成操作後,會被導回你指定的 URL,並可能帶有 `show_success` 查詢參數。你可以用它來顯示成功訊息:
+
+```tsx
+function SettingsPage() {
+ const searchParams = new URLSearchParams(window.location.search);
+ const showSuccess = searchParams.get('show_success');
+
+ return (
+
+ {showSuccess === 'email' &&
電子郵件更新成功!
}
+ {showSuccess === 'password' &&
密碼更新成功!
}
+ {/* ... 其餘設定頁內容 */}
+
+ );
+}
+```
+
+## 安全性考量 \{#security-considerations}
+
+預建帳號中心 UI 內建多項安全措施:
+
+- **身分驗證**:進行敏感變更(電子郵件、手機、密碼、MFA)前,使用者必須透過現有密碼或驗證方式驗證身分
+- **驗證碼**:電子郵件與手機更新需輸入發送至新地址/號碼的驗證碼
+- **工作階段驗證**:所有操作都會驗證使用者的工作階段,防止未授權存取
+
+## 客製化選項 \{#customization-options}
+
+預建帳號中心 UI 會繼承你的登入體驗設定,包括:
+
+- 標誌與配色
+- 深色/淺色模式
+- 語言設定
+
+若你需要超越預建 UI 的自訂化,請考慮使用 [Account API](/end-user-flows/account-settings/by-account-api) 自行打造專屬帳號管理頁面。
+
+## 相關資源 \{#related-resources}
+
+- [透過 Account API 進行帳號設定](/end-user-flows/account-settings/by-account-api)-以完整 API 控制自訂帳號管理
+- [透過 Management API 進行帳號設定](/end-user-flows/account-settings/by-management-api)-管理員層級帳號管理
+- [MFA 設定](/end-user-flows/mfa)-設定多重要素驗證 (MFA)
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/introduction/README.mdx b/i18n/zh-TW/docusaurus-plugin-content-docs/current/introduction/README.mdx
index a7f4401126e..2a75e59677e 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/introduction/README.mdx
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/introduction/README.mdx
@@ -143,6 +143,10 @@ import WebhookIcon from '@site/src/assets/webhook.svg';
icon: ,
docId: 'developers/custom-token-claims/README',
},
+ {
+ icon: ,
+ docId: 'developers/custom-id-token/README',
+ },
{
icon: ,
docId: 'developers/user-impersonation',
@@ -168,7 +172,7 @@ Logto 的能力建立在四大支柱之上,這些基礎讓你能輕鬆將各
type: 'link',
label: 'Logto Console',
href: 'https://cloud.logto.io',
- description: '一個網頁介面,用於配置與管理資源,快速設定登入體驗並輕鬆管理身分。',
+ description: '一個網頁介面,用於設定與管理資源,快速建立登入體驗並輕鬆管理身分。',
customProps: {
icon: ,
},
@@ -188,7 +192,7 @@ Logto 的能力建立在四大支柱之上,這些基礎讓你能輕鬆將各
label: 'Logto API',
href: 'https://openapi.logto.io',
description:
- 'Logto 的後端提供一系列 API,協助實現各種驗證 (Authentication) 與授權 (Authorization) 功能,包括 Logto Management API、Experience API 與 Account API。',
+ 'Logto 的後端提供一系列 API,協助實現各種驗證 (Authentication) 與授權 (Authorization) 功能,包括 Logto Management API、Experience API 及 Account API。',
customProps: {
icon: ,
},
@@ -197,7 +201,7 @@ Logto 的能力建立在四大支柱之上,這些基礎讓你能輕鬆將各
type: 'link',
label: 'SDKs',
href: '/quick-starts',
- description: '探索我們的端到端教學與 SDK,快速用你偏好的框架開始開發。',
+ description: '探索我們的端到端教學與 SDK,快速在你偏好的框架中開始使用。',
customProps: {
icon: ,
},
@@ -244,11 +248,11 @@ Logto 的能力建立在四大支柱之上,這些基礎讓你能輕鬆將各
## 加入我們的社群 \{#join-our-community}
-加入 [Logto Discord](https://discord.com/invite/UEPaF3j5e6) 伺服器 —— 這裡是開發者與企業的活躍社群。參與討論、獲取最新消息並分享你的回饋。
+加入 [Logto Discord](https://discord.com/invite/UEPaF3j5e6) 伺服器 —— 這裡是開發者與企業的活躍社群。參與討論、掌握最新動態並分享你的回饋。
-如果你是身分系統新手,建議先閱讀以下重要概念:
+如果你是身分系統新手,建議先閱讀這些重要概念:
登入體驗 (Sign-in experience)
驗證 (Authentication) & 授權 (Authorization)
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
index d0da4fea2b0..7c7a433d87e 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scope-claim-list.md
@@ -1,81 +1,87 @@
以下是支援的權限範圍 (Scopes) 及對應的宣告 (Claims) 清單:
-**`openid`**
+### 標準 OIDC 權限範圍 (Scopes) {#standard-oidc-scopes}
-| Claim name | Type | Description | Needs userinfo? |
-| ---------- | -------- | ------------------ | --------------- |
-| sub | `string` | 使用者的唯一識別符 | No |
+**`openid`**(預設)
-**`profile`**
+| 宣告名稱 (Claim name) | 類型 (Type) | 說明 (Description) |
+| --------------------- | ----------- | ------------------ |
+| sub | `string` | 使用者的唯一識別符 |
-| Claim name | Type | Description | Needs userinfo? |
-| ---------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- |
-| name | `string` | 使用者的全名 | No |
-| username | `string` | 使用者的使用者名稱 | No |
-| picture | `string` | 終端使用者大頭貼的 URL。此 URL 必須指向圖片檔案(例如 PNG、JPEG 或 GIF),而非包含圖片的網頁。請注意,此 URL 應明確指向適合描述終端使用者的個人照片,而非終端使用者隨意拍攝的照片。 | No |
-| created_at | `number` | 終端使用者建立的時間。時間以自 Unix 紀元(1970-01-01T00:00:00Z)以來的毫秒數表示。 | No |
-| updated_at | `number` | 終端使用者資訊最後更新的時間。時間以自 Unix 紀元(1970-01-01T00:00:00Z)以來的毫秒數表示。 | No |
+**`profile`**(預設)
-其他 [標準宣告 (Standard claims)](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) 包含 `family_name`、`given_name`、`middle_name`、`nickname`、`preferred_username`、`profile`、`website`、`gender`、`birthdate`、`zoneinfo` 與 `locale` 也會包含在 `profile` 權限範圍內,無需額外請求 userinfo endpoint。與上表宣告不同的是,這些宣告僅在其值不為空時才會返回,而上表宣告若值為空則會返回 `null`。
+| 宣告名稱 (Claim name) | 類型 (Type) | 說明 (Description) |
+| --------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| name | `string` | 使用者全名 |
+| username | `string` | 使用者名稱 |
+| picture | `string` | 終端使用者個人頭像的 URL。此 URL 必須指向圖片檔案(如 PNG、JPEG 或 GIF),而非包含圖片的網頁。請注意,此 URL 應明確指向適合描述終端使用者的個人頭像,而非任意由終端使用者上傳的照片。 |
+| created_at | `number` | 終端使用者建立的時間。以自 Unix 紀元(1970-01-01T00:00:00Z)以來的毫秒數表示。 |
+| updated_at | `number` | 終端使用者資訊最後更新的時間。以自 Unix 紀元(1970-01-01T00:00:00Z)以來的毫秒數表示。 |
+
+其他 [標準宣告 (Standard claims)](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) 包含 `family_name`、`given_name`、`middle_name`、`nickname`、`preferred_username`、`profile`、`website`、`gender`、`birthdate`、`zoneinfo` 及 `locale` 也會包含在 `profile` 權限範圍內,無需額外請求 userinfo endpoint。與上表宣告不同的是,這些宣告僅在其值不為空時才會返回,而上表宣告若值為空則會返回 `null`。
:::note
-與標準宣告不同,`created_at` 與 `updated_at` 宣告使用毫秒而非秒數。
+與標準宣告不同,`created_at` 與 `updated_at` 宣告使用「毫秒」而非「秒」為單位。
:::
**`email`**
-| Claim name | Type | Description | Needs userinfo? |
-| -------------- | --------- | ---------------------- | --------------- |
-| email | `string` | 使用者的電子郵件地址 | No |
-| email_verified | `boolean` | 電子郵件地址是否已驗證 | No |
+| 宣告名稱 (Claim name) | 類型 (Type) | 說明 (Description) |
+| --------------------- | ----------- | ---------------------- |
+| email | `string` | 使用者的電子郵件地址 |
+| email_verified | `boolean` | 電子郵件地址是否已驗證 |
**`phone`**
-| Claim name | Type | Description | Needs userinfo? |
-| --------------------- | --------- | ------------------ | --------------- |
-| phone_number | `string` | 使用者的手機號碼 | No |
-| phone_number_verified | `boolean` | 手機號碼是否已驗證 | No |
+| 宣告名稱 (Claim name) | 類型 (Type) | 說明 (Description) |
+| --------------------- | ----------- | ------------------ |
+| phone_number | `string` | 使用者的電話號碼 |
+| phone_number_verified | `boolean` | 電話號碼是否已驗證 |
**`address`**
請參閱 [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html#AddressClaim) 以瞭解 address 宣告的詳細資訊。
+:::info
+標有 **(預設)** 的權限範圍 (Scopes) 會始終由 Logto SDK 請求。當請求對應權限範圍時,標準 OIDC 權限範圍下的宣告 (Claims) 會始終包含於 ID 權杖 (ID token) 中,且無法關閉。
+:::
+
+### 擴充權限範圍 (Extended scopes) {#extended-scopes}
+
+以下權限範圍由 Logto 擴充,會透過 [userinfo endpoint](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo) 返回宣告 (Claims)。這些宣告也可透過 Console > Custom JWT 設定直接包含於 ID 權杖 (ID token) 中。詳情請參閱 [自訂 ID 權杖 (Custom ID token)](/developers/custom-id-token)。
+
**`custom_data`**
-| Claim name | Type | Description | Needs userinfo? |
-| ----------- | -------- | ---------------- | --------------- |
-| custom_data | `object` | 使用者的自訂資料 | Yes |
+| 宣告名稱 (Claim name) | 類型 (Type) | 說明 (Description) | 預設包含於 ID 權杖 (ID token) |
+| --------------------- | ----------- | ------------------ | ----------------------------- |
+| custom_data | `object` | 使用者的自訂資料 | |
**`identities`**
-| Claim name | Type | Description | Needs userinfo? |
-| -------------- | -------- | --------------------- | --------------- |
-| identities | `object` | 使用者的連結身分 | Yes |
-| sso_identities | `array` | 使用者的連結 SSO 身分 | Yes |
+| 宣告名稱 (Claim name) | 類型 (Type) | 說明 (Description) | 預設包含於 ID 權杖 (ID token) |
+| --------------------- | ----------- | ----------------------- | ----------------------------- |
+| identities | `object` | 使用者已連結的身分 | |
+| sso_identities | `array` | 使用者已連結的 SSO 身分 | |
**`roles`**
-| Claim name | Type | Description | Needs userinfo? |
-| ---------- | ---------- | -------------------- | --------------- |
-| roles | `string[]` | 使用者的角色 (Roles) | No |
+| 宣告名稱 (Claim name) | 類型 (Type) | 說明 (Description) | 預設包含於 ID 權杖 (ID token) |
+| --------------------- | ----------- | -------------------- | ----------------------------- |
+| roles | `string[]` | 使用者的角色 (Roles) | ✅ |
**`urn:logto:scope:organizations`**
-| Claim name | Type | Description | Needs userinfo? |
-| ----------------- | ---------- | ------------------------------------- | --------------- |
-| organizations | `string[]` | 使用者所屬的組織 (Organizations) ID | No |
-| organization_data | `object[]` | 使用者所屬的組織 (Organizations) 資料 | Yes |
+| 宣告名稱 (Claim name) | 類型 (Type) | 說明 (Description) | 預設包含於 ID 權杖 (ID token) |
+| --------------------- | ----------- | ------------------------------------- | ----------------------------- |
+| organizations | `string[]` | 使用者所屬的組織 (Organizations) ID | ✅ |
+| organization_data | `object[]` | 使用者所屬的組織 (Organizations) 資料 | |
:::note
-這些組織 (Organizations) 宣告也可透過 userinfo endpoint 取得(當使用 [不透明權杖 (Opaque token)](/concepts/opaque-token) 時)。但不透明權杖 (Opaque tokens) 無法作為組織權杖 (Organization tokens) 存取組織專屬資源。詳情請見 [不透明權杖 (Opaque token) 與組織 (Organizations)](/concepts/opaque-token#opaque-token-and-organizations)。
+這些組織 (Organization) 宣告也可在使用 [不透明權杖 (Opaque token)](/concepts/opaque-token) 時,經由 userinfo endpoint 取得。然而,不透明權杖無法作為組織權杖 (Organization token) 來存取組織專屬資源。詳情請參閱 [不透明權杖與組織 (Opaque token and organizations)](/concepts/opaque-token#opaque-token-and-organizations)。
:::
**`urn:logto:scope:organization_roles`**
-| Claim name | Type | Description | Needs userinfo? |
-| ------------------ | ---------- | ------------------------------------------------------------------------------------- | --------------- |
-| organization_roles | `string[]` | 使用者所屬的組織 (Organizations) 角色 (Roles),格式為 `:` | No |
-
----
-
-考量效能與資料大小,若 "Needs userinfo?" 為 "Yes",表示該宣告 (Claim) 不會出現在 ID 權杖 (ID token) 中,而會在 [userinfo endpoint](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo) 回應中返回。
+| 宣告名稱 (Claim name) | 類型 (Type) | 說明 (Description) | 預設包含於 ID 權杖 (ID token) |
+| --------------------- | ----------- | ----------------------------------------------------------------------------------- | ----------------------------- |
+| organization_roles | `string[]` | 使用者所屬組織 (Organizations) 角色 (Roles),格式為 `:` | ✅ |
diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx b/i18n/zh-TW/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
index 26e1eaf21c9..848fda535d4 100644
--- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
+++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/quick-starts/fragments/_scopes-and-claims.mdx
@@ -1,6 +1,8 @@
import ScopeClaimList from './_scope-claim-list.md';
-Logto 使用 OIDC [權限範圍 (Scopes) 和宣告 (Claims) 慣例](https://openid.net/specs/openid-connect-core-1_0.html#Claims) 來定義從 ID 權杖 (ID token) 和 OIDC 使用者資訊端點 (userinfo endpoint) 獲取使用者資訊的權限範圍和宣告。無論是「權限範圍 (Scope)」還是「宣告 (Claim)」,都是 OAuth 2.0 和 OpenID Connect (OIDC) 規範中的術語。
+Logto 採用 OIDC [權限範圍 (Scopes) 與宣告 (Claims) 慣例](https://openid.net/specs/openid-connect-core-1_0.html#Claims) 來定義從 ID 權杖 (ID token) 及 OIDC userinfo 端點 取得使用者資訊時的權限範圍 (Scope) 與宣告 (Claim)。"權限範圍 (Scope)" 與 "宣告 (Claim)" 均來自 OAuth 2.0 與 OpenID Connect (OIDC) 規範的術語。
+
+對於標準 OIDC 宣告 (Claims),其是否包含於 ID 權杖 (ID token) 會嚴格依據所請求的權限範圍 (Scopes) 決定。擴充宣告(如 `custom_data` 與 `organizations`)則可透過 自訂 ID 權杖 (Custom ID token) 設定,額外配置於 ID 權杖 (ID token) 中。
{/* TODO: Remove below */}
@@ -8,12 +10,12 @@ Logto 使用 OIDC [權限範圍 (Scopes) 和宣告 (Claims) 慣例](https://open
<>
-簡而言之,當你請求一個權限範圍 (Scope) 時,你將獲得使用者資訊中的對應宣告 (Claims)。例如,如果你請求 `email` 權限範圍 (Scope),你將獲得使用者的 `email` 和 `email_verified` 資料。
+簡單來說,當你請求某個權限範圍 (Scope) 時,會在使用者資訊中取得對應的宣告 (Claim)。例如,若請求 `email` 權限範圍 (Scope),你將取得使用者的 `email` 與 `email_verified` 資料。
- 預設情況下,Logto SDK 會始終請求三個權限範圍 (Scopes):`openid`、`profile` 和
- `offline_access`,且無法移除這些預設的權限範圍 (Scopes)。但你可以在配置 Logto 時新增更多權限範圍
+ 預設情況下,Logto SDK 會始終請求三個權限範圍 (Scopes):`openid`、`profile` 以及
+ `offline_access`,且無法移除這些預設權限範圍 (Scopes)。但你可以在設定 Logto 時新增更多權限範圍
(Scopes):