Sitoutumaton

Etusivu Dokumentaatio & ohje
Steamworks-dokumentaatio
Käyttäjän todennus ja omistajuus

Yleiskatsaus

Steamworks tarjoaa useita menetelmiä, joilla tarkistat Steam-käyttäjän henkilöllisyyden ja sovelluksen omistajuuden. Tässä kuvataan kaikki tarkistusmenetelmät, joita käytetään seuraavissa skenaarioissa:

Käyttäjän tunnistaminen Steamissä

Jokainen Steamin käyttäjä voidaan yksilöidä 64-bittisellä numeerisella tunnuksella, joka tunnetaan käyttäjän Steam ID -tunnuksena. Steamworksin C++-API-ohjelmointirajapinnoissa käyttäjän SteamID-tunnus sisältyy CSteamID-olioon. Voit noutaa nykyisen käyttäjän SteamID-tunnuksen suorittamalla kutsun ISteamUser::GetSteamID ja noutaa sitten 64-bittisen tunnuksen suorittamalla kutsun CSteamID.ConvertToUint64() palautetulla arvolla.

Seuraavia todennusmenetelmiä voidaan käyttää käyttäjän Steam ID -tunnuksen turvalliseen vahvistukseen.

Tässä dokumentissa käsitellyt APIt

Istuntoliput

Istuntoliput ovat allekirjoitettuja lippuja, joiden avulla voidaan tarkistaa käyttäjän henkilöllisyys käyttäjän pelisovelluksen ja useiden muiden pelisovellusten (kuten vertaismoninpeli-istuntojen)
välillä tai kuuntelevan tai tarkoitukseen varatun pelipalvelimen välillä (käyttämällä ISteamGameServer APIa). Näiden lippujen avulla voidaan myös tarkistaa nykyisen pelin ja siihen liittyvän ladattavan sisällön omistajuus ja määrittää, onko käyttäjä saanut VAC-kiellon. (Lisätietoja: Valven huijauksenestojärjestelmä (VAC) ja pelikiellot)
Istuntolippujen avulla voidaan myös tarkistaa käyttäjän identiteetti pelisovelluksen ja suojatun taustapalvelimen välillä käyttämällä Steamworks Web APIa. Tämä edellyttää, että suojattu palvelin voi tehdä HTTPS-pyyntöjä osoitteeseen api.steampowered.com.

Salatut sovellusliput

Salattujen sovelluslippujen avulla voidaan tarkistaa käyttäjän identiteetti pelisovelluksen ja suojatun taustasovelluksen välillä. Toisin kuin istuntolippujen tarkistaminen, salattujen sovelluslippujen tarkistaminen ei edellytä, että suojattu palvelin pystyy tekemään HTTPS-pyyntöjä. Suojattu palvelin käyttää sen sijaan C++-kirjastoa ja yksityistä, symmetristä avainta lipun tarkistamiseen. Steamworks SDK sisältää tästä kirjastosta sekä 32-bittisen että 64-bittisen version Windows- ja Linux-käyttöjärjestelmille public/steam/lib-hakemistossa.
Ennen kuin käytät salattuja sovelluslippuja, sinun on luotava yksityinen avain kullekin nimikkeelle. Voit tehdä tämän siirtymällä "Muokkaa Steamworks-asetuksia" -sovellusasetuksiin ja valitsemalla "Turvallisuus"-pudotusvalikosta "SDK-todennus". Tämä avain liitetään nimikkeen AppID-tunnukseen ja mahdolliseen ladattavaan sisältöön.

HUOM! Nämä avaimet on tallennettava turvallisesti, eikä niitä saa jakaa sovelluksessasi millään tavalla!

Steamworks Web API

Steam tarjoaa HTTP-pohjaisen Web APIn, jonka avulla voidaan käyttää monia Steamworksin ominaisuuksia. API sisältää julkisia metodeja, joita voidaan käyttää mistä tahansa sovelluksesta, joka pystyy tekemään HTTP-pyynnön, kuten pelisovellus tai -palvelin. API sisältää myös suojattuja metodeja, jotka edellyttävät todennusta ja joita on tarkoitus käyttää luotetuista taustasovelluksista. Lisätietoja Web APIsta on täällä.

P2P- tai pelipalvelimet

Istuntoliput

Käyttäjän todennus

Seuraavissa vaiheissa kuvataan, miten istuntolippujen avulla voidaan tarkistaa käyttäjän identiteetti käyttäjän pelipalvelimen (sovellus A) ja toisen sovelluksen tai pelipalvelimen (sovellus B) välillä:

