Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ The implementation is the same as the previous section. Always provide the organ

For details on protecting organization‑level API permissions, see the [full guide](/authorization/organization-level-api-resources).

### Using global RBAC
### Using global RBAC \{#using-global-rbac}

In this case, you can use the Logto Management API to implement system-level access control.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ sidebar_position: 3

# Organisation erstellen

Stell dir vor, du entwickelst eine [Multi-Tenant-App](https://auth.wiki/multi-tenancy) (z. B. eine Multi-Tenant-SaaS-App), die viele Kunden bedient und jedem Kunden einen eigenen Mandanten zuweist.
Stell dir vor, du baust eine [Multi-Tenant-App](https://auth.wiki/multi-tenancy) (z. B. eine Multi-Tenant-SaaS-App), die viele Kunden bedient, wobei jeder Kunde einen eigenen Tenant besitzt.

Organisationen werden typischerweise erstellt, wenn:

1. Neue Kunden sich registrieren und sowohl ein Konto als auch einen Mandanten für ihr Unternehmen anlegen.
1. Neue Kunden sich registrieren und sowohl ein Konto als auch einen Tenant für ihr Unternehmen erstellen.
2. Bestehende Benutzer innerhalb der App eine neue Organisation erstellen können.

<img src="/img/assets/new-account-creates-org.png" alt="Neues Konto erstellt Organisation" />
Expand All @@ -21,28 +21,31 @@ Organisationen werden typischerweise erstellt, wenn:

Es gibt zwei Möglichkeiten, Organisationen für deine App zu erstellen.

### Über die Logto Console erstellen \{#create-via-logto-console}
### Erstellung über Logto Console \{#create-via-logto-console}

Erstelle Organisationen manuell in der Logto Console UI. Gehe zu <CloudLink to="/organizations">Console > Organizations</CloudLink>, um Organisationen zu erstellen, Mitglieder und Rollen zuzuweisen und die Anmeldeerfahrung der Organisation anzupassen.

Erstelle eine [Organisationstemplate](/authorization/organization-template), um ähnliche Organisationen, die die gleichen Rollen und Berechtigungen teilen, stapelweise zu erstellen.
Erstelle eine [Organisation-Vorlage](/authorization/organization-template), um ähnliche Organisationen, die die gleichen Rollen und Berechtigungen teilen, im Batch zu erstellen.

### Über die Logto Management API erstellen \{#create-via-logto-management-api}
### Erstellung über Logto Management API \{#create-via-logto-management-api}

Die Console eignet sich hervorragend für die manuelle Einrichtung, aber die meisten Apps ermöglichen es Endbenutzern, sich selbst zu bedienen – Organisationen direkt in deiner App zu erstellen und zu verwalten. Um dies zu ermöglichen, implementiere diese Funktionen mit der Logto Management API.
Die Console ist großartig für die manuelle Einrichtung, aber die meisten Apps ermöglichen es Endbenutzern, sich selbst zu bedienen – Organisationen direkt in deiner App zu erstellen und zu verwalten. Um dies zu ermöglichen, implementiere diese Funktionen mit der Logto Management API.

:::note

Wenn du neu bei der Logto Management API bist, lies zuerst diese Seiten:
Wenn du neu bei der Logto Management API bist oder die grundlegende Einführung zur Nutzung der Logto Management API für die Organisationserfahrung noch nicht gelesen hast, lies zuerst diese:

<Url href="/end-user-flows/organization-experience/setup-app-service-with-management-api">
Richte deinen App-Service mit der Logto Management API ein
</Url>
<Url href="/concepts/core-service/#management-api">Management API</Url>
<Url href="/integrate-logto/interact-with-management-api">Mit Management API interagieren</Url>
<Url href="/integrate-logto/interact-with-management-api">Interaktion mit der Management API</Url>

:::

Angenommen, dein Backend ist über den Maschine-zu-Maschine (M2M) Mechanismus mit der Logto Management API verbunden und du hast ein M2M-Zugangstoken erhalten.
Angenommen, dein Backend ist über den Maschine-zu-Maschine (M2M)-Mechanismus mit der Logto Management API verbunden und du hast ein M2M-Zugangstoken erhalten.

Erstelle eine Organisation mit der Management API ([API-Referenz](https://openapi.logto.io/operation/operation-createorganization)):
Erstelle eine Organisation mit der Management API ([API-Referenzen](https://openapi.logto.io/operation/operation-createorganization)):

```bash
curl \
Expand Down Expand Up @@ -70,6 +73,6 @@ Verpacke diese Aufrufe in deiner eigenen API-Schicht. Wenn Benutzer in deiner Ap

## Organisationstoken in Benutzeranfragen validieren \{#validating-organization-token-in-user-request}

In deiner App müssen Benutzer, wenn sie Aktionen im Kontext einer Organisation ausführen, ein Organisationstoken anstelle eines regulären Zugangstokens verwenden. Das Organisationstoken ist ein [JWT](https://auth.wiki/jwt), das Organisationsberechtigungen enthält. Wie bei jedem [Zugangstoken (Access token)](https://auth.wiki/access-token) kannst du die Ansprüche (Claims) dekodieren und den "scope"-Anspruch überprüfen, um Berechtigungen durchzusetzen.
In deiner App müssen Benutzer, wenn sie Aktionen im Kontext einer Organisation ausführen, ein Organisationstoken anstelle eines regulären Zugangstokens verwenden. Das Organisationstoken ist ein [JWT](https://auth.wiki/jwt), das Organisationsberechtigungen enthält. Wie jedes [Zugangstoken (Access token)](https://auth.wiki/access-token) kannst du die Ansprüche (Claims) dekodieren und den "scope"-Anspruch überprüfen, um Berechtigungen durchzusetzen.

Siehe <Url href="/authorization">Autorisierung (Authorization)</Url> für weitere Informationen zu Autorisierungsszenarien und wie du Organisationstokens validierst.
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ sidebar_position: 4

Dies wird üblicherweise auf der Benutzerprofilseite verwendet, auf der Benutzer ihre Organisationsinformationen anzeigen müssen.

<img src="/img/assets/user-info-page.png" alt="Organisation Benutzerinfo" />
<img src="/img/assets/user-info-page.png" alt="Organisations-Benutzerinfo" />

## Wie wird es implementiert \{#how-to-implement-it}

Es gibt zwei Möglichkeiten, Benutzerinformationen innerhalb einer Organisation abzurufen.

### 1. Den ID-Token dekodieren \{#1-decode-the-id-token}
### ID-Token entschlüsseln \{#decode-the-id-token}

Der ID-Token (ID token) ist ein standardisierter JWT, der Benutzerprofilinformationen und organisationsbezogene Ansprüche (Claims) enthält. Rufe die SDK-Methode `decodeIdToken()` auf, um ein JSON-Objekt wie dieses zu erhalten:
Das ID-Token (ID token) ist ein standardisiertes JWT, das Benutzerprofilinformationen und organisationsbezogene Ansprüche (Claims) enthält. Rufe die SDK-Methode `decodeIdToken()` auf, um ein JSON-Objekt wie dieses zu erhalten:

```json
{
Expand All @@ -42,8 +42,8 @@ Der ID-Token (ID token) ist ein standardisierter JWT, der Benutzerprofilinformat
}
```

Der ID-Token (ID token) wird jedoch nur während der Authentifizierung ausgestellt und kann veraltet sein, wenn sich das Benutzerprofil danach ändert.
Für die aktuellsten Informationen verwende die zweite Methode unten oder rufe `clearAllTokens()` auf und starte einen Authentifizierungsfluss neu, um einen frischen ID-Token (ID token) zu erhalten.
Das ID-Token (ID token) wird jedoch nur während der Authentifizierung ausgegeben und kann veraltet sein, wenn sich das Benutzerprofil danach ändert.
Für die aktuellsten Informationen verwende die zweite Methode unten oder rufe `clearAllTokens()` auf und starte einen Authentifizierungsablauf neu, um ein frisches ID-Token (ID token) zu erhalten.

```ts
await logtoClient.clearAllTokens();
Expand All @@ -53,8 +53,8 @@ logtoClient.signIn({
});
```

Wenn die Sitzung noch gültig ist, wird der `signIn`-Aufruf ohne erneute Eingabe von Zugangsdaten zurück zu deiner App umleiten. Aus Sicht des Benutzers wird die App einfach aktualisiert und ein neuer ID-Token (ID token) wird im Hintergrund ausgestellt.
Wenn die Sitzung noch gültig ist, leitet der `signIn`-Aufruf ohne erneute Eingabe von Zugangsdaten zurück zu deiner App. Aus Sicht des Benutzers wird die App einfach aktualisiert und im Hintergrund ein neues ID-Token (ID token) ausgegeben.

### 2. Benutzerinformationen vom `/oidc/me`-Endpunkt abrufen \{#2-fetch-user-info-from-the-oidc-me-endpoint}
### Benutzerinformationen vom `/oidc/me`-Endpunkt abrufen \{#fetch-user-info-from-the-oidc-me-endpoint}

Du kannst auch `/oidc/me` anfragen, um Benutzerinformationen in Echtzeit im Organisationskontext zu erhalten. Rufe dazu die SDK-Methode `fetchUserInfo()` auf.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ sidebar_position: 6

# Organisationsmitglieder einladen

In Multi-Organisations-Anwendungen ist es eine häufige Anforderung, Mitglieder zu einer Organisation einzuladen. Diese Anleitung führt durch die Schritte und technischen Details zur Implementierung dieser Funktion.
In Multi-Tenancy-Anwendungen ist es eine häufige Anforderung, Mitglieder zu einer Organisation einzuladen. Diese Anleitung führt durch die Schritte und technischen Details zur Implementierung dieser Funktion.

## Ablaufübersicht \{#flow-overview}

Expand All @@ -17,21 +17,21 @@ sequenceDiagram
Participant C as Deine Multi-Organisations-App
Participant L as Logto

A ->> C: Eingabe der E-Mail-Adresse und Rolle des Eingeladenen
A ->> C: E-Mail und Rolle des Eingeladenen eingeben
C ->> L: Organisationseinladung mit Management API erstellen
L -->> C: Rückgabe der Einladungs-ID
C ->> C: Einladungslink mit Einladungs-ID erstellen
L -->> C: Einladung-ID zurückgeben
C ->> C: Einladungslink mit Einladung-ID erstellen
C ->> L: Anfordern des Versands der Einladungsemail mit Einladungslink
L -->> U: Versand der Einladungsemail mit Einladungslink
U ->> C: Klick auf den Einladungslink und Weiterleitung zu deiner Landingpage,<br /> Einladung annehmen oder ablehnen
C ->> L: Aktualisierung des Einladungsstatus mit Management API
L -->> U: Einladungsemail mit Einladungslink senden
U ->> C: Klick auf Einladungslink und Weiterleitung zu deiner Landingpage,<br /> Einladung annehmen oder ablehnen
C ->> L: Einladungsstatus mit Management API aktualisieren
```

## Organisationsrollen erstellen \{#create-organization-roles}

Bevor Mitglieder eingeladen werden, erstelle Organisationsrollen. Siehe die [Organisationstemplate](/authorization/organization-template), um mehr über Rollen und Berechtigungen zu erfahren.

In dieser Anleitung erstellen wir weiterhin zwei typische Organisationsrollen: `admin` und `member`.
In dieser Anleitung erstellen wir zwei typische Organisationsrollen: `admin` und `member`.

Die `admin`-Rolle hat vollen Zugriff auf alle Ressourcen der Organisation, während die `member`-Rolle eingeschränkten Zugriff hat. Zum Beispiel:

Expand Down Expand Up @@ -82,15 +82,20 @@ Falls du die Logto Management API noch nicht eingerichtet hast, siehe [Mit Manag

### Organisationseinladung mit Logto Management API erstellen \{#create-an-organization-invitation-with-logto-management-api}

Es gibt eine Reihe von einladungsbezogenen Management APIs im Organisations-Feature. Mit diesen APIs kannst du:
Im Organisations-Feature gibt es eine Reihe von einladungsbezogenen Management APIs. Mit diesen APIs kannst du:

- `POST /api/organization-invitations`: Eine Organisationseinladung mit zugewiesener Organisationsrolle erstellen.
- `POST /api/one-time-tokens`: Ein Einmal-Token für den Eingeladenen erstellen, um sich zu authentifizieren, wenn er die Einladung annimmt. [Mehr erfahren](/end-user-flows/one-time-token)
- `POST /api/organization-invitations/{id}/message`: Die Organisationseinladung per E-Mail an den Eingeladenen senden.
Hinweis: Die Nutzlast unterstützt eine `link`-Eigenschaft, sodass du deinen eigenen Einladungslink basierend auf der Einladungs-ID erstellen kannst. Zum Beispiel:

```json
{
"link": "https://your-app.com/invitation/join?id=your-invitation-id&token=your-one-time-token&email=invitee-email"
}
```
:::note

Das Payload unterstützt eine `link`-Eigenschaft, sodass du deinen eigenen Einladungslink basierend auf der Einladung-ID erstellen kannst. Zum Beispiel:

:::

```json
{
"link": "https://your-app.com/invitation/join?id=your-invitation-id&token=your-one-time-token&email=invitee-email"
}
```
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@ sidebar_position: 7

## Wo wird es verwendet \{#where-to-use-it}

Die Organisationsliste erscheint typischerweise während des Benutzer-Onboarding-Flows. Zum Beispiel, wenn ein Administrator dich einlädt, einem Arbeitsbereich beizutreten.
Die Organisationsliste und der Beitrittsprozess erscheinen in der Regel während des Benutzer-Onboardings.
Zum Beispiel, wenn ein Administrator jemanden zu einem Arbeitsbereich einlädt, der Benutzer jedoch die E-Mail-Einladung überspringt und sich direkt in der App anmeldet oder registriert.

Aus Produktsicht kann sie an zwei Hauptstellen erscheinen:
In deinem Produkt möchtest du möglicherweise Einstiegspunkte für diesen Ablauf hinzufügen.
Er kann an zwei Hauptstellen erscheinen:

- Der **Organisationsfinder** während der Anmeldung oder Registrierung

Expand All @@ -24,12 +26,12 @@ Aus Produktsicht kann sie an zwei Hauptstellen erscheinen:
alt="Organisation innerhalb der App beitreten"
/>

## Die Logto Management API verwenden, um Benutzern das Beitreten zu einer Organisation zu ermöglichen \{#use-the-logto-management-api-to-let-users-join-an-organization}
## Verwende die Logto Management API, um Benutzern den Beitritt zu einer Organisation zu ermöglichen \{#use-the-logto-management-api-to-let-users-join-an-organization}

Im vorherigen Abschnitt haben wir das Erstellen und Versenden von Organisationseinladungen mit der Logto Management API behandelt.
Als Nächstes implementierst du eine Landingpage, die den Einladungslink verarbeitet, wenn Eingeladene in deiner Anwendung ankommen.

- `GET /api/organization-invitations` und `GET /api/organization-invitations/{id}`: Hole alle Einladungen oder eine bestimmte Einladung per ID.
- `GET /api/organization-invitations` und `GET /api/organization-invitations/{id}`: Alle Einladungen oder eine bestimmte Einladung per ID abrufen.
Verwende diese APIs auf deiner Landingpage, um alle Einladungen aufzulisten oder die Details einer bestimmten Einladung anzuzeigen, die der Benutzer erhalten hat.
- `PUT /api/organization-invitations/{id}/status`: Akzeptiere oder lehne die Einladung ab, indem du ihren Status aktualisierst.
Verwende diese API, um auf die Antwort des Benutzers zu reagieren.
- `PUT /api/organization-invitations/{id}/status`: Die Einladung annehmen oder ablehnen, indem der Status aktualisiert wird.
Verwende diese API, um die Antwort des Benutzers zu verarbeiten.
Loading
Loading