Steamworks Belgeleri
Kullanıcı Doğrulama ve Sahiplik

Genel Bakış

Steamworks, bir Steam kullanıcısının kimliğini ve bir uygulamanın sahipliğini doğrulamak için çeşitli yollar sunar. Bu belge aşağıdaki senaryolar için kullanılan doğrulama yöntemlerinin her birini açıklar:

Steam içerisine bir kullanıcıyı tanımak

Her Steam kullanıcısı aynı zamanda Steam ID olarak da bilinen, eşsiz 64-bit sayısal kimlikleri ile belirlenebilir. Steamworks C++ API'ları içerisine bir kullanıcının SteamID'si bir CSteamID objesi içerisinde saklanır. Mevcut kullanıcının SteamID'sini ISteamUser::GetSteamID çağrısı yaparak getirebilir ve daha sonra getirilen değer üzerinde CSteamID.ConvertToUint64() çağrısı ile 64-bit kimliğe ulaşabilirsiniz.

Aşağıdaki doğrulama yöntemleri bir kullanıcının Steam ID'sini güvenli bir şekilde doğrulamak için kullanılabilir.

Bu belgede anlatılan API'lar

Oturum Biletleri

Oturum Biletleri, kullanıcının oyun istemcisi ve herhangi bir farklı sayıda oyun istemcisi arasında (peer-to-peer çok oyunculu oturumlar gibi) veya bir adanmış oyun sunucusu (ISteamGameServer API'ı kullanarak) arasında bir kullanıcının kimliğini doğrulamak için kullanılabilen imzalanmış biletlerdir. Bu biletler ayrıca mevcut oyunun, ilgili indirilebilir içeriğin sahipliğini veya kullanıcının VAC yasaklısı (bkz. Valve Anti Hile (VAC) ve Oyun Yasaklamaları) olup olmadığını doğrulamak için de kullanılabilir.
Oturum Biletleri bunun dışında bir kullanıcının kimliğini bir oyun istemcisi ile güvenli bir arka uç sunucusu arasında Steamworks Web API kullanarak doğrulayabilir. Güvenli sunucunun partner.steam-api.com adresine HTTPS istekleri yapabilmesini gerektirir.

Şifrelenmiş Uygulama Biletleri

Şifrelenmiş Uygulama Biletleri bir kullanıcının kimliğini bir oyun istemcisi ile güvenli bir arka uç sunucusu arasında doğrulamak için kullanılabilir. Oturum Biletlerinin aksine Şifrelenmiş Uygulama Biletlerinin doğrulanması HTTPS istekleri yapan güvenli bir sunucu ihtiyacı duymaz. Bunun yerine bileti doğrulamak için güvenli sunucu tarafından bir C++ kütüphanesi ile özel bir simetrik anahtar kullanılır. Steamworks SDK'sı bu kütüphanenin Windows ve Linux için olan 32-bit ve 64-bit sürümlerini public/steam/lib dosya yolunda barındırır.
Şifrelenmiş Uygulama Biletlerini kullanmadan önce her bir oyununuz için bir özel anahtar oluşturmalısınız. Bunu, uygulamanızın Steamworks Ayarlarını Düzenle sayfasına giderek 'Güvenlik' açılır menüsünden 'SDK Doğrulaması' seçeneğini seçerek yapabilirsiniz. Bu anahtar oyununuzun ve o oyunun herhangi bir indirilebilir içeriği için AppID'si ile ilişkilendirilir.

NOT: Bu anahtarları güvenli bir şekilde saklanmalı ve uygulamanız içerisinde herhangi bir şekilde dağıtılmamalıdır!

Steamworks Web API

Steam, pek çok Steamworks özelliğine erişim için kullanılabilen HTTP temelli bir Web API sunar. API, bir oyun istemcisi veya sunucusu gibi, bir HTTP isteği yapabilecek herhangi bir uygulamadan erişilebilecek herkese açık yöntemler içerir. API ayrıca doğrulama gerektiren korumalı yöntemler de içerir. Ve bu yöntemlere erişimin güvenilen arka uç uygulamaları olması amaçlanmıştır. Web API hakkında daha fazla detayı burada bulabilirsiniz.

P2P veya Oyun Sunucuları

Oturum Biletleri

Kullanıcı Doğrulaması

Aşağıdaki adımlar bir kullanıcının kimliğini, kullanıcının oyun istemcisi (istemci A) ile başka bir istemci veya oyun sunucusu (istemci B) arasında doğrulamak için nasıl Oturum Biletlerinin kullanılacağını anlatıyor:

Oturum Biletleri ile ilgili birkaç önemli not:
  • Oturum Biletleri sadece bir kere kullanılmalıdır. ISteamUser::GetAuthSessionTicket çağrısı, çok oyunculu oyun oturumunda bilet isteğinde bulunan bütün istemciler için çağırılmalıdır.
  • Peer-to-peer çok oyunculu oyun oturumunda oyuncuları doğrulamak için kullanıldığında her oyun istemcisi o çok oyunculu oyun oturumunda yer alan diğer bütün oyun istemcilerinin kimliğini doğrulamalıdır.
  • Bir Oturum Biletinin işi bittiği zaman ISteamUser::GetAuthSessionTicket tarafından getirilen her bir tanıtıcı için ISteamUser::CancelAuthTicket çağrısı yapılmalıdır.
  • İstemci A ISteamUser::CancelAuthTicket çağrısı yaptığında istemci B, istemci A'nın biletinin artık geçerli olmadığını belirten bir ISteamUser::ValidateAuthTicketResponse_t geri çağrısı alacaktır.
  • İstemci A, istemci B ile birlikte oynadığı bir oyundan çıktığı zaman, eğer istemci A'nın ISteamUser::CancelAuthTicket çağrısı istemci B'nin ISteamUser::EndAuthSession çağrısından önce işlenirse o zaman istemci B, biletin iptal edildiğini belirten bir ISteamUser::ValidateAuthTicketResponse_t geri çağrısı alacaktır. İstemci A'nın çıkışı konusunda ortak bir anlayış olmasından dolayı bu geri çağrı görmezden gelinecektir.
  • Ağ durumları, Steam arka ucunun ISteamUser::BeginAuthSession çağrısını gerçekleştirene belirsiz bir süre için bir geri çağrı oluşturmasının önüne geçebilir. ISteamUser::BeginAuthSession çağrısının sahibi (İstemci B) bu geri çağrı alınana dek istemci A'nın gerçek kimliğimi bildiğini düşünmemeli. Ancak çok oyunculu oyun oturumunun devam etmesine izin vermeli.
  • Eğer ISteamUser::BeginAuthSession çağrısının sahibi bir istemci A için olan biletin geçersiz olduğunu belirten bir ISteamUser::ValidateAuthTicketResponse_t çağrısı alırsa, çağrıyı yapan taraf, istemci A ile çok oyunculu oyun oturumunu devam etmek için bu çağrıyı reddetmelidir. Eğer oyundaki diğer eşler istemci A ile oynamayı reddeder ise çağrıyı yapan çok oyunculu oyun oturumunu terk etmeli.
  • ISteamGameServer çağrısı bir oyun istemcisi ile bir oyun sunucus uarasındaki doğrulama işlemini gerçekleştirmek için ayın Oturum Biletleri yöntemini gösterir.

Sahiplik Doğrulaması

Oturum Biletleri kullanırken Steam otomatik olarak mevcut AppID'nin sahipliğini doğrular. Eğer kullanıcı mevcut AppID'ye sahip değil ise o zaman ISteamUser::ValidateAuthTicketResponse_t çağrısının m_eAuthSessionResponse alanı k_EAuthSessionResponseNoLicenseOrExpired olarak ayarlanacaktır. Bir kullanıcının Oturum Biletini alıp ISteamUser::BeginAuthSession çağrısına gönderdikten sonra ISteamUser::UserHasLicenseForApp çağrısı kullanılarak kullanıcının belirli bir indirilebilir içeriğe sahip olup olmadığına bakılabilir.

Arka Uç Sunucusu

Oturum Biletleri ve Steamworks Web API

Kullanıcı Doğrulaması

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:

Sahiplik Doğrulaması

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.

Şifrelenmiş Uygulama Biletleri

Kullanıcı Doğrulaması

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.

Sahiplik Doğrulaması

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 İndirilebilir İçerik (DLC).

OpenID ile Web Tarayıcı temelli doğrulama

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

Kullanıcı Doğrulaması

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:
  • OpenID kütüphanenizi aşağıdaki bağlantıyı Steam'in OP bitiş noktası bağlantısı olarak kullanması için ayarlayın:https://steamcommunity.com/openid/
  • Bir kullanıcı doğrulandıktan sonra kullanıcının alınan ID'si kullanıcının SteamID'sini içerecektir. Steam'in aldığı ID biçimi: http://steamcommunity.com/openid/id/<steamid>.

Sahiplik Doğrulaması

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.

Örnekler

Üçüncü parti hesapları Steam hesapları ile bağlamak

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.

Oyun İçi Bağlama

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:

Bir Web Tarayıcısından Bağlama

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

Sahiplik Doğrulaması

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.

Üçüncü Parti CD Anahtarlarından yerel Steam Sahiplik Kontrollerine Geçiş

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:

Özel Forum Erişimi

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.

Bir oyunun Steam dışı, DRM'siz bir derlemesini açmak

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.

Yazılım web sitem üzerinden satılıyor ve bir anahtar ile erişilebiliyor

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 Üçüncü parti hesapları Steam hesapları ile bağlamak above.

Üçüncü parti anahtarınızı kaydederek oyun içerisinde öğe sağlama

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

Anahtar yazılımın hangi sürümünün erişilebildiğini kontrol ediyor

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