Temporäre Tokens sind kurzlebige Authentifizierungstokens für den Zugriff auf die Gemini API über WebSockets. Sie sollen die Sicherheit verbessern, wenn Sie direkt vom Gerät eines Nutzers aus eine Verbindung zur API herstellen (eine Client-zu-Server-Implementierung). Wie Standard-API-Schlüssel können auch sitzungsspezifische Tokens aus clientseitigen Anwendungen wie Webbrowsern oder mobilen Apps extrahiert werden. Da temporäre Tokens jedoch schnell ablaufen und eingeschränkt werden können, verringern sie die Sicherheitsrisiken in einer Produktionsumgebung erheblich.
Funktionsweise von temporären Tokens
So funktionieren temporäre Tokens im Allgemeinen:
- Ihr Client (z.B. eine Web-App) authentifiziert sich bei Ihrem Backend.
- Ihr Backend fordert ein temporäres Token vom Bereitstellungsdienst der Gemini API an.
- Die Gemini API gibt ein kurzlebiges Token aus.
- Ihr Backend sendet das Token an den Client für WebSocket-Verbindungen zur Live API. Dazu können Sie Ihren API-Schlüssel durch ein temporäres Token ersetzen.
- Der Client verwendet das Token dann so, als wäre es ein API-Schlüssel.
Das erhöht die Sicherheit, da das Token auch im Fall eines Diebstahls nur kurzlebig ist. Das ist anders als bei einem langlebigen API-Schlüssel, der clientseitig bereitgestellt wird. Da der Client Daten direkt an Gemini sendet, wird auch die Latenz verbessert und Ihre Back-Ends müssen die Echtzeitdaten nicht weiterleiten.
Sitzungsspezifisches Token erstellen
Hier ist ein vereinfachtes Beispiel dafür, wie Sie ein temporäres Token von Gemini erhalten.
Standardmäßig haben Sie eine Minute Zeit, um neue Live API-Sitzungen mit dem Token aus dieser Anfrage (newSessionExpireTime
) zu starten, und 30 Minuten Zeit, um Nachrichten über diese Verbindung (expireTime
) zu senden.
Python
import datetime
now = datetime.datetime.now(tz=datetime.timezone.utc)
client = genai.Client(
http_options={'api_version': 'v1alpha',}
)
token = client.auth_tokens.create(
config = {
'uses': 1, # The ephemeral token can only be used to start a single session
'expire_time': now + datetime.timedelta(minutes=30), # Default is 30 minutes in the future
# 'expire_time': '2025-05-17T00:00:00Z', # Accepts isoformat.
'new_session_expire_time': now + datetime.timedelta(minutes=1), # Default 1 minute in the future
'http_options': {'api_version': 'v1alpha'},
}
)
# You'll need to pass the value under token.name back to your client to use it
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const expireTime = new Date(Date.now() + 30 * 60 * 1000).toISOString();
const token: AuthToken = await client.authTokens.create({
config: {
uses: 1, // The default
expireTime: expireTime // Default is 30 mins
newSessionExpireTime: new Date(Date.now() + (1 * 60 * 1000)), // Default 1 minute in the future
httpOptions: {apiVersion: 'v1alpha'},
},
});
Informationen zu Einschränkungen, Standardwerten und anderen Feldspezifikationen für expireTime
finden Sie in der API-Referenz.
Innerhalb des Zeitraums von expireTime
müssen Sie sessionResumption
, um die Verbindung alle 10 Minuten wiederherzustellen. Das kann mit demselben Token erfolgen, auch wenn uses: 1
.
Es ist auch möglich, ein temporäres Token für eine Reihe von Konfigurationen zu sperren. Das kann nützlich sein, um die Sicherheit Ihrer Anwendung weiter zu verbessern und Ihre Systemanweisungen auf der Serverseite zu behalten.
Python
client = genai.Client(
http_options={'api_version': 'v1alpha',}
)
token = client.auth_tokens.create(
config = {
'uses': 1,
'live_connect_constraints': {
'model': 'gemini-2.0-flash-live-001',
'config': {
'session_resumption':{},
'temperature':0.7,
'response_modalities':['TEXT']
}
},
'http_options': {'api_version': 'v1alpha'},
}
)
# You'll need to pass the value under token.name back to your client to use it
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const expireTime = new Date(Date.now() + 30 * 60 * 1000).toISOString();
const token = await client.authTokens.create({
config: {
uses: 1, // The default
expireTime: expireTime,
liveConnectConstraints: {
model: 'gemini-2.0-flash-live-001',
config: {
sessionResumption: {},
temperature: 0.7,
responseModalities: ['TEXT']
}
},
httpOptions: {
apiVersion: 'v1alpha'
}
}
});
// You'll need to pass the value under token.name back to your client to use it
Sie können auch eine Teilmenge von Feldern sperren. Weitere Informationen finden Sie in der SDK-Dokumentation.
Mit einem temporären Token eine Verbindung zur Live API herstellen
Sobald Sie ein temporäres Token haben, verwenden Sie es so, als wäre es ein API-Schlüssel. Es funktioniert jedoch nur für die Live-API und nur mit der v1alpha
-Version der API.
Die Verwendung von temporären Tokens ist nur bei der Bereitstellung von Anwendungen sinnvoll, die dem Client-zu-Server-Implementierungsansatz folgen.
JavaScript
import { GoogleGenAI, Modality } from '@google/genai';
// Use the token generated in the "Create an ephemeral token" section here
const ai = new GoogleGenAI({
apiKey: token.name
});
const model = 'gemini-2.0-flash-live-001';
const config = { responseModalities: [Modality.TEXT] };
async function main() {
const session = await ai.live.connect({
model: model,
config: config,
callbacks: { ... },
});
// Send content...
session.close();
}
main();
Weitere Beispiele finden Sie unter Erste Schritte mit der Live API.
Best Practices
- Legen Sie mit dem Parameter
expire_time
eine kurze Ablaufdauer fest. - Tokens laufen ab und der Bereitstellungsprozess muss neu gestartet werden.
- Sichere Authentifizierung für Ihr eigenes Backend überprüfen Die Sicherheit von Einmaltokens hängt von der Authentifizierungsmethode Ihres Back-Ends ab.
- Im Allgemeinen sollten Sie keine temporären Tokens für Backend-zu-Gemini-Verbindungen verwenden, da dieser Pfad in der Regel als sicher gilt.
Beschränkungen
Kurzlebige Tokens sind derzeit nur mit der Live API kompatibel.
Nächste Schritte
- Weitere Informationen finden Sie in der Live API-Referenz zu temporären Tokens.