Oversikt
Steamworks har flere metoder for å verifisere en Steam-brukers identitet og verifisere eierskap av en applikasjon. Dette dokumentet beskriver hver av disse autentiseringsmetodene som brukes i følgende situasjoner:
- Mellom en spillklient og andre klienter (node-til-node) eller spilltjenere ved bruk av øktbilletter.
- Mellom en spillklient og en tjener ved bruk av:
- Når en bruker er i en nettleser som bruker OpenID og Steamworks' nett-API.
Slik identifiseres en bruker på Steam
Hver bruker på Steam kan identifiseres med en unik 64-biters numerisk ID, kjent som brukerens
Steam-ID. I Steamworks' C++-API-er finnes en brukers Steam-ID inni et objekt av typen
CSteamID. Du kan hente den aktuelle brukerens Steam-ID ved å kalle
ISteamUser::GetSteamID og så hente den 64-biters ID-en ved å kalle
CSteamID.ConvertToUint64() på verdien som returneres.
Følgende autentiseringsmetoder kan brukes for å trygt verifisere en brukers Steam-ID.
API-er som beskrives i dette dokumentet
Øktbilletter
Øktbiletter er signerte billetter som kan brukes for å bekrefte en brukeres identitet mellom brukerens spillklient og eventuelle andre spillklienter (som ved en flerspillerøkt som foregår over noder), eller til en spilltjenere (ved bruk av API-et
ISteamGameServer). Disse billettene kan brukes for å bekrefte eierskap av det aktuelle spillet og tilknyttet nedlastbart innhold, og også for å avgjøre om brukeren er blitt utestengt av VAC (se
Antijuks og spillutestengelser).
Øktbilletter kan også brukes for å bekrefte at en brukers identitet mellom en spillklient og en sikret tjener bruker
nett-API-et til Steamworks. Krever at en sikret tjener kan utføre HTTPS-forespørsler til
parnter.steam-api.com.
Krypterte applikasjonsbilletter
Krypterte applikasjonsbilletter kan brukes for å bekrefte en brukers identitet mellom en spillklient og en sikret tjener. Til forskjell fra øktbilletter, så krever
ikke verifisering av krypterte applikasjonsbilletter at den sikrede tjeneren kan utføre HTTPS-forespørsler. Istedenfor brukes et C++-bibliotek og en privat, symmetrisk nøkkel av den sikrede tjeneren for å bekrefte billetten. Steamworks' SDK inkluderer 32-biters- og 64-biters versjoner av dette biblioteket for Windows og Linux i mappen
public/steam/lib.
Før du bruker krypterte applikasjonsbilletter, må du generere en privat nøkkel for hvert spill. Du kan gjøre dette ved å gå til innstillinger i Steamworks for applikasjonen og så velge «SDK-autentisering» fra sikkerhetsmenyen. Denne nøkkelen knyttes til spillets app-ID, og eventuelt nedlastbart innhold for spillet. For å få tilgang til denne seksjonen i Steamworks, så må en bruker ha tillatelse til å «Behandle signering» for den aktuelle applikasjonen.
MERK: Disse nøklene må lagres trygt, og må ikke distribueres inni applikasjonen på noen som helst måte!
Steamworks' nett-API
Steam eksponerer et nett-API basert på HTTP som kan brukes for å få tilgang til mange funksjoner i Steamworks. API-et inneholder offentlige metoder som er tilgjengelige for enhver applikasjon som kan utføre en HTTP-forespørsel, slik som spillklienter eller -tjenere. API-et inneholder også beskyttede metoder som krever autentisering og har til hensikt å brukes av klarerte bakapplikasjoner. Mer informasjon om nett-API-et finnes
her.
Node-til-node eller spilltjenere
Øktbilletter
Autentisering av brukere
Følgende steg beskriver hvordan man bruker øktbilletter til å bekrefte en brukes identitet mellom brukerens spillklient (klient A) og en annen klient eller spilltjener (klient B):
Noen viktige merknader om øktbilletter:
Bekrefting av eierskap
Ved bruk av øktbilletter, så kan Steam automatisk bekrefte eierskap av den aktuelle app-ID-en. Hvis brukeren ikke eier den aktuelle app-ID-en, så angis feltet
m_eAuthSessionResponse i
ISteamUser::ValidateAuthTicketResponse_t til
k_EAuthSessionResponseNoLicenseOrExpired. Etter å ha mottatt en brukers øktbillett og sendt den til
ISteamUser::BeginAuthSession, så kan
ISteamUser::UserHasLicenseForApp brukes for å avgjøre om en bruker eier spesifikt nedlastbart innhold.
Tjener
Øktbilletter og Steamworks' nett-API
Autentisering av brukere
Følgende steg beskriver hvordan man bruker øktbilletter for å bekrefte en brukers identitet mellom en spillklient og en sikker tjener:
Bekrefting av eierskap
Når en brukers identitet er blitt bekreftet, så kan en sikker tjener bruke nett-API-metoden
ISteamUser/CheckAppOwnership for å sjekke om brukerens eier en spesifikk app-ID, eller kaller
ISteamUser/GetPublisherAppOwnership for å hente en liste over alle app-ID-er brukeren eier som er tilknyttet
utgivernøkkelen.
Krypterte applikasjonsbilletter
Autentisering av brukere
Følgende steg beskriver hvordan man bruker krypterte applikasjonsbilletter for å bekrefte en brukers identitet mellom en spillklient og en sikker tjener:
Et eksempel på implementasjon finnes i prosjektet
Steamworks API Example Application (SpaceWar) i SDK-et. Spesifikt
CSpaceWarClient::RetrieveEncryptedAppTicket og
CSpaceWarClient::OnRequestEncryptedAppTicket.
Bekrefting av eierskap
Steam oppretter kun krypterte applikasjonsbilletter for brukere som eier app-ID-en som billetten ble opprettet for. Etter dekryptering av en kryptert applikasjonsbillett kan den sikre tjeneren bruke
SteamEncryptedAppTicket::BIsTicketForApp for å bekrefte at app-ID-en til billetten samsvarer med spillets app-ID. Tjeneren kan også bruke
SteamEncryptedAppTicket::BUserOwnsAppInTicket for å avgjøre om brukeren eier spesifikt
Nedlastbart innhold (DLC).
Nettleserbasert autentisering med OpenID
Steam er en leverandør av
OpenID, som beskrevet i spesifikasjonen til OpenID 2.0. Inni en nettleser så kan nettsidene til tredjeparter bruke OpenID for å hente en brukers SteamID, som kan brukes til innlogging på nettsiden til tredjeparten, eller knyttes til en eksisterende konto på nettsiden.
Ved bruk av OpenID, så begynner en bruker i en nettleser på en nettside som drives av en tredjepart. Når brukeren har lyst til å logge inn/tilknytte kontoen til nettsiden ved bruk av OpenID, så retter nettsiden brukeren mot et innloggingsskjema på nettsiden til Steam-samfunnet. Når brukeren har angitt innloggingsopplysningene sine på Steam, så omdirigeres brukerens nettleser automatisk tilbake til en nettsiden til tredjeparten med noe ytterligere data som er spesifikk for OpenID lagt til på slutten av nettadressen. Nettsidens OpenID-bibliotek kan da bruke disse dataene for å bekrefte og hente brukerens Steam-ID.
Steam leverer følgende bilder som kan brukes av tredjepartssider ved tilknytting til Steams innloggingsside:



