Programmatisk autentisering: API-nyckel, personlig åtkomsttoken och OAuth-klientuppgifter
Upptäck nyckelbegrepp och vanliga användningsfall för API-nyckel, personlig åtkomsttoken (PAT) och Logto Machine-to-Machine (M2M) uppgifter.
Bakgrund
Inom mjukvaruutveckling, när vi behöver programmatisk åtkomst till API-resurser via CLI-kommandon, eller etablera kommunikation mellan backend-tjänster, finns det vanligtvis tre autentiseringsmekanismer som vi utvecklare ofta använder: API-nyckel, personlig åtkomsttoken (PAT) och OAuth-klientuppgifter (varumärkta som Machine-to-Machine i Logto). Men vad är skillnaderna mellan dem? Vilket scenario passar bäst för varje metod? I detta blogginlägg kommer vi att gå igenom likheterna, skillnaderna och ge insikter om när man ska använda var och en i olika scenarier.
Definitioner
- API-nyckel: En enkel sträng som kan autentisera din begäran till en API-resurs.
- Personlig åtkomsttoken (PAT): Också en enkel sträng men representerar en användare när den används för att autentisera till en API-resurs. Det är en delegation av en användare.
- Logto Machine-to-Machine (Logto M2M): Ett standard OAuth-klientuppgiftsflöde, som kräver att en klient registreras i förväg, och det krävs att använda klient-ID och hemligt för att byta mot en åtkomsttoken. Således representerar Logto M2M uppgifter en betrodd klient och naturen av OAuth-klientuppgiftsflöde gör det relativt komplicerat att använda det.
Likheter
1. Autentiseringssyfte
- Alla tre, API-nyckel, PAT och Logto M2M, har huvudsyftet att autentisera en användare eller en applikation för att få åtkomst till en specifik tjänst eller resurs. De fungerar som uppgifter för att bevisa identiteten av den som begär, och används vanligtvis i CLI-kommandon eller backend-till-backend-kommunikationsscenarier.
2. Säkerhetsåtgärder
- Alla dessa tre autentiseringsmetoder bör hanteras med säkerhet i åtanke. Utvecklare måste säkerställa säker lagring och överföring för att förhindra obehörig åtkomst.
Skillnader
1. Användarkontext
- API-nyckel identifierar inte en huvudman, och ger inte heller någon auktorisationsinformation. Därför används API-nycklar ofta för att få åtkomst till offentliga data eller resurser anonymt. Alla tjänster stöds INTE av användandet av API-nycklar.
- PAT är användaridentiteter och kommer att representera en när den används för att begära en API-resurs. I vissa system får PATs inte tillgång till vissa tjänster. Till exempel Publicering av NuGet-paket till Azure Artifacts feed.
- Logto M2M uppgifter kan bara användas av betrodda klienter. Klienten måste registreras i förväg för att autentiseras. När du använder Logto M2M uppgifter, representerar det den betrodda klienten istället för användaren vem som använder den.
2. Detaljeringen av behörigheter
- PAT och Logto M2M-uppgifter erbjuder vanligtvis mer detaljerad kontroll över behörigheter jämfört med API-nyckel, vilket möjliggör finjusterad kontroll över vilka åtgärder som kan utföras.
3. Tokenformat
- API-nyckel och PAT är vanligtvis ogenomskinliga typer av strängar, enkla och enkla.
- Åtkomsttokens som utfärdas genom Logto M2M-mekanism är vanligtvis i JWT-format.
4. Auktorisationsflöde
- API-nyckel och PAT är systemgenererade ogenomskinliga strängar, inga autentiseringsflöden är inblandade under processen. Till exempel, du kan kalla Google Cloud natural language API så här:
- Logto M2M använder det standard OAuth 2.0-klientuppgiftsflödet. Varje klient måste erhålla ett par klient-ID och klienthemlighet i förväg, med vilket klienten kan byta mot en åtkomsttoken senare. Klienten använder sedan åtkomsttoken för att få åtkomst till API-resurs.
När man ska använda var och en
API-nyckel
- Tjänst-till-tjänst kommunikation: API-nycklar är lämpliga för scenarier där applikationer behöver kommunicera med API direkt genom CLI:er. Exempelvis Kalla OpenAI API:er.
- Offentliga API:er: När API:er exponeras mot allmänheten ger API-nycklar en enkel metod för åtkomstkontroll.
- Förenklad inställning: För snabba och enkla autentiseringsbehov, speciellt i utvecklingsfasen. Till skillnad från Logto M2M kräver inte API-nycklar klientregistrering i förväg och behöver inte bytas mot en åtkomsttoken. Du anger bara din API-nyckel som en parameter i din förfrågan och det fungerar bara.
Personlig åtkomsttoken (PAT)
- Användarspecifika åtgärder: När en applikation behöver utföra åtgärder å användarens vägnar.
- Detaljerad åtkomstkontroll (användare): När exakt kontroll över de åtgärder en användare kan utföra krävs.
Logto Machine-to-Machine (Logto M2M)
- Säkerhet: Logto M2M är idealiskt för scenarier där endast betrodda klienter får åtkomst till backend-tjänsterna.
- Detaljerad åtkomstkontroll (klient): När exakt kontroll över de åtgärder en applikation kan utföra krävs.
Slutsats
Sammanfattningsvis beror valet mellan API-nycklar, PATs och Logto M2M på de specifika kraven i din applikation, oavsett om det innefattar användarspecifika åtgärder, maskin-till-maskin-kommunikation, eller en kombination av båda. Bedöm säkerhets- och funktionsbehoven för att bestämma den mest lämpliga autentiseringsmetoden för ditt användningsfall.
Logto M2M-mekanism tillåter användare att ställa in detaljerade åtkomstkontroller över RBAC (rollbaserad åtkomstkontroll) funktion. Vi planerar också att stödja API-nyckel och PAT inom en snar framtid. Håll utkik efter våra funktionsuppdateringar!