Muutama tärkeä huomautus istuntolipuista:
  • Istuntolippuja voi käyttää vain kerran. ISteamUser::GetAuthSessionTicket-metodia on kutsuttava jokaiselle moninpeli-istunnon sovellukselle, joka pyytää lippua.
  • Kun istuntolippuja käytetään pelaajien todennukseen vertaismoninpeli-istunnossa, kunkin pelisovelluksen on varmistettava kaikkien muiden moninpeli-istunnossa olevien pelisovellusten identiteetti.
  • Kun istuntolippu on käytetty, jokaisen ISteamUser::GetAuthSessionTicket-metodin palauttaman kutsumanimen on kutsuttava ISteamUser::CancelAuthTicket-metodia.
  • Kun sovellus A suorittaa kutsun ISteamUser::CancelAuthTicket, sovellus B saa ISteamUser::ValidateAuthTicketResponse_t-vastakutsun, jossa ilmoitetaan, että sovellus A:n lippu ei ole enää kelvollinen.
  • Kun asiakas A lähtee pelistä asiakas B:n kanssa, jos asiakas A:n kutsu ISteamUser::CancelAuthTicket-metodille käsitellään ennen asiakas B:n kutsua ISteamUser::EndAuthSession-metodille, asiakas B saattaa saada ISteamUser::ValidateAuthTicketResponse_t-vastakutsun, jossa ilmoitetaan, että lippu on peruutettu. Koska on yhteisymmärrys siitä, että asiakas A lähtee pelistä, tämä vastakutsu voidaan jättää huomiotta.
  • Verkko-olosuhteet saattavat estää Steamin taustajärjestelmää toimittamasta vastakutsua ISteamUser::BeginAuthSession-metodin kutsujalle määrittelemättömäksi ajaksi. ISteamUser::BeginAuthSession-metodin kutsujan (sovellus B) ei pitäisi olettaa tietävänsä sovellus A:n todellisen identiteetin, ennen kuin tämä vastakutsu on vastaanotettu, vaan sen pitäisi antaa moninpeli-istunnon jatkua.
  • Jos ISteamUser::BeginAuthSession-metodin kutsuja vastaanottaa ISteamUser::ValidateAuthTicketResponse_t-vastakutsun, jossa ilmoitetaan, että sovellus A:n lippu ei kelpaa, kutsujan on kieltäydyttävä jatkamasta moninpeli-istuntoa sovelluksen A kanssa. Jos muut pelissä mukana olevat vertaissovelluksetkaan eivät kieltäydy pelaamasta sovellus A:n kanssa, kutsujan on poistuttava moninpeli-istunnosta.
  • ISteamGameServer tarjoaa samat istuntolippumetodit todennuksen suorittamiseksi pelisovelluksen ja pelipalvelimen välillä.

Omistajuuden tarkistus

Istuntolippuja käytettäessä Steam tarkistaa automaattisesti nykyisen AppID-tunnuksen omistajuuden. Jos käyttäjä ei omista nykyistä AppID-tunnusta, m_eAuthSessionResponse-kentän, joka on ISteamUser::ValidateAuthTicketResponse_t-kutsussa, arvoksi määritetään k_EAuthSessionResponseNoLicenseOrExpired. Kun käyttäjän istuntolippu on vastaanotettu ja annettu ISteamUser::BeginAuthSession-metodille, ISteamUser::UserHasLicenseForApp-metodin avulla voidaan määrittää, omistaako käyttäjä tietyn ladattavan sisällön.

Taustapalvelin

HUOM! Tätä omistajuuden tarkistusmetodia ei voi käyttää peleissä, joissa aiotaan hyödyntää Valven huijauksenestoa.

Istuntoliput ja Steamworks Web API

Käyttäjän todennus

Seuraavassa kuvataan, miten istuntolippujen avulla voidaan tarkistaa käyttäjän identiteetti käyttäjän pelisovelluksen ja suojatun palvelimen välillä:

Omistajuuden tarkistus

Kun käyttäjän identiteetti on tarkistettu, suojattu palvelin voi tarkistaa ISteamUser/CheckAppOwnership Web API -metodin avulla, omistaako käyttäjä tietyn AppID-tunnuksen, tai suorittaa kutsun ISteamUser/GetPublisherAppOwnership saadakseen luettelon kaikista käyttäjän omistamista AppID-tunnuksista, jotka liittyvät annettuun julkaisijan avaimeen.

Salatut sovellusliput

Käyttäjän todennus

Seuraavassa kuvataan, miten salattujen istuntolippujen avulla voidaan tarkistaa käyttäjän identiteetti käyttäjän pelisovelluksen ja suojatun palvelimen välillä:

