Mitgliedsfreie Ansicht

Startseite Dokumentation & Hilfe
Steamworks-Dokumentation
User Authentication and Ownership

Übersicht

Steamworks stellt mehrere Methoden bereit, um die Identität eines Steam-Nutzers und die Eigentumsrechte für eine Anwendung zu verifizieren. Diese Dokumentation beschreibt jede dieser Authentifizierungsmethoden, die in folgenden Szenarien angewendet werden:

Identifying a user within Steam

Every Steam user can be uniquely identified by a 64-bit numeric ID, known as the user's Steam ID. In the Steamworks C++ APIs, a user's SteamID is contained within a CSteamID object. You can retrieve the current user's SteamID by calling ISteamUser::GetSteamID and then retrieve the 64-bit ID by calling CSteamID.ConvertToUint64() on the returned value.

The following authentication methods can be used to securely verify a user's Steam ID.

In dieser Dokumentation behandelte APIs

Sitzungstickets

Session Tickets are signed tickets that can be used to verify a user's identity between the user's game client and any number of other game clients (such as in a peer-to-peer multiplayer session) or to a listen/dedicated game server (using the ISteamGameServer API). These tickets can also be used to verify ownership of the current game and related downloadable content, and determine if the user has been VAC-banned (See VAC- (Valve Anti-Cheat) und Spielausschlüsse).
Session Tickets can also be used to verify a user's identity between a game client and a secure, backend server using the Steamworks Web API. Requires that the secure server can make HTTPS requests to api.steampowered.com.

Verschlüsselte Anwendungstickets

Encrypted Application Tickets can be used to verify a user's identity between a game client and a secure, backend server. Unlike Session Tickets, verifying Encrypted Application Tickets does not require that the secure server can make HTTPS requests. Stattdessen verifiziert der gesicherte Server das Ticket anhand einer C++-Bibliothek und eines privaten, symmetrischen Schlüssels. The Steamworks SDK includes 32-bit and 64-bit versions of this library for Windows and Linux under the public/steam/lib directory.
Before using Encrypted Application Tickets, you must generate a private key for each title. You can do this by navigating to Edit Steamworks Settings for your application and selecting 'SDK Auth' from the 'Security' drop-down. Der Schlüssel wird mit der App-ID für Ihren Titel und allen zugehörigen Zusatzinhalten verknüpft.

NOTE: These keys must be stored securely, and must not be distributed within your application in any way!

Steamworks-Web-API

Steam stellt eine HTTP-basierte Web-API bereit, mit der Sie auf viele Steamworks-Funktionen zugreifen können. Die API umfasst öffentliche Methoden, die aus jeder Anwendung erreichbar sind, die HTTP-Anfragen senden kann, zum Beispiel Spielclients oder Spielserver. Außerdem enthält die API geschützte Methoden, die eine Authentifizierung erfordern und nur von vertrauenswürdigen Backend-Anwendungen aufgerufen werden sollen. More details on the Web API can be found here.

P2P- oder Spielserver

Sitzungstickets

User Authentication

The following steps detail how to use Session Tickets to verify a user's identity between the user's game client (client A) and another client or game server (client B):

Einige wichtige Hinweise zu Sitzungstickets:

Eigentumsprüfung

Bei Verwendung von Sitzungstickets verifiziert Steam automatisch die Eigentumsrechte für die aktuelle App-ID. If the user does not own the current AppID, then m_eAuthSessionResponse field of the ISteamUser::ValidateAuthTicketResponse_t will be set to k_EAuthSessionResponseNoLicenseOrExpired. After receiving a user's Session Ticket and passing it to ISteamUser::BeginAuthSession then, ISteamUser::UserHasLicenseForApp can be used to determine if the user owns a specific piece of downloadable content.

Backend-Server

NOTE: This method of user authentication cannot be used by games that intend to utilize Valve Anti-Cheat.

Sitzungstickets und die Steamworks-Web-API

Nutzerauthentifizierung

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:

Eigentumsprüfung

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.

Verschlüsselte Anwendungstickets

Nutzerauthentifizierung

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.

Eigentumsprüfung

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 Zusatzinhalte (DLC).

Web Browser based authentication with OpenID

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

Nutzerauthentifizierung

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:
  • Configure your OpenID library to use the following URL as Steam's OP Endpoint URL: https://steamcommunity.com/openid/
  • After a user has been authenticated, the user's Claimed ID will contain the user's SteamID. The Steam Claimed ID format is: http://steamcommunity.com/openid/id/<steamid>.

Eigentumsprüfung

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.

Beispiele

Linking third-party accounts to Steam accounts

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.

Verknüpfungen aus dem Spiel heraus

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:

Verknüpfungen aus einen Webbrowser

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

Eigentumsprüfung

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.

Migrating from Third-Party CD Keys to native Steam Ownership Checks

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:

Private Forum Access

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.

Freischalten eines DRM-freien Nicht-Steam-Builds eines Spiels

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.

Die Software wird auf meiner eigenen Website verkauft und mit einem Schlüssel freigeschaltet

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 Linking third-party accounts to Steam accounts above.

Dropping in-game items for registering your third-party key

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

Der Schlüssel steuert, welche Version der Software freigeschaltet wird

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