Steamworks-dokumentation
Användarautentisering och ägarskap

Ö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:
sits_large_border.png

sits_large_noborder.png

sits_small.png

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 ...