Esimerkki toteutuksesta on nähtävissä Steamworks API Example Application (SpaceWar) -projektissa SDK:ssa. Erityisesti CSpaceWarClient::RetrieveEncryptedAppTicket ja CSpaceWarClient::OnRequestEncryptedAppTicket.

Omistajuuden tarkistus

Steam luo salattuja sovelluslippuja vain käyttäjille, jotka omistavat AppID-tunnuksen, jolle lippu luotiin. Kun suojattu palvelin on purkanut salatun sovelluslipun suojauksen, se voi varmistaa SteamEncryptedAppTicket::BIsTicketForApp-metodin avulla, että lipun AppID-tunnus vastaa nimikkeen AppID-tunnusta. Palvelin voi käyttää myös SteamEncryptedAppTicket::BUserOwnsAppInTicket-metodia määrittääkseen, omistaako käyttäjä tietyn ladattavan sisällön (DLC).

Selainpohjainen todennus OpenID:lla

Steam on OpenID-tarjoaja, kuten OpenID 2.0 -määrityksessä kuvattiin. Kolmannen osapuolen verkkosivusto voi hankkia OpenID:n avulla käyttäjän SteamID-tunnuksen, jota voidaan käyttää kirjautumisen tunnistetietoina kolmannen osapuolen verkkosivustolla tai linkitettynä verkkosivuston olemassa olevaan tiliin.

OpenID:ta käytettäessä käyttäjä aloittaa selaimessa kolmannen osapuolen sivustossa. Kun käyttäjä haluaa kirjautua tai linkittää tilinsä verkkosivustoon käyttämällä OpenID:ta, sivusto ohjaa käyttäjän Steam-yhteisön verkkosivuston kirjautumislomakkeeseen. Kun käyttäjä on syöttänyt Steam-kirjautumisen tunnistetietonsa, käyttäjän selain ohjataan automaattisesti takaisin kolmannen osapuolen sivustoon, ja palautus-URL-osoitteeseen on lisätty erityisiä OpenID-tietoja. Sivuston OpenID-kirjasto voi tarkistaa ja hankkia käyttäjän SteamID-tunnuksen näiden tietojen avulla.

Steam tarjoaa seuraavat kuvat, joita voidaan käyttää kolmannen osapuolen sivustoilla, kun linkitetään Steamin sisäänkirjautumissivulle:
sits_large_border.png

sits_large_noborder.png

sits_small.png

Käyttäjän todennus

Steamin OpenID 2.0 -toteutuksen avulla voidaan linkittää käyttäjän Steam-tili kolmannen osapuolen sivustossa olevaan tiliin.
Luettelo avoimen lähdekoodin OpenID-kirjastoista on osoitteessa OpenID-sivustolla. Käyttäjän identiteetin tarkistaminen OpenID:n avulla:
  • Määritä OpenID-kirjasto seuraavan URL-osoitteen käyttämiseksi Steamin OP Endpoint URL -osoitteena: https://steamcommunity.com/openid/
  • Kun käyttäjä on todennettu, Claimed ID -tunnus sisältää käyttäjän SteamID-tunnuksen. Steamin Claimed ID -muoto on kuvattu osoitteessa: http://steamcommunity.com/openid/id/<steamid>.

Omistajuuden tarkistus

Kun käyttäjän identiteetti on tarkistettu, suojattu palvelin voi tarkistaa ISteamUser/CheckAppOwnership Web API -metodin avulla, omistaako käyttäjä tietyn AppID-tunnuksen, tai suorittaa kutsun ISteamUser/GetPublisherAppOwnership saadakseen luettelon kaikista käyttäjän omistamista AppID-tunnuksista, jotka liittyvät annettuun Web API -julkaisijan avaimeen.

Esimerkkejä:

Kolmannen osapuolen tilien linkittäminen Steam-tileihin

Kolmannen osapuolen tilit voi linkittää Steam-tileihin liittämällä käyttäjän SteamID kolmannen osapuolen tiliin.

Käyttäjän SteamID:n voi noutaa turvallisesti joko pelin aikana tai selaimen kautta, ja kun ensimmäinen liitos on tapahtunut, voit turvallisesti sallia pääsyn kolmannen osapuolen tilille tarkistamalla vain käyttäjän SteamID:n. Tämän ansiosta Steamin käyttäjien ei tarvitse tehdä minkäänlaisia toissijaisia kirjautumisia kolmannen osapuolen tilien järjestelmiin. Jos kolmannen osapuolen tilit voi luoda automaattisesti ja linkittää, kun havaitaan uusi SteamID-tunnus, Steamin käyttäjän ei tarvitse koskaan olla tietoinen siitä, että toissijaista todennusta ylipäätään tehdään. Käyttäjän yksi ja ainoa Steam-tili voi myöntää pääsyn käyttäjän kaikkiin peleihin, mikä virtaviivaistaa käyttäjäkokemusta ja poistaa mahdolliset esteet asentaa ja kokeilla uusia pelejä.

