Authentifizierung: API-Keys und OAuth
Bearer-Tokens, API-Key-Header und OAuth2-Flows für den API-Zugriff von Agenten.
Authentifizierung: API-Keys und OAuth ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Agents-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Warum Authentifizierung für Agenten wichtig ist
Wenn Ihr Agent eine externe API aufruft, muss der Server wissen, wer die Anfrage stellt. Authentifizierung weist die Identität nach; Autorisierung bestimmt, was Sie tun dürfen. Ohne korrekte Authentifizierung gibt jede Anfrage 401 Unauthorized zurück, und Ihr Agent kann nichts tun.
Zwei Muster dominieren die Entwicklung von Agenten: API-Schlüssel und OAuth 2.0.
import requests
# Without auth — will get 401
response = requests.get('https://api.openai.com/v1/models')
print(response.status_code) # 401 Unauthorized
# With API key in header — works
headers = {'Authorization': 'Bearer sk-proj-abc123'}
response = requests.get(
'https://api.openai.com/v1/models',
headers=headers
)
print(response.status_code) # 200API-Schlüssel im Authorization-Header
Das gängigste Muster besteht darin, Ihren API-Schlüssel im Authorization-Header als Bearer-Token zu senden. Das Wort „Bearer“ signalisiert, dass jeder, der diesen Token besitzt, autorisiert ist – der Server vertraut dem Inhaber des Schlüssels.
Dieses Muster wird von OpenAI, Anthropic, GitHub und den meisten modernen APIs verwendet.
import requests
import os
api_key = os.environ['OPENAI_API_KEY']
response = requests.post(
'https://api.openai.com/v1/chat/completions',
headers={
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
},
json={
'model': 'gpt-4o-mini',
'messages': [{'role': 'user', 'content': 'Hello!'}]
}
)
print(response.json()['choices'][0]['message']['content'])API-Schlüssel in einem benutzerdefinierten Header (X-API-Key)
Einige APIs – insbesondere ältere oder interne – verwenden statt Authorization: Bearer einen benutzerdefinierten Header wie X-API-Key. Das Muster ist dasselbe, nur der Name des Headers ist anders. Prüfen Sie immer die API-Dokumentation auf den genau erwarteten Header-Namen.
import requests
import os
api_key = os.environ['SERVICE_API_KEY']
response = requests.get(
'https://api.someservice.com/v1/data',
headers={
'X-API-Key': api_key,
'Accept': 'application/json'
}
)
if response.status_code == 200:
data = response.json()
print('Got data:', data)
elif response.status_code == 401:
print('Invalid API key — check X-API-Key header')Anmeldedaten in Umgebungsvariablen speichern
Tragen Sie API-Schlüssel niemals fest in Ihren Quellcode ein. Wenn Sie einen Schlüssel in ein öffentliches Repository committen, finden und missbrauchen Bots ihn innerhalb von Sekunden. Das richtige Muster besteht darin, Anmeldedaten in Umgebungsvariablen zu speichern und sie zur Laufzeit mit os.environ auszulesen.
Verwenden Sie os.environ.get() mit einer eindeutigen Fehlermeldung, wenn der Schlüssel fehlt.
import os
os.environ['OPENAI_API_KEY'] = 'sk-proj-abc123xyz789' # simulate a set env var
api_key = os.environ.get('OPENAI_API_KEY')
if not api_key:
raise EnvironmentError(
'OPENAI_API_KEY environment variable not set. '
'Run: export OPENAI_API_KEY=your-key-here'
)
print('API key loaded from environment (never hard-code it in source)')python-dotenv für die lokale Entwicklung verwenden
Bewahren Sie Ihre Schlüssel während der Entwicklung in einer .env-Datei im Projektstammverzeichnis auf. Verwenden Sie die Bibliothek python-dotenv, um sie automatisch zu laden. Fügen Sie .env zu .gitignore hinzu, damit die Datei niemals committen wird.
# .env file (never commit this!)
# OPENAI_API_KEY=sk-proj-abc123
# ANTHROPIC_API_KEY=sk-ant-xyz456
# GITHUB_TOKEN=ghp_abc789
# In your Python code:
from dotenv import load_dotenv
import os
load_dotenv() # loads .env into os.environ
openai_key = os.environ['OPENAI_API_KEY']
anthropic_key = os.environ['ANTHROPIC_API_KEY']
github_token = os.environ['GITHUB_TOKEN']
print('Keys loaded successfully')Was ist OAuth 2.0?
OAuth 2.0 ist ein Standard für delegierte Autorisierung. Statt Ihrem Agenten das Passwort eines Nutzers zu geben, ermöglicht OAuth dem Nutzer, Ihren Agenten zu autorisieren, in seinem Namen zu handeln – mit begrenztem Geltungsbereich und zeitlich begrenzter Gültigkeit. OAuth wird von Google, GitHub, Slack und Salesforce verwendet.
Das zentrale Konzept: Ihr Agent erhält nach einem Autorisierungsablauf einen Access-Token und verwendet diesen anschließend für API-Aufrufe.
# OAuth flow overview:
#
# 1. Agent redirects user to:
# https://auth.provider.com/oauth/authorize
# ?client_id=YOUR_CLIENT_ID
# &redirect_uri=http://localhost:8080/callback
# &scope=read:repo%20write:issues
# &response_type=code
#
# 2. User logs in and grants permission
# 3. Provider redirects to your callback with ?code=AUTH_CODE
# 4. Agent exchanges code for access_token
# 5. Agent uses access_token for API calls
print('OAuth flow: authorize -> code -> token -> API calls')OAuth2 Client-Credentials-Flow
Der Client-Credentials-Flow ist der einfachste OAuth-Flow für Agenten – es ist keine Benutzerinteraktion erforderlich. Ihr Agent authentifiziert sich mit seiner eigenen Client-ID und seinem eigenen Secret, um ein Token zu erhalten. Dieser Flow wird für die Maschine-zu-Maschine-Kommunikation (M2M) verwendet.
Sie senden Ihre Anmeldedaten per POST an den Token-Endpunkt und erhalten ein kurzlebiges Zugriffstoken.
import requests
import os
client_id = os.environ['OAUTH_CLIENT_ID']
client_secret = os.environ['OAUTH_CLIENT_SECRET']
token_url = 'https://auth.example.com/oauth/token'
# Request an access token
response = requests.post(token_url, data={
'grant_type': 'client_credentials',
'client_id': client_id,
'client_secret': client_secret,
'scope': 'read:data write:tasks'
})
token_data = response.json()
access_token = token_data['access_token']
expires_in = token_data['expires_in'] # seconds
print(f'Token valid for {expires_in}s')OAuth-Tokens in API-Aufrufen verwenden
Sobald Sie ein OAuth-Zugriffstoken haben, verwenden Sie es genau wie einen API-Schlüssel – im Authorization: Bearer-Header. Der Unterschied besteht darin, dass OAuth-Tokens ablaufen. Ihr Agent muss daher vor API-Aufrufen die Token-Erneuerung durchführen.
import requests
import os
import time
class OAuthClient:
def __init__(self, client_id, client_secret, token_url):
self.client_id = client_id
self.client_secret = client_secret
self.token_url = token_url
self.access_token = None
self.token_expiry = 0
def get_token(self):
if time.time() < self.token_expiry - 60: # 60s buffer
return self.access_token
r = requests.post(self.token_url, data={
'grant_type': 'client_credentials',
'client_id': self.client_id,
'client_secret': self.client_secret
})
data = r.json()
self.access_token = data['access_token']
self.token_expiry = time.time() + data['expires_in']
return self.access_token
def get(self, url):
token = self.get_token()
return requests.get(url, headers={'Authorization': f'Bearer {token}'})OAuth 2.0 mit der google-auth-Bibliothek
Für Google-APIs übernimmt die google-auth-Bibliothek die gesamte OAuth-Komplexität für Sie. Sie verwaltet die Token-Erneuerung automatisch, liest Anmeldedaten aus einer JSON-Datei und fügt Tokens über eine AuthorizedSession an Anfragen an.
from google.oauth2 import service_account
from google.auth.transport.requests import AuthorizedSession
# Load service account credentials from JSON file
credentials = service_account.Credentials.from_service_account_file(
'service-account.json',
scopes=[
'https://www.googleapis.com/auth/gmail.readonly',
'https://www.googleapis.com/auth/calendar.events'
]
)
# AuthorizedSession auto-refreshes tokens
session = AuthorizedSession(credentials)
response = session.get(
'https://www.googleapis.com/gmail/v1/users/me/messages'
)
print(response.json())Best Practices zur Sicherheit von API-Schlüsseln
Der Schutz von API-Schlüsseln ist für die Sicherheit von Agenten entscheidend. Befolgen Sie diese Regeln:
- Speichern Sie Schlüssel in Umgebungsvariablen oder einem Secrets Manager (AWS Secrets Manager, HashiCorp Vault).
- Protokollieren Sie Schlüssel niemals – maskieren Sie sie in der Ausgabe.
- Rotieren Sie Schlüssel regelmäßig und widerrufen Sie kompromittierte Schlüssel sofort.
- Wenden Sie das Prinzip der geringsten Berechtigungen an – fordern Sie nur die Scopes an, die Ihr Agent benötigt.
- Setzen Sie IP-Allowlisten für API-Schlüssel, sofern der Anbieter dies unterstützt.
import os
os.environ['OPENAI_API_KEY'] = 'sk-proj-abc123xyz789'
def get_key(env_var):
key = os.environ.get(env_var)
if not key:
raise EnvironmentError(f'Missing required env var: {env_var}')
return key
def mask_key(key):
if len(key) < 8:
return '***'
return key[:4] + '...' + key[-4:]
api_key = get_key('OPENAI_API_KEY')
print(f'Using key: {mask_key(api_key)}')Umgang mit 401 Unauthorized in Ihrem Agenten
Wenn ein Agent eine 401 Unauthorized-Antwort erhält, sollte er niemals blind wiederholen – dadurch wird das Rate-Limit-Kontingent verschwendet. Prüfen Sie stattdessen, ob das Token abgelaufen ist (versuchen Sie, es zu erneuern) oder ob der Schlüssel selbst ungültig ist (lösen Sie sofort einen Alarm aus, damit eine Person das Problem beheben kann).
import requests
import os
def call_api_with_auth_check(url, api_key):
response = requests.get(
url,
headers={'Authorization': f'Bearer {api_key}'}
)
if response.status_code == 401:
error = response.json().get('error', {})
code = error.get('code', 'unknown')
if code == 'token_expired':
print('Token expired — refresh needed')
# trigger token refresh flow
else:
raise PermissionError(
f'API key rejected: {error.get("message", "401 Unauthorized")}'
)
response.raise_for_status()
return response.json()Kurztest: Speicherung von API-Schlüsseln
Testen Sie Ihr Verständnis der Verwaltung von Anmeldedaten.
Zusammenfassung: Authentifizierung
Sie haben die beiden wichtigsten Authentifizierungsmuster für Agenten kennengelernt:
- API-Schlüssel – werden im
Authorization: Bearer TOKEN- oderX-API-Key-Header übergeben; einfach und zustandslos - OAuth 2.0 – Client-Credentials-Flow für M2M; Tokens laufen ab und müssen erneuert werden
- Speichern Sie Schlüssel immer in Umgebungsvariablen, niemals im Quellcode.
- Verwenden Sie lokal python-dotenv; in der Produktion Umgebungsvariablen oder Secrets Manager.
- Behandeln Sie 401-Antworten, indem Sie prüfen, ob das Token abgelaufen oder der Schlüssel ungültig ist.
Eine solide Authentifizierungsbehandlung ist das Fundament jedes zuverlässigen Agenten.
Lerne AI Agents mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 60
- Lektionen
- 239
Häufig gestellte Fragen
Ist die Lektion „Authentifizierung: API-Keys und OAuth“ kostenlos?
Ja — der vollständige Text von „Authentifizierung: API-Keys und OAuth“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Agents-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Authentifizierung: API-Keys und OAuth“?
Bearer-Tokens, API-Key-Header und OAuth2-Flows für den API-Zugriff von Agenten. Du übst AI Agents mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um AI Agents zu starten?
Keine Vorkenntnisse erforderlich. AI Agents auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Authentifizierung: API-Keys und OAuth“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser AI Agents-Lektion Code schreiben und ausführen?
Ja. Jede AI Agents-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- REST-API-Grundlagen für Agentenentwickler
- Authentifizierung: API-Keys und OAuth
- API-Responses und Fehler verarbeiten
- Rate Limiting und Retry-Logik