Client Credentials Flow
Lær, hvordan dette flow muliggør machine-to-machine-godkendelse, hvor en client handler på egne vegne og ikke på vegne af en bruger.
Client Credentials Flow er en gratis OAuth2 og OpenID Connect i dybden-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i OAuth2 og OpenID Connect i dybden, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. OAuth2 og OpenID Connect i dybden-kurset indeholder 4 lektioner i alt.
Klientlegitimationsoplysninger: Introduktion
Velkommen til lektionen om Client Credentials-flowet! Dette flow er en særlig type OAuth2-tildeling, der er designet til maskine-til-maskine-godkendelse.
I modsætning til andre flows, hvor en bruger er involveret, handler en applikation ("klienten") her udelukkende på egne vegne.
Når apps taler med apps
Forestil dig, at du har en backendtjeneste, der skal tilgå en API for at opdatere data, eller et planlagt job, der henter rapporter fra et andet system.
I disse scenarier er der ingen slutbruger til stede, som kan logge ind eller give samtykke. Applikationen skal selv bevise sin identitet og godkende sin egen adgang.
Vigtige roller uden en bruger
Client Credentials-flowet involverer færre aktører end brugercentrerede flows:
- Klient: Din applikation (f.eks. en backendtjeneste eller en dæmon).
- Autorisationserver: Bekræfter klientens identitet og udsteder et adgangstoken.
- Ressourceserver: Er vært for de beskyttede ressourcer (API'er), som klienten vil tilgå.
Hvem mangler? Ressourceejeren (slutbrugeren).
Sådan fungerer flowet
Processen er enkel:
- Klienten sender sit
client_idog sinclient_secretdirekte til autorisationserveren. - Autorisationserveren validerer disse legitimationsoplysninger.
- Hvis de er gyldige, udsteder autorisationserveren et adgangstoken direkte til klienten.
- Klienten bruger derefter dette adgangstoken til at tilgå beskyttede ressourcer på ressourceserveren.
Din apps hemmelige identitet
client_id er en offentlig identifikator for din applikation, omtrent som et brugernavn.
client_secret er en fortrolig værdi, som kun din applikation og autorisationserveren kender. Tænk på den som din apps adgangskode.
Det er disse legitimationsoplysninger, som klienten bruger til at autentificere sig over for autorisationserveren.
Anmodning om et adgangstoken
Her er et forenklet Python-eksempel på, hvordan en klient kan anmode om et adgangstoken ved hjælp af sine legitimationsoplysninger. grant_type skal være client_credentials.
import requests
import json
# Replace with your actual credentials & endpoint
CLIENT_ID = "my_backend_app"
CLIENT_SECRET = "super_secret_key"
TOKEN_ENDPOINT = "https://auth.example.com/oauth/token"
def get_access_token():
payload = {
"grant_type": "client_credentials",
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET
}
try:
response = requests.post(TOKEN_ENDPOINT, data=payload)
response.raise_for_status() # Raise for HTTP errors
token_data = response.json()
print("\nToken received:")
print(json.dumps(token_data, indent=2))
return token_data.get("access_token")
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
return None
if __name__ == "__main__":
# Run this code to see a mock token request
# You might need 'pip install requests'
get_access_token()Forstå svaret
Efter en vellykket autentificering returnerer autorisationserveren et JSON-svar, der indeholder adgangstokenet og andre oplysninger:
access_token: Det token, der skal bruges til API-kald.token_type: Normalt "Bearer".expires_in: Hvor længe tokenet er gyldigt (i sekunder).
Dette adgangstoken bruges derefter i efterfølgende anmodninger til ressourceserveren.
Brug af adgangstokenet
Når adgangstokenet er modtaget, medtages det i Authorization-headeren i anmodninger til ressourceserveren. Det fortæller ressourceserveren, at klienten har tilladelse til at tilgå de ønskede data.
import requests
import json
# Placeholder for a token you'd get from the Auth Server
# In a real app, this would be dynamic.
ACCESS_TOKEN = "your_actual_access_token_here"
RESOURCE_API_URL = "https://api.example.com/data/reports"
def call_protected_resource(token):
if not token or token == "your_actual_access_token_here":
print("Error: Token is missing or a placeholder.")
return
headers = {
"Authorization": f"Bearer {token}",
"Accept": "application/json"
}
try:
response = requests.get(RESOURCE_API_URL, headers=headers)
response.raise_for_status() # Raise for HTTP errors
api_data = response.json()
print("\nResource data received:")
print(json.dumps(api_data, indent=2))
except requests.exceptions.RequestException as e:
print(f"Error accessing resource: {e}")
if __name__ == "__main__":
# Run this code with a valid token to mock API access
# You might need 'pip install requests'
call_protected_resource(ACCESS_TOKEN)Praktiske anvendelser
Client Credentials-flowet er velegnet til:
- Backendtjenester: En mikrotjeneste, der kalder en anden mikrotjeneste.
- Dæmonapplikationer: Baggrundsjob, der kører regelmæssigt uden brugerindblanding.
- Automatiserede scripts: Scripts, der skal kommunikere med en API (f.eks. til klargøring eller overvågning).
- API-gateways: Når gatewayen autentificerer sig selv, mens den videresender anmodninger til interne tjenester.
Bedste sikkerhedspraksis
Selvom der ikke er nogen bruger, er sikkerhed afgørende:
- Beskyt klienthemmeligheden: Hardkod aldrig hemmeligheder. Brug miljøvariabler, tjenester til håndtering af hemmeligheder (f.eks. AWS Secrets Manager eller HashiCorp Vault) eller konfigurationsfiler.
- HTTPS: Brug altid HTTPS til al kommunikation for at beskytte legitimationsoplysninger og tokens under overførslen.
- Tokenudløb: Adgangstokens har en kort levetid. Håndtér fornyelse eller nye anmodninger om dem.
- Begræns omfanget: Anmod kun om de nødvendige tilladelser (scopes) til din klient.
Hurtigt tjek
Hvilke af følgende udsagn beskriver Client Credentials-flowet korrekt?
Opsummering: Client Credentials
I denne lektion har du lært om Client Credentials-flowet, en robust OAuth2-tildelingstype til maskine-til-maskine-godkendelse.
- Det giver applikationer mulighed for at hente adgangstokens ved hjælp af deres eget
client_idogclient_secret. - Der er ingen brugerinteraktion eller samtykke involveret.
- Det er ideelt til baggrundstjenester, dæmonapps og kommunikation fra API til API.
- Beskyt altid dine klientlegitimationsoplysninger, og brug HTTPS.
Lær OAuth2 og OpenID Connect i dybden med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Client Credentials Flow” gratis?
Ja — alle 3 lektioner i læringssporet OAuth2 og OpenID Connect i dybden, inklusive “Client Credentials Flow”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. OAuth2 og OpenID Connect i dybden-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Client Credentials Flow”?
Lær, hvordan dette flow muliggør machine-to-machine-godkendelse, hvor en client handler på egne vegne og ikke på vegne af en bruger. Du øver dig i OAuth2 og OpenID Connect i dybden med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på OAuth2 og OpenID Connect i dybden?
Der kræves ingen tidligere erfaring. OAuth2 og OpenID Connect i dybden på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Client Credentials Flow”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne OAuth2 og OpenID Connect i dybden-lektion?
Ja. Alle OAuth2 og OpenID Connect i dybden-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Authorization Code Flow
- Client Credentials Flow
- Implicit Flow og udfasning
- Device Authorization Grant