Pelin sisältä linkittäminen

Istuntolippujen avulla voi tarkistaa käyttäjän identiteetin pelisovelluksen ja suojatun taustasovelluksen välillä käyttämällä Steamworksin Web APIa.

Selaimesta linkittäminen

Steam tukee OpenID 2.0 -määritystä, jotta voit antaa käyttäjien kirjautua turvallisesti Steam-tileilleen verkkosivustoltasi ja noutaa SteamID-tunnuksensa. Lisätietoja OpenID:n käyttämisestä Steamin kanssa on kohdassa OpenID:n käyttäminen

Omistajuuden tarkistus

Kun käyttäjän identiteetti on tarkistettu, suojattu palvelin voi tarkistaa ISteamUser/CheckAppOwnership Web API -metodin avulla, omistaako käyttäjä tietyn AppID-tunnuksen, tai suorittaa kutsun ISteamUser/GetPublisherAppOwnership saadakseen luettelon kaikista käyttäjän omistamista AppID-tunnuksista, jotka liittyvät annettuun Web API -julkaisijan avaimeen.

Siirtyminen kolmannen osapuolen tuotetunnuksista natiiveihin Steamin omistajuustarkistuksiin

Steamissä itsessään on useita tapoja, joilla nimike voi todentaa käyttäjän, jolloin kolmannen osapuolen tuotetunnusta ei tarvita. Olemme koonneet luettelon yleisistä tuotetunnusten käyttötapauksista ja niiden käytöstä natiivisti Steamillä:

Yksityisen keskustelupalstan käyttö

On parasta, että käyttäjät kirjautuvat suoraan Steam-tilinsä avulla käyttämällä OpenID:ta. OpenID palauttaa käyttäjän 64-bittisen SteamID-tunnuksen, jonka avulla voidaan tarkistaa, että käyttäjä omistaa AppID-tunnuksen, käyttämällä kutsua ISteamUser/CheckAppOwnership. Lisätietoja löytyy yltä kohdasta Kolmannen osapuolen tilien linkittäminen Steam-tileihin.

DRM-vapaan, muun kuin Steam-koontiversion avaaminen

Avaa oman sivustosi sisältö käyttämällä OpenID:ta ja kutsua ISteamUser/CheckAppOwnership, joka on (dokumentoitu edellä). Voit myös lähettää DRM-tekniikkaa sisältämättömän kokoonpanon valinnaisena, ilmaisena lisämateriaalina.

Ohjelmistoa myydään verkkosivustollani, ja se avataan tuotetunnuksella

On parasta, että käyttäjät kirjautuvat suoraan Steam-tilinsä avulla käyttämällä OpenID:ta. OpenID palauttaa käyttäjän 64-bittisen SteamID-tunnuksen, jonka avulla voidaan tarkistaa, että käyttäjä omistaa AppID-tunnuksen, käyttämällä kutsua ISteamUser/CheckAppOwnership. Lisätietoja löytyy yltä kohdasta Kolmannen osapuolen tilien linkittäminen Steam-tileihin.

Pelinsisäisten kohteiden antaminen kolmannen osapuolen tuotetunnuksen rekisteröimisestä

Jos käytät Steamin tavaraluettelopalvelua, varmista, että kohteiden itemdef on määritetty oikein promokohteeksi, ja suorita kutsu ISteamInventory::AddPromoItem sovelluksesta.
Jos käytät omaa kohdetaustajärjestelmääsi, voit suorittaa kutsun ISteamUser::GetAuthSessionTicket pelisovelluksesta ja varmistaa sitten omistajuuden kutsuilla ISteamUserAuth/AuthenticateUserTicket ja ISteamUser/CheckAppOwnership. More Information...

Tuotetunnus määrittää, mikä ohjelmiston versio avataan

Jokaisella pelisi versiolla on oltava oma AppID-tunnuksensa. Suorita kutsu ISteamUser::GetAuthSessionTicket pelisovelluksesta ja varmista sitten omistajuus kutsuilla ISteamUserAuth/AuthenticateUserTicket ja ISteamUser/CheckAppOwnership. Lisätietoja...