# Speichern Sie geheime Anmeldedaten und Token Verwenden Sie die Secret Store API, um sensible Daten wie Authentifizierungsdaten dauerhaft zu speichern. Die [Secret Store API](https://docs.stripe.com/api/secret_management.md) ist eine Möglichkeit, dauerhafte Geheimschlüssel, die in Stripe Apps verwendet werden, sicher festzulegen, zu finden, aufzulisten und zu löschen. Diese Anmeldedaten, auch als Geheimschlüssel bezeichnet, sind nur für Ihre App und die Nutzer/innen zugänglich, denen sie gehören. ## Übersicht Mit der Secret Store API kann Ihre App: - Authentifizierungs-Zugangsdaten sicher speichern und abrufen - Ermöglichen Sie Endnutzer/innen, bei Drittanbieterdiensten authentifiziert zu bleiben, auch wenn sie sich bei `stripe.com` abmelden und wieder anmelden. - Sichere Übergabe von Geheimschlüsseln zwischen Ihrer Nutzeroberflächen-Erweiterung und dem Backend > Stripe *untersagt* das Speichern von sensiblen personenbezogenen Daten und persönlichen Kontonummern wie Kreditkartennummern und anderen Daten im Rahmen der *PCI-Konformität* (Any party involved in processing, transmitting, or storing credit card data must comply with the rules specified in the Payment Card Industry (PCI) Data Security Standards. PCI compliance is a shared responsibility and applies to both Stripe and your business) mit der Secret Store API. ### Bereiche Die Geheimschlüssel einer hochgeladenen App sind nur für andere Apps zugänglich, die Sie hochgeladen haben. Sie können nur eine App in einem Konto veröffentlichen, daher können veröffentlichte Apps niemals Geheimschlüssel teilen. Anfragen von Drittanbieter-Apps können niemals auf die Geheimschlüssel Ihrer Apps zugreifen. Verwenden Sie Geltungsbereiche, um die Zugänglichkeit eines bestimmten Geheimschlüssels festzulegen. Ein Geltungsbereich ist eine Sammlung von Geheimschlüsseln, die durch ihre Zugänglichkeit gekennzeichnet sind. Die Secret Store API unterstützt die folgenden Bereichstypen: | Bereichstyp | Bereichsgrenzen | Speichert bis zu | Verwenden für | Zugänglich für | | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | | [Kontobereich](https://docs.stripe.com/api/apps/secret_store/secret_resource.md#secret_object-scope) | Es gibt einen `account`-Bereich pro App. Beispiel: API-Schlüssel eines Drittanbieters | Höchstens 10 [Geheimschlüssel](https://docs.stripe.com/api/apps/secret_store/secret_resource.md) | Geheimnisse, die für alle Nutzer/innen eines Stripe Kontos gelten, das Ihre App installiert | Alle Dashboard-Nutzer/innen eines Stripe-Kontos und das Backend der App, auf Pro-App-Basis | | [Nutzerbereich](https://docs.stripe.com/api/apps/secret_store/secret_resource.md#secret_object-scope) | Jede/r Nutzer/in hat einen `user`-Bereich pro App. Beispiel: OAuth-Zugriffstoken | Höchstens 10 [Geheimschlüssel](https://docs.stripe.com/api/apps/secret_store/secret_resource.md) | Geheimnisse, die nur für eine/n bestimmte/n Nutzer/in eines Stripe-Kontos gelten | Ein/e bestimmte/r Dashboard-Nutzer/in eines Stripe-Kontos und das Backend der App, auf Pro-App-Basis | Das folgende Diagramm zeigt die Geheimnisbereiche zwischen den folgenden Elementen: - Das Stripe-Konto: „Das Cactus Übungs-Stripe-Konto” - Zwei Nutzer/innen, die sich dasselbe Stripe-Konto teilen: „Nutzer/in 1“, „Nutzer/in 2“ - Zwei verschiedene Apps, die vom Stripe-Konto installiert werden: „Installierte App A”, „Installierte App B” - `account`-bezogene Geheimschlüssel: „Foo API-Schlüssel“-Geheimnis für App A, „Bar API-Schlüssel“ für App B - `user`-bezogene Geheimschlüssel: „OAuth Zugriffs-Token”, „OAuth Aktualisierungs-Token” ![Beziehung zum Geheimschlüssel des Kontos](https://b.stripecdn.com/docs-statics-srv/assets/secret_scoping_diagram.32c3c7d35e007d261389cf593bec470f.png) Die bereichsbezogenen Geheimschlüssel von zwei verschiedenen Apps, die vom Cactus Übungs-Stripe-Konto installiert wurden. ### Ablaufdatum Wenn ein Geheimschlüssel irgendwann in der Zukunft ungültig wird, können Sie einen Ablaufzeitpunkt angeben, indem Sie den optionalen Parameter [expires_at](https://docs.stripe.com/api/apps/secret_store/secret_resource.md#secret_object-expires_at) festlegen, wenn Sie einen [Geheimschlüssel festlegen](https://docs.stripe.com/stripe-apps/store-secrets.md#set-a-secret). Dieser Parameter enthält einen Unix-Zeitstempel (die Anzahl der Sekunden, die seit der letzten Unix-Epoche vergangen sind). Nachdem das Datum unter `expires_at` verstrichen ist, wird der Geheimschlüssel automatisch aus der Secret Store API gelöscht. Die Ablaufzeit kann nicht in der Vergangenheit liegen und darf nicht mehr als 100 Jahre in der Zukunft liegen. ## Geheimnis einrichten 1. Fügen Sie die Berechtigung `secret_write` zu Ihrer App hinzu: ```bash stripe apps grant permission "secret_write" "Allows storing secrets between page reloads" ``` 1. Richten Sie ein Geheimnis nach Name und Umfang in der Secret Store API ein. Sie können den folgenden Beispielcode in der Nutzeroberflächen-Erweiterung oder im Backend Ihrer App verwenden: #### Nutzeroberflächen-Erweiterung ```javascript import { createHttpClient, STRIPE_API_KEY } from '@stripe/ui-extension-sdk/http_client'; import Stripe from 'stripe'; import type { ExtensionContextValue } from '@stripe/ui-extension-sdk/context'; import { useEffect } from 'react'; // Create an instance of a Stripe object to access customer information. // You don't need an API Key here, because the app uses the // dashboard credentials to make requests. const stripe: Stripe = new Stripe(STRIPE_API_KEY, { httpClient: createHttpClient() as Stripe.HttpClient, apiVersion: '2026-03-25.dahlia', }); const App = ({userContext}: ExtensionContextValue) => { useEffect(() => { stripe.apps.secrets.create({ scope: { type: 'user', user: userContext.id }, name: 'secret_name', payload: 'secret value', expires_at: 1956528000 // optional }).then(resp => console.log(resp)); }, []); return null; }; export default App; ``` Weitere Informationen finden Sie in der API-Dokumentation zum [Einrichten von Geheimschlüsseln](https://docs.stripe.com/api/apps/secret_store/set.md). ## Geheimnis finden Sie können den Geheimschlüssel nach Name und Umfang in der Secret Store API suchen. Verwenden Sie den folgenden Beispielcode in der Nutzeroberflächen-Erweiterung oder im Backend Ihrer App: #### Nutzeroberflächen-Erweiterung ```javascript import Stripe from 'stripe'; import { createHttpClient, STRIPE_API_KEY } from '@stripe/ui-extension-sdk/http_client'; import type { ExtensionContextValue } from '@stripe/ui-extension-sdk/context'; import { useEffect } from 'react'; // Create an instance of a Stripe object to access customer information. // You don't need to use an API key, because the app uses the // dashboard credentials to make requests. const stripe: Stripe = new Stripe(STRIPE_API_KEY, { httpClient: createHttpClient() as Stripe.HttpClient, apiVersion: '2026-03-25.dahlia', }); const App = ({userContext}: ExtensionContextValue) => { useEffect(() => { stripe.apps.secrets.find({ scope: { type: 'user', user: userContext.id }, name: 'secret_name', expand: ['payload'], }).then(resp => console.log(resp.payload)); }, []); return null; }; export default App; ``` Weitere Informationen finden Sie unter [Geheimschlüssel finden](https://docs.stripe.com/api/apps/secret_store/find.md). ## Geheimnis löschen Um ein Geheimnis nach Name und Umfang in der Secret Store API zu löschen, können Sie den folgenden Beispielcode in der Nutzeroberflächen-Erweiterung oder im Backend Ihrer App verwenden: #### Nutzeroberflächen-Erweiterung ```javascript import Stripe from 'stripe'; import { createHttpClient, STRIPE_API_KEY } from '@stripe/ui-extension-sdk/http_client'; import type { ExtensionContextValue } from '@stripe/ui-extension-sdk/context'; import { useEffect } from 'react'; // Create an instance of a Stripe object to access customer information. // Note that you don't need to use an API key, because the app uses the // dashboard credentials to make requests. const stripe: Stripe = new Stripe(STRIPE_API_KEY, { httpClient: createHttpClient() as Stripe.HttpClient, apiVersion: '2026-03-25.dahlia', }); const App = ({userContext}: ExtensionContextValue) => { useEffect(() => { stripe.apps.secrets.deleteWhere({ scope: { type: 'user', user: userContext.id }, name: 'secret_name', }).then(resp => console.log(resp)); }, []); return null; }; export default App; ``` Weitere Informationen finden Sie unter [Geheimschlüssel löschen](https://docs.stripe.com/api/apps/secret_store/delete.md). ## Geheimnisse auflisten Wenn Sie die Höchstzahl an Geheimschlüsseln in einem `account`- oder `user`-Bereich gespeichert haben und einen weiteren Geheimschlüssel hinzufügen möchten, müssen Sie mindestens einen der 10 Geheimschlüssel löschen. Um zu bestimmen, welche Geheimschlüssel gelöscht werden sollen, können Sie alle Geheimschlüssel für einen bestimmten Bereich auflisten. Um die Geheimnisse eines `account`- oder `user`-Umfangs aufzulisten, können Sie den folgenden Beispielcode in der Nutzeroberflächen-Erweiterung oder im Backend Ihrer App verwenden: #### Nutzeroberflächen-Erweiterung ```javascript import Stripe from 'stripe'; import { createHttpClient, STRIPE_API_KEY } from '@stripe/ui-extension-sdk/http_client'; import type { ExtensionContextValue } from '@stripe/ui-extension-sdk/context'; import { useEffect } from 'react'; // Create an instance of a Stripe object to access customer information. // Note that you don't need to use an API key, because the app uses the // dashboard credentials to make requests. const stripe: Stripe = new Stripe(STRIPE_API_KEY, { httpClient: createHttpClient() as Stripe.HttpClient, apiVersion: '2026-03-25.dahlia', }); const App = ({userContext}: ExtensionContextValue) => { useEffect(() => { stripe.apps.secrets.list({ scope: { type: 'user', user: userContext.id }, }).then(resp => console.log(resp.data)); }, []); return null; }; export default App; ``` Weitere Informationen finden Sie unter [Geheimschlüssel auflisten](https://docs.stripe.com/api/apps/secret_store/list.md). ## Beispiel-Apps Die folgenden Beispiel-Apps zeigen, wie die Secret Store API verwendet wird: - [Einfache Demo-App](https://github.com/stripe/stripe-apps/tree/master/examples/secret-store) - [Dropbox OAuth mit PKCE-App](https://github.com/stripe/stripe-apps/tree/master/examples/dropbox-oauth-pkce) ## See also - [Autorisierungsabläufe](https://docs.stripe.com/stripe-apps/pkce-oauth-flow.md) - [Serverseitige Logik](https://docs.stripe.com/stripe-apps/build-backend.md) - [Nutzeroberfläche erstellen](https://docs.stripe.com/stripe-apps/build-ui.md)