Autentisering av brukere
Steams implementasjon av OpenID 2.0 kan brukes for å tilknytte en brukers Steam-konto til kontoer på nettsider til tredjeparter.
En liste over OpenID-bibliotek med åpen kildekode finnes på
nettsiden til OpenID. Slik bruker du OpenID for å bekrefte en brukers identitet:
- Konfigurer OpenID-biblioteket ditt til å bruke følgende nettadresse som Steams sluttpunkt:
https://steamcommunity.com/openid/
- Etter at en bruker er autentisert, så inneholder den hevdede ID-en brukerens SteamID. Formatet på hevdet ID på Steam er
http://steamcommunity.com/openid/id/<steamid>.
Bekrefting av eierskap
Når en brukers identitet er blitt bekreftet, så kan en sikker tjener bruke nett-API-metoden
ISteamUser/CheckAppOwnership for å sjekke om brukerens eier en spesifikk app-ID, eller kaller
ISteamUser/GetPublisherAppOwnership for å hente en liste over alle app-ID-er brukeren eier som er tilknyttet
utgivernøkkelen.
Eksempler
Tilknytting av tredjepartskontoer til Steam-kontoer
Tredjepartskontoer kan tilknytter Steam-kontoer ved å tilknytte en brukers Steam-ID med tredjepartskontoen.
En brukers Steam-ID kan hentes på en sikker måte enten i et spill eller gjennom en nettleser når den innledende tilknyttingen har funnet sted. Du kan trygt gi tilgang til tredjepartskontoen kun ved å bekrefte en brukers Steam-ID. Dette gjør at brukere på Steam ikke trenger å utføre noe slags sekundær innlogging til systemer for tredjepartskontoer. Hvis nye tredjepartskontoer kan opprettes og tilknyttes automatisk når en ny SteamID støtes på, så trenger ikke brukeren å være klar over at sekundær autentisering finner sted i det hele tatt. Istedenfor så kan Steam-kontoen gi tilgang til alle spillene for å gjøre brukeropplevelsen bedre, og fjerne hinder for installering og prøving av nye spill.
Tilknytting fra inni spillet
Øktbilletter kan brukes for å bekrefte en brukers identitet mellom en spillklient og en sikker tjenerdel, gjennom nett-API-et til Steamworks:
Tilknytting fra en nettleser
Steam støtter spesifikasjonen OpenID 2.0 som gjør det mulig for brukere å logge inn på Steam-kontoene sine på en sikker måte fra nettsiden din for å hente SteamID. For informasjon om hvordan man bruker OpenID med Steam, gå til
bruk av OpenID.
Bekrefting av eierskap
Når en brukers identitet er bekreftet, så kan den sikre tjeneren bruke nett-API-metoden
ISteamUser/CheckAppOwnership for å sjekke om brukeren eier en gitt app-ID eller kaller
ISteamUser/GetPublisherAppOwnership for å hente en liste over alle app-ID-er en bruker eier som er tilknyttet den oppgitte
utgivernøkkelen i nett-API-et.
Overføring av CD-nøkler fra tredjepart til innebygget sjekk av eierskap på Steam
Steam har flere innebygde metoder for å autentisere en bruker, som gjør at man ikke trenger å bruke CD-nøkkel fra en tredjepart. Vi har satt sammen en liste over vanlige brukstilfeller for CD-nøkler og hvordan du kan implementere hvert tilfelle med Steam:
Tilgang til private forum
Brukere må logge seg inn direkte med Steam-kontoene sine ved bruk av OpenID. OpenID returnerer brukerens 64-biters Steam-ID, som kan brukes sammen med
ISteamUser/CheckAppOwnership for å bekrefte at brukeren eier app-ID-en. Mer informasjon finnes ovenfor om
tilknytting av tredjepartskontoer til Steam-kontoer.
Opplåsing av en DRA-fri versjon av spillet som ikke er på Steam
Bruk OpenID og
ISteamUser/CheckAppOwnership (
dokumentert ovenfor) for å låse opp innholdet på ditt eget nettsted. Alternativt så kan du laste opp en byggversjon som er fri for DRA som valgfritt og gratis nedlastbart innhold.
Programvaren selges på min egen nettside og låses opp med en nøkkel
Brukere må logge seg inn direkte med Steam-kontoene sine ved bruk av OpenID. OpenID returnerer brukerens 64-biters Steam-ID, som kan brukes sammen med
ISteamUser/CheckAppOwnership for å bekrefte at brukeren eier app-ID-en. Mer informasjon finnes i
Tilknytting av tredjepartskontoer til Steam-kontoer ovenfor.
Slipp av gjenstander i spillet for registrering av tredjepartsnøkkel
Hvis du bruker
Steams lagertjeneste, sørg for at gjenstandens itemdef er konfigurert ordentlig som en kampanjegjenstand, og kall
ISteamInventory::AddPromoItem fra klienten.
Hvis du har din egen tjenerdel for gjenstander, kan du kalle
ISteamUser::GetAuthSessionTicket fra spillklienten og så bruke
ISteamUserAuth/AuthenticateUserTicket sammen med
ISteamUser/CheckAppOwnership for å bekrefte eierskap.
Mer informasjon …Nøkkelen kontrollerer hvilken versjon av programvaren som låses opp
Hver versjon av spillet bør ha sin egen app-ID. Kall
ISteamUser::GetAuthSessionTicket fra spillklienten, og bruk så
ISteamUserAuth/AuthenticateUserTicket sammen med
ISteamUser/CheckAppOwnership for å bekrefte eierskap.
Mer informasjon …