Steamworks-dokumentation
Brugergodkendelse og ejerskab

Oversigt

Steamworks har flere metoder til at bekræfte en Steam-brugers identitet og bekræfte ejerskab af en applikation. Det følgende dokument beskriver hver af disse godkendelsesmetoder, som bruges i de følgende scenarier:

Identificering af en bruger indenfor Steam

Hver Steam-bruger kan identificeres entydigt ud fra et 64-bit numerisk ID, kendt som brugerens Steam-ID. En brugers Steam-ID er i Steamworks C++-API'er indeholdt i et CSteamID-objekt. Du kan hente den aktuelle brugers Steam-ID ved at kalde ISteamUser::GetSteamID og derefter hende 64-bit-ID'et ved at kalde CSteamID.ConvertToUint64() på den returnerede værdi.

De følgende godkendelsesmetoder kan bruges til sikkert at bekræfte en brugers Steam-ID.

API'er beskrevet i dette dokument

Sessionsbilletter

Sessionsbilletter er signerede billetter, som kan bruges til at verificere en brugers identitet mellem brugerens spilklient og et vilkårligt antal af andre spilklienter (såsom i en peer-to-peer multiplayer-session) eller en lytte-/dedikeret spilserver (ved hjælp af ISteamGameServer API'en). Disse billetter kan også bruges til at bekræfte ejerskab af det aktuelle spil og relateret indhold, som kan downloades, og afgøre, om brugeren er blevet VAC-udelukket (se VAC (Valve Anti-Cheat) og spiludelukkelser).
Sessionsbilletter kan også bruges til at bekræfte en brugers identitet mellem en spilklient og en sikker backend-server ved at bruge Steamworks-web-API'en. Kræver, at den sikre server kan lave HTTPS-anmodninger til partner.steam-api.com.

Krypterede applikationsbilletter

Krypterede applikationsbilletter kan bruges til at bekræfte en brugers identitet mellem en spilklient og en sikker backend-server. I modsætning til sessionsbilletter kræver bekræftelse af krypterede applikationsbilletter ikke, at den sikre server kan lave HTTPS-anmodninger. I stedet bruges et C++-bibliotek og en privat, symmetrisk nøgle af den sikre server til at bekræfte billetten. Steamworks-SDK'en inkluderer versioner af dette bibliotek i 32-bit og 64-bit til Windows og Linux under mappen public/steam/lib.

Før du bruger de krypterede applikationsbilletter, skal du lave en privat nøgle til hver titel. Du kan gøre dette ved at navigere til "Rediger Steamworks-indstillinger" for din applikation og vælge "SDK Auth" fra rullemenuen "Sikkerhed". Denne nøgle vil være tilknyttet din titels app-ID og alt indhold, som kan downloades, til den pågældende titel. For at tilgå denne sektion i Steamworks skal en bruger have tilladelsen "Administrer signering" for den gældende applikation.
Bemærk: Disse nøgler skal opbevares forsvarligt og må ikke distribueres i din applikation på nogen måde!

Steamworks-web-API

Steam har en HTTP-baseret web-API, som kan bruges til at få adgang til mange Steamworks-funktioner. API'en indeholder offentlige metoder, som kan tilgås fra enhver applikation, som er i stand til at lave en HTTP-anmodning, såsom spilklient eller server. API'en indeholder også beskyttede metoder, som kræver godkendelse og er beregnet til at blive tilgået fra pålidelige backend-applikationer. Flere detaljer om web-API'en kan findes her.

P2P eller spilservere

Sessionsbilletter

Brugergodkendelse

De følgende trin beskriver, hvordan du bruger sessionsbilletter til at bekræfte en brugers identitet mellem brugerens spilklient (klient A) og en anden klient eller spilserver (klient B):

Et par vigtige bemærkninger om sessionsbilletter:

Bekræftelse af ejerskab

Når der bruges sessionsbilletter, vil Steam automatisk bekræfte ejerskab af det nuværende app-ID. Hvis brugeren ikke ejer det nuværende app-ID, vil m_eAuthSessionResponse-feltet tilhørende ISteamUser::ValidateAuthTicketResponse_t blive sat til k_EAuthSessionResponseNoLicenseOrExpired. Efter at have modtaget en brugers sessionsbillet og sendt den videre til ISteamUser::BeginAuthSession, kan ISteamUser::UserHasLicenseForApp bruges til at afgøre, om brugeren ejer det specifikke stykke indhold, som kan downloades.

Backend-server

Sessionsbilletter og Steamworks-web-API

Brugergodkendelse

De følgende trin beskriver, hvordan du bruger sessionsbilletter til at bekræfte en brugers identitet mellem brugerens spilklient og en sikker server:

Bekræftelse af ejerskab

Når en brugers identitet er blevet bekræftet, kan en sikker server bruge web-API-metoden ISteamUser/CheckAppOwnership til at tjekke, om brugeren ejer et bestemt app-ID, eller kalde ISteamUser/GetPublisherAppOwnership for at hente en liste over alle brugerejede app-ID'er, som er tilknyttet den givne udgivernøgle.

Krypterede applikationsbilletter

Brugergodkendelse

De følgende trin beskriver, hvordan du skal bruge krypterede applikationsbilletter til at bekræfte en brugers identitet mellem brugerens spilklient og en sikker server:

Et eksempel på implementering kan findes i projektet Steamworks-API-eksempel på applikation (SpaceWar) i SDK'en. Specifikt i CSpaceWarClient::RetrieveEncryptedAppTicket og CSpaceWarClient::OnRequestEncryptedAppTicket.

Bekræftelse af ejerskab

Steam vil kun skabe krypterede applikationsbilletter for brugere, som ejer app-ID'et, hvortil billetten var oprettet. Efter at have dekrypteret en applikationsbillet kan den sikre server bruge SteamEncryptedAppTicket::BIsTicketForApp til at bekræfte, at app-ID'et matcher titlens app-ID. Serveren kan også bruge SteamEncryptedAppTicket::BUserOwnsAppInTicket til at afgøre, om brugeren ejer et specifikt stykke Indhold, der kan downloades (DLC).

Webbrowserbaseret bekræftelse med OpenID

Steam er en OpenID-udbyder som beskrevet i OpenID 2.0-specifikationen. I en webbrowser kan en tredjepartshjemmeside bruge OpenID til at hente en brugers Steam-ID, som kan bruges som loginoplysninger til tredjepartshjemmesiden eller tilknyttes til en eksisterende konto på hjemmesiden.

Når OpenID bruges, starter brugeren i en webbrowser på tredjepartshjemmesiden. Når brugeren ønsker at logge ind/tilknytte sin konto til den pågældende hjemmeside ved brug af OpenID, dirigerer siden brugeren til en loginformular på Steam-fællesskabets hjemmeside. Når brugeren har indtastet sine Steam-loginoplysninger, bliver brugerens webbrowser automatisk omdirigeret tilbage til tredjepartshjemmesiden med nogle yderligere OpenID-specifikke data tilføjet til returwebadressen. Sidens OpenID-bibliotek kan derefter bruge disse data til at bekræfte og hente brugerens Steam-ID.

Steam leverer de følgende billeder, som kan bruges af tredjepartssider, når der linkes til Steams loginside:
sits_large_border.png

sits_large_noborder.png

sits_small.png

Brugergodkendelse

Steams OpenID 2.0-implementering kan bruges til at tilknytte en brugers Steam-konto til vedkommendes konto på tredjepartshjemmesiden.

En liste over open source OpenID-biblioteker kan findes på OpenID-hjemmesiden. For at bruge OpenID til at bekræfte en brugers identitet:
  • Konfigurer dit OpenID-bibliotek for at bruge den følgende URL som Steams OP Endpoint-URL: https://steamcommunity.com/openid/
  • Efter en bruger er blevet bekræftet, vil brugerens tildelte ID indeholde brugerens Steam-ID. Steam's tildelte ID-format er:http://steamcommunity.com/openid/id/<steamid>.

Bekræftelse af ejerskab

Når en brugers identitet er blevet bekræftet, kan en sikker server bruge web-API-metoden ISteamUser/CheckAppOwnership til at tjekke, om brugeren ejer et bestemt app-ID, eller kalde ISteamUser/GetPublisherAppOwnership for at hente en liste over alle brugerejede app-ID'er, som er tilknyttet den givne web-API-udgivernøgle.

Eksempler

Tilknytning af tredjepartskonti til Steam-konti

Tredjepartskonti kan også linkes til Steam-konti ved at tilknytte en brugers Steam-ID til tredjepartskontoen.

En brugers Steam-ID kan hentes sikkert enten i spil eller via en webbrowser, og når den indledende tilknytning er på plads, kan du tillade sikker adgang til tredjepartskontoen ved blot at verificere en brugers Steam-ID. Dette eliminerer behovet for, at Steam-brugere skal foretage et sekundært login til tredjeparters kontosystemer. Derudover, hvis nye tredjepartskonti kan oprettes automatisk og linkes, når et nyt Steam-ID opdages, vil Steam-brugeren aldrig skulle tænke over, at en sekundær godkendelse overhovedet finder sted. I stedet kan brugerens ene Steam-konto give adgang til alle brugerens spil, strømline brugeroplevelsen og fjerne potentielle barrierer for at installere og prøve nye spil.

Tilknytning inde fra spil

Sessionsbilletter kan bruges til at bekræfte en brugers identitet mellem en spilklient og en sikker backend-server ved at bruge Steamworks-web-API'en:

Tilknytning fra en webbrowser

Steam understøtter OpenID 2.0-specifikationen, så du kan lade brugere logge sikkert ind på deres Steam-konti fra din hjemmeside og hente deres Steam-ID. Gå til Sådan bruges OpenID for at læse mere om, hvordan man bruger OpenID med Steam.

Bekræftelse af ejerskab

Når en brugers identitet er blevet bekræftet, kan en sikker server bruge web-API-metoden ISteamUser/CheckAppOwnership til at tjekke, om brugeren ejer et bestemt app-ID, eller kalde ISteamUser/GetPublisherAppOwnership for at hente en liste over alle brugerejede app-ID'er, som er tilknyttet den givne web-API-udgivernøgle.

Overførsel fra tredjeparts-CD-nøgler til indbygget Steam-ejerskabstjek

Steam selv har flere måder, som en titel kan bekræfte en bruger med, som fjerner behovet for en tredjeparts-CD-nøgle. Vi har samlet en liste over almindelige anvendelsesscenarier for CD-nøgler, samt hvordan du kan indbygge hvert scenarie i Steam:

Adgang til private forummer

Brugere skal logge ind direkte med deres Steam-konto ved hjælp af OpenID. OpenID returnerer brugerens 64-bit Steam-ID, som derefter kan bruges med ISteamUser/CheckAppOwnership for at bekræfte, at brugeren ejer dit app-ID. Flere oplysninger kan findes ovenfor i Tilknytning af tredjepartskonti til Steam-konti.

Sådan låses der op for et ikke-Steam-spil, som er bygget uden DRM

Brug OpenID og ISteamUser/CheckAppOwnership (dokumenteret ovenfor) for at låse op for indholdet på din egen side. Alternativt kan du uploade buildet uden DRM som valgfrit, gratis DLC.

Softwaren sælges på min egen hjemmeside og låses op med en nøgle

Brugere skal logge ind direkte med deres Steam-konto ved hjælp af OpenID. OpenID returnerer brugerens 64-bit Steam-ID, som derefter kan bruges med ISteamUser/CheckAppOwnership for at bekræfte, at brugeren ejer dit app-ID. Flere oplysninger kan findes i Tilknytning af tredjepartskonti til Steam-konti ovenfor.

Drop af genstande i spil til registrering af din tredjepartsnøgle

Hvis du bruger Steam-inventartjenesten, skal du sikre dig, at itemdef er konfigureret korrekt som en promo-genstand, og kalde ISteamInventory::AddPromoItem fra klienten.
Hvis du har din egen backend, kan du kalde ISteamUser::GetAuthSessionTicket fra spilklienten og derefter bruge ISteamUserAuth/AuthenticateUserTicket med ISteamUser/CheckAppOwnership for at bekræfte ejerskab. Flere oplysninger...

Nøglen kontrollerer, hvilken version af softwaren der bliver låst op for

Hver version af dit spil bør have sit eget app-ID. Fra spilklienten skal du kalde ISteamUser::GetAuthSessionTicket og derefter bruge ISteamUserAuth/AuthenticateUserTicket med ISteamUser/CheckAppOwnership til at bekræfte ejerskab. Flere oplysninger...