Översikt
Steam använder många metoder för att bekräfta Steam-användares identitet och verifiera ägarskap av applikationer. Följande dokument beskriver var och en av dessa autentiseringsmetoder som används i följande scenarier:
Identifiering av en användare inom Steam
Varje Steam-användare kan identifieras med sitt
SteamID
, ett unikt 64-bitars numeriskt id. I Steamworks C++-API:er finns en användares SteamID i ett
CSteamID-objekt. Du kan hämta den aktuella användarens SteamID genom att anropa
ISteamUser::GetSteamID och sedan hämta det 64-bitars id:t genom att anropa
CSTeAmid.convertToUint64 ()
på det returnerade värdet.
Följande autentiseringsmetoder kan användas för att säkert verifiera en användares SteamID.
API:er som beskrivs i detta dokument
Sessionsbiljetter
Sessionsbiljetter är signerade biljetter som kan användas för att verifiera en användares identitet mellan användarens spelklient och valfritt antal andra spelklienter (till exempel i en peer-to-peer-flerspelarsession) eller till en lyssnande/dedikerad spelserver (med hjälp av API:et
ISteamGameServer). Dessa biljetter kan även användas för att verifiera ägarskapet till det aktuella spelet och relaterat nedladdningsbart innehåll, och avgöra om användaren har fått en VAC-avstängning (Se
Valve Anti-Cheat (VAC) and Game Bans).
Sessionsbiljetter kan användas för att verifiera en användares identitet mellan en spelklient och en säker backend-server med hjälp av
Steamworks-webb-API:et. Kräver att den säkra servern kan göra HTTPS-förfrågningar till
partner.steam-api.com
.
Krypterade applikationsbiljetter
Krypterade applikationsbiljetter kan användas för att verifiera en användares identitet mellan en spelklient och en säker backend-server. Till skillnad från sessionsbiljetter kräver verifiering av krypterade applikationsbiljetter
inte att den säkra servern kan göra HTTPS-förfrågningar. Istället används ett C ++-bibliotek och en privat, symmetrisk nyckel av den säkra servern för att verifiera biljetten. Steamworks-SDK:et innehåller 32-bitars och 64-bitars versioner av detta bibliotek till Windows och Linux i mappen
public/steam/lib
.
Innan du använder krypterade applikationsbiljetter måste du skapa en privat nyckel för varje titel. Du kan göra detta genom att navigera till Redigera Steamworks-inställningar för din applikation och välja SDK Auth från rullgardinsmenyn Säkerhet. Nyckeln kommer att associeras med titelns app-id och eventuellt nedladdningsbart innehåll till den titeln. För att komma åt den här delen av Steamworks måste användaren ha behörigheten Hantera signering för den aktuella applikationen.
OBS! Nycklarna måste förvaras på ett säkert sätt och får inte distribueras inom din app!
Webb-API för Steamworks
Steam har ett HTTP-baserat webb-API som kan användas för att komma åt många Steamworks-funktioner. API:et innehåller offentliga metoder som kan nås från alla applikationer som kan göra en HTTP-förfrågan, såsom en spelklient eller server. API:et innehåller också skyddade metoder som kräver autentisering och är avsedda att nås från pålitliga backend-applikationer. Mer information om webb-API:et finns
här.
P2P eller spelservrar
Sessionsbiljetter
Användarautentisering
I följande steg beskrivs hur du använder sessionsbiljetter för att verifiera en användares identitet mellan användarens spelklient (klient A) och en annan klient eller spelserver (klient B):
Några viktiga anmärkningar om sessionsbiljetter:
Verifiering av ägarskap
Vid användning av sessionsbiljetter verifierar Steam automatiskt ägandet av aktuellt app-id. Om användaren inte äger nuvarande app-id, anges
m_eAuthSessionResponse
-fältet i
ISteamUser::ValidateAuthTicketResponse_t till
k_EAuthSessionResponseNoLicenseOrpired. Efter att ha tagit emot en användares sessionsbiljett och skickat den till
ISteamUser::BeginAuthSession kan
ISteamUser::UserHasLicenseForApp användas för att avgöra om användaren äger specifikt nedladdningsbart innehåll.
Backend-server
Sessionsbiljetter och Steamworks-webb-API
Användarautentisering
I följande steg beskrivs hur man använder sessionsbiljetter för att verifiera en användares identitet mellan användarens spelklient och en säker server:
Verifiering av ägarskap
När en användares identitet har verifierats, kan en säker server kan använda webb-API-metoden
ISteamUser/CheckAppOwnership för att kontrollera om användaren äger ett visst app-id, eller anropa
ISteamUser/GetPublisherAppOwnership för att hämta en lista över alla användarägda app-id:n som är associerade med den medföljande
utgivarnyckeln.
Krypterade applikationsbiljetter
Användarautentisering
I följande steg beskrivs hur man använder krypterade applikationsbiljetter för att verifiera en användares identitet mellan användarens spelklient och en säker server:
Ett exempel på implementering finns i projektet
Steamworks API Example Application (SpaceWar) i SDK:et. Specifikt
CSpaceWarClient::RetrieveEncryptedAppTicket
och
CSpaceWarClient::OnRequestEncryptedAppTicket
.
Verifiering av ägarskap
Steam skapar enbart krypterade applikationsbiljetter för användare som äger det app-id som biljetten skapades för. Efter dekryptering av en krypterad applikationsbiljett kan den säkra servern använda
SteamEncryptedAppTicket::BIsTicketForApp för att verifiera att biljettens app-id matchar titelns app-id. Servern kan även använda
SteamEncryptedAppTicket::BUserOwnsAppInTicket för att avgöra om användaren äger specifikt
Nedladdningsbart innehåll (DLC).
Webbläsarbaserad autentisering med OpenID
Steam är en leverantör av
OpenID, som beskrivs i OpenID 2.0-specifikationen. Inuti en webbläsare kan en tredjepartswebbplats använda OpenID för att få en användares SteamID, som kan användas som inloggningsuppgifter för tredjepartswebbplatsen eller länkas till ett befintligt konto på den webbplatsen.
När du använder OpenID börjar användaren i en webbläsare på tredjepartswebbplatsen. När användaren vill logga in/länka sitt konto till den webbplatsen med hjälp av OpenID, leder webbplatsen användaren till ett inloggningsformulär i Steam-gemenskapen. När användaren har angett sina Steam-inloggningsuppgifter, omdirigeras användarens webbläsare automatiskt tillbaka till tredjepartswebbplatsen med ytterligare OpenID-specifika data bifogade till retur-URL:en. Webbplatsens OpenID-bibliotek kan sedan använda dessa data för att verifiera och hämta användarens SteamID.
Steam tillhandahåller följande bilder som kan användas av tredjepartswebbplatser när de länkar till Steams inloggningssida:



Användarautentisering
Steams OpenID 2.0-implementering kan användas för att länka användares Steam-konton till deras konton på tredjepartswebbplatsen.
En lista över OpenID-bibliotek med öppen källkod finns på
OpenID:s webbplats. Så här använder du OpenID för att verifiera en användares identitet:
- Konfigurera ditt OpenID-bibliotek så att följande URL används som Steams OP Endpoint-URL:
https://steamcommunity.com/openid/
- När en användare har autentiserats kommer användarens Claimed-ID att innehålla användarens SteamID. Steams format för Claimed-ID är:
http://steamcommunity.com/openid/id/<steamid>
.
Verifiering av ägarskap
När en användares identitet har verifierats, kan en säker server använda webb-API-metoden
ISteamUser/CheckAppOwnership för att kontrollera om användaren äger ett visst app-id, eller anropa
ISteamUser/GetPublisherAppOwnership för att hämta en lista över alla användarägda app-id:n som är associerade med den medföljande
webb-API-utgivarnyckeln.
Exempel
Koppling av tredjepartskonton till Steam-konton
Tredjepartskonton kan kopplas till Steam-konton genom att associera en användares SteamID med tredjepartskontot.
En användares SteamID kan hämtas säkert antingen i spelet eller via en webbläsare, och efter den inledande kopplingen har utförts kan du säkert tillåta åtkomst till tredjepartskontot genom att enbart verifiera en användares SteamID. Detta gör att Steam-användare inte behöver utföra någon form av sekundär inloggning till tredjepartskontosystem. Om nya tredjepartskonton kan skapas och kopplas automatiskt när ett nytt SteamID påträffas, behöver Steam-användaren dessutom aldrig vara medveten om att en sekundär autentisering äger rum alls. Istället kan deras Steam-konto ge tillgång till alla deras spel, vilket effektiviserar användarupplevelsen och tar bort potentiella hinder för att installera och prova nya spel.
Koppling inuti spelet
Sessionsbiljetter kan användas för att verifiera en användares identitet mellan en spelklient och en säker backend-server med hjälp av Steamworks-webb-API:et:
Koppling från en webbläsare
Steam stöder OpenID 2.0-specifikationen så att du kan tillåta användare att säkert logga in på sina Steam-konton från din webbplats och hämta deras SteamID. Information om hur man använder OpenID med Steam finns här:
Användning av OpenID.
Verifiering av ägarskap
När en användares identitet har verifierats, kan en säker server använda webb-API-metoden
ISteamUser/CheckAppOwnership för att kontrollera om användaren äger ett visst app-id, eller anropa
ISteamUser/GetPublisherAppOwnership för att hämta en lista över alla användarägda app-id:n som är associerade med den medföljande
webb-API-utgivarnyckeln.
Migrering från tredje parts cd-nycklar till inbyggda Steam-ägarkontroller
Steam har ett antal sätt som en titel kan autentisera en användare med, vilket tar bort behovet av en cd-nyckel från tredje part. Vi har sammanställt en lista över vanliga användningsfall för cd-nycklar och hur du kan implementera varje fall med Steam:
Åtkomst till privata forum
Användare ska logga in direkt med sitt Steam-konto med hjälp av OpenID. OpenID returnerar användarens 64-bitars SteamID som sedan kan användas med
ISteamUser/CheckAppOwnership för att verifiera att användaren äger ditt app-id. Mer information finns ovan i
Koppling av tredjepartskonton till Steam-konton.
Upplåsning av en DRM-fri version av ett spel som inte är på Steam
Använd OpenID och
ISteamUser/CheckAppOwnership (
dokumenterat ovanför) för att låsa upp innehållet på din egen webbplats. Alternativt kan du ladda upp den DRM-fria byggversionen som valfritt gratis DLC.
Programvaran säljs på min egen webbplats och låses upp med en nyckel
Användare ska logga in direkt med sitt Steam-konto med hjälp av OpenID. OpenID returnerar användarens 64-bitars SteamID som sedan kan användas med
ISteamUser/CheckAppOwnership för att verifiera att användaren äger ditt app-id. Mer information finns i
Koppling av tredjepartskonton till Steam-konton ovan.
Släpp av föremål i spelet för registrering av din tredjepartsnyckel
Om du använder
Steams förrådstjänst, se till att föremålets itemdef är korrekt konfigurerad som ett promo-föremål och anropa
ISteamInventory::AddPromoItem från klienten.
Om du har en egen föremåls-backend, kan du anropa
ISteamUser::GetAuthSessionTicket från spelklienten och sedan använda
ISteamUserAuth/AuthenticateUserTicket med
ISteamUser/CheckAppOwnership för att verifiera ägandet.
Mer information ...Nyckeln styr vilken version av programvaran som låses upp
Varje version av ditt spel bör ha ett eget AppID. Anropa
ISteamUser::GetAuthSessionTicket från spelklienten och använd sedan
ISteamUserAuth/AuthenticateUserTicket med
ISteamUser/CheckAppOwnership för att verifiera ägarskap.
Mer information ...