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 partner.steam-api.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

Istuntoliput ja Steamworks Web API

Käyttäjän todennus

The following steps detail how to use Session Tickets to verify a user's identity between the user's game client and a secure server:

Omistajuuden tarkistus

Once a user's identity has been verified, a secure server can use the ISteamUser/CheckAppOwnership Web API method to check if the user owns a particular AppID, or call ISteamUser/GetPublisherAppOwnership to retrieve a list of all user owned AppIDs that are associated with the provided Publisher Key.

Salatut sovellusliput

Käyttäjän todennus

The following steps detail how to use Encrypted Application Tickets to verify a user's identity between the user's game client and a secure server:

An example implementation can be found in the Steamworks API Example Application (SpaceWar) project in the SDK. Specifically CSpaceWarClient::RetrieveEncryptedAppTicket and CSpaceWarClient::OnRequestEncryptedAppTicket.

Omistajuuden tarkistus

Steam will only create Encrypted Application Tickets for users who own the AppID for which the ticket was created. After decrypting an Encrypted Application Ticket, the secure server can use SteamEncryptedAppTicket::BIsTicketForApp to verify the AppID of the ticket matches the title's AppID. The server can also use SteamEncryptedAppTicket::BUserOwnsAppInTicket to determine if the user owns a specific piece of Ladattava lisämateriaali (DLC).

Selainpohjainen todennus OpenID:lla

Steam is an OpenID Provider, as described in the OpenID 2.0 specification. Inside a web browser, a third-party website can use OpenID to obtain a user's SteamID which can be used as the login credentials for the 3rd party website, or linked to an existing account on that website.

When using OpenID, the user begins in a web browser at the third-party website. When the user wishes to login/link their account to that website, using OpenID, the site directs the user to a login form on the Steam Community website. Once the user has entered their Steam login credentials, the user's web browser is automatically redirected back to the 3rd party website with some additional OpenID specific data appended to the return URL. The site's OpenID library can then use this data to verify and obtain the user's SteamID.

Steam provides the following images which may be used by 3rd party sites when linking to the Steam sign in page:
sits_large_border.png

sits_large_noborder.png

sits_small.png

Käyttäjän todennus

Steam's OpenID 2.0 implementation can be used to link a users Steam account to their account on the third-party website.
A list of open source OpenID libraries can be found at the OpenID website. To use OpenID to verify a user's identity:
  • 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

Once a user's identity has been verified, a secure server can use the ISteamUser/CheckAppOwnership Web API method to check if the user owns a particular AppID, or call ISteamUser/GetPublisherAppOwnership to retrieve a list of all user owned AppIDs that are associated with the provided Web API Publisher Key.

Esimerkkejä:

Kolmannen osapuolen tilien linkittäminen Steam-tileihin

Third-party accounts can be linked to Steam accounts by associating a user's SteamID with the 3rd party account.

A user's SteamID can be securely retrieved either in-game or through a web browser and once the initial association has occurred, you can safely allow access to the 3rd party account by merely verifying a user's SteamID. This eliminates the need for Steam users to do any sort of secondary login to 3rd party account systems. Additionally, if new 3rd party accounts can be automatically created and linked when a new SteamID is encountered, the Steam user will never have to be aware that a secondary authentication is taking place at all. Instead, their single Steam account can grant access to all of their games, streamlining the user experience and removing potential barriers to installing and trying new games.

Pelin sisältä linkittäminen

Session Tickets can be used to verify a user's identity between a game client and a secure, backend server using the Steamworks Web API:

Selaimesta linkittäminen

Steam supports the OpenID 2.0 specification so that you can allow users to securly log into their Steam accounts from your website and retrieve their SteamID. For details on how to use OpenID with Steam go to Using OpenID

Omistajuuden tarkistus

Once a user's identity has been verified, a secure server can use the ISteamUser/CheckAppOwnership Web API method to check if the user owns a particular AppID, or call ISteamUser/GetPublisherAppOwnership to retrieve a list of all user owned AppIDs that are associated with the provided Web API Publisher Key.

Siirtyminen kolmannen osapuolen tuotetunnuksista natiiveihin Steamin omistajuustarkistuksiin

Steam itself has a number of ways a title can authenticate a user with, removing the need for a third-party CD key. We've compiled a list of common use cases for CD Keys and how you might implement each case natively with Steam:

Yksityisen keskustelupalstan käyttö

You'll want to have users login directly with their Steam account using OpenID. OpenID will return the user's 64bit SteamID which can then be used with ISteamUser/CheckAppOwnership to verify the user owns your appid. More details can be found above at Linking 3rd party accounts to Steam accounts.

DRM-vapaan, muun kuin Steam-koontiversion avaaminen

Use OpenID and ISteamUser/CheckAppOwnership (documented above) to unlock the content on your own site. Alternatively, you could upload the DRM-free build as optional, free DLC.

Ohjelmistoa myydään verkkosivustollani, ja se avataan tuotetunnuksella

You'll want to have users login directly with their Steam account using OpenID. OpenID will return the user's 64bit SteamID which can then be used with ISteamUser/CheckAppOwnership to verify the user owns your appid. More details can be found in Kolmannen osapuolen tilien linkittäminen Steam-tileihin above.

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

If you are using the Steam Inventory Service, make sure the item's itemdef is configured correctly as a promo item and call ISteamInventory::AddPromoItem from the client.
If you have your own item backend, you can call ISteamUser::GetAuthSessionTicket from the game client and then use ISteamUserAuth/AuthenticateUserTicket with ISteamUser/CheckAppOwnership to verify ownership. More Information...

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

Each version of your game should have its own AppID. From the game client, call ISteamUser::GetAuthSessionTicket and then use ISteamUserAuth/AuthenticateUserTicket with ISteamUser/CheckAppOwnership to verify ownership. More Information...