Ringkasan
Steamworks memiliki beberapa metode untuk mengautentikasi identitas pengguna Steam dan memverifikasi kepemilikan aplikasi. Dokumen ini menjelaskan masing-masing metode autentikasi yang digunakan dalam skenario berikut:
- Antara client game dan client lain (P2P) atau server game, menggunakan Sesi Tiket
- Antara client game dan server backend, menggunakan:
- Saat pengguna dalam peramban web, menggunakan OpenID dan Web API Steamworks
Mengidentifikasi pengguna dalam Steam
Setiap pengguna Steam dapat diidentifikasi secara unik dengan ID numerik 64-bit, yang disebut sebagai
ID Steam
pengguna. Di API Steamworks C++, ID Steam pengguna berada dalam objek
CSteamID. Kamu dapat mengambil ID Steam pengguna saat ini dengan memanggil
ISteamUser::GetSteamID, lalu ambil ID 64-bit dengan memanggil
CSteamID.ConvertToUint64()
pada nilai yang dikembalikan.
Metode di bawah ini dapat digunakan untuk memverifikasi ID Steam pengguna secara aman.
API yang tercakup dalam dokumen ini
Tiket Sesi
Tiket Sesi adalah tiket yang ditandatangani yang dapat digunakan untuk memverifikasi identitas pengguna antara client game pengguna dan sejumlah client game lainnya (seperti dalam sesi multipemain P2P) atau ke server game khusus (menggunakan API
ISteamGameServer). Tiket ini juga dapat digunakan untuk memverifikasi kepemilikan game dan DLC terkait pada saat ini, juga melihat apabila pengguna terkena ban VAC (Lihat
Valve Anti-Cheat (VAC) dan Ban Game).
Tiket Sesi juga dapat digunakan untuk memverifikasi identitas pengguna antara client game dan server backend yang aman dengan menggunakan
Web API Steamworks. Mengharuskan server yang aman untuk dapat membuat permintaan HTTPS ke
partner.steam-api.com
.
Tiket Aplikasi Terenkripsi
Tiket Aplikasi Terenkripsi dapat digunakan untuk memverifikasi identitas pengguna antara client game dan server backend yang aman. Berbeda dengan Tiket Sesi, memverifikasi Tiket Aplikasi Terenkripsi
tidak mengharuskan server yang aman untuk dapat membuat permintaan HTTPS. Sebagai gantinya, pustaka C++ dan key privat yang simetris akan digunakan oleh server yang aman untuk memverifikasi tiket. SDK Steamworks menyertakan versi pustaka 32-bit dan 64-bit untuk Windows dan Linux di direktori
public/steam/lib
.
Sebelum menggunakan Tiket Aplikasi Terenkripsi, kamu harus membuat key privat untuk setiap game-nya. Lakukan di Pengaturan Edit Steamworks untuk aplikasimu dan pilih "Autentikasi SDK" dari menu drop down "Keamanan". Key ini akan dikaitkan dengan AppID game-mu dan DLC apa pun untuk game tersebut. Agar dapat mengakses bagian ini di Steamworks, pengguna harus memiliki perizinan "Kelola Penandatanganan" untuk aplikasi yang relevan.
CATATAN: Key ini harus disimpan dengan aman dan tidak boleh didistribusikan dalam aplikasimu dengan cara apa pun!
Web API Steamworks
Steam mengekspos HTTP berbasis Web API yang dapat digunakan untuk mengakses banyak fitur Steamworks. API berisi metode publik yang dapat diakses dari aplikasi mana pun yang mampu membuat permintaan HTTP, seperti client atau server game. API juga berisi merode terlindungi yang memerlukan autentikasi dan ditujukan untuk diakses dari backend aplikasi terpercaya. Rincian selengkapnya terkait Web API dapat ditemukan
di sini.
P2P atau Server Game
Tiket Sesi
Autentikasi Pengguna
Langkah-langkah di bawah ini menjelaskan tentang cara menggunakan Tiket Sesi untuk memverifikasi identitas pengguna antara client game pengguna (Client A) dan client atau server game lainnya (Client B):
Beberapa catatan penting terkait Tiket Sesi:
Verifikasi Kepemilikan
Saat menggunakan Tiket Sesi, Steam akan secara otomatis memverifikasi kepemilikan AppID saat ini. Jika pengguna bukanlah pemilik AppID saat ini, maka kolom
m_eAuthSessionResponse
ISteamUser::ValidateAuthTicketResponse_t akan diatur ke
k_EAuthSessionResponseNoLicenseOrExpired. Setelah menerima Tiket Sesi pengguna dan meneruskannya ke
ISteamUser::BeginAuthSession, maka
ISteamUser::UserHasLicenseForApp dapat digunakan untuk melihat apabila pengguna memiliki bagian DLC tertentu.
Server Backend
Tiket Sesi dan Web API Steamworks
Autentikasi Pengguna
Langkah-langkah di bawah ini menjelaskan tentang cara menggunakan Tiket Sesi untuk memverifikasi identitas pengguna antara client game pengguna dan server yang aman:
Verifikasi Kepemilikan
Setelah identitas pengguna diverifikasi, server yangg aman dapat menggunakan metode Web API
ISteamUser/CheckAppOwnership untuk memeriksa jika pengguna memiliki AppID tertentu, atau memanggil
ISteamUser/GetPublisherAppOwnership untuk mengambil daftar semua AppID milik pengguna yang terkait dengan
Key Penerbit.
Tiket Aplikasi Terenkripsi
Autentikasi Pengguna
Langkah-langkah di bawah ini menjelaskan tentang cara menggunakan Tiket Aplikasi Terenkripsi untuk memverifikasi identitas pengguna antara client game pengguna dan server yang aman:
Contoh implementasinya dapat ditemukan di proyek
Steamworks API Example Application (SpaceWar) di SDK. Khususnya
CSpaceWarClient::RetrieveEncryptedAppTicket
dan
CSpaceWarClient::OnRequestEncryptedAppTicket
.
Verifikasi Kepemilikan
Steam hanya akan membuat Tiket Aplikasi Terenkripsi untuk pengguna yang memiliki AppID yang tiketnya telah dibuat. Setelah mendekripsi Tiket Aplikasi Terenkripsi, server yang aman dapat menggunakan
SteamEncryptedAppTicket::BIsTicketForApp untuk memverifikasi apakah AppID tiket cocok dengan AppID game-nya. Server juga dapat menggunakan
SteamEncryptedAppTicket::BUserOwnsAppInTicket untuk melihat apabila pengguna memiliki
DLC spesifik.
Autentikasi berbasis peramban web dengan OpenID
Steam merupakan sebuah Penyedia
OpenID, seperti yang dijelaskan di spesifikasi OpenID 2.0. Di dalam peramban web, situs web pihak ketiga dapat menggunakan OpenID untuk mendapatkan ID Steam pengguna yang dapat digunakan sebagai kredensial login untuk situs web pihak ketiga, atau ditautkan ke akun yang ada di situs web itu.
Saat menggunakan OpenID, pengguna akan memulai dari situs web pihak ketiga di peramban web mereka. Saat pengguna ingin login/menautkan akun mereka ke situs web menggunakan OpenID, situs tersebut akan mengarahkan pengguna ke untuk login di situs web Komunitas Steam. Setelah pengguna memasukkan kredensial login Steam mereka, peramban web pengguna akan secara otomatis diarahkan kembali ke situs web pihak ketiga dengan beberapa data spesifik OpenID tambahan
yang ditambahkan ke URL yang dikembalikan. Pustaka OpenID situsnya kemudian dapat menggunakan data ini untuk memverifikasi dan mendapatkan ID Steam pengguna.
Steam menyediakan gambar di bawah ini yang dapat digunakan oleh situs pihak ketiga saat menautkan ke halaman login Steam:



Autentikasi Pengguna
Implementasi OpenID 2.0 Steam dapat digunakan untuk menautkan akun Steam pengguna ke akun mereka di situs web pihak ketiga.
Daftar pustaka OpenID open source dapat ditemukan di
situs web OpenID. Untuk menggunakan OpenID untuk memverifikasi identitas pengguna:
- Konfigurasikan pustaka OpenID milikmu untuk menggunakan URL berikut sebagai URL Titik Akhir OP Steam:
https://steamcommunity.com/openid/
- Setelah pengguna diautentikasi, ID yang diklaim pengguna akan berisi ID Steam pengguna tersebut. Format ID yang diklaim Steam adalah:
http://steamcommunity.com/openid/id/<steamid>
.
Verifikasi Kepemilikan
Setelah identitas pengguna diverifikasi, server yang aman dapat menggunakan metode Web API
ISteamUser/CheckAppOwnership untuk memeriksa jika pengguna memiliki AppID tertentu, atau memanggil
ISteamUser/GetPublisherAppOwnership untuk mengambil daftar semua AppID milik pengguna yang terkait dengan
Key Penerbit Web API.
Contoh
Menautkan akun pihak ketiga ke akun Steam
Akun pihak ketiga dapat ditautkan ke akun Steam dengan mengaitkan ID Steam pengguna dengan akun pihak ketiga.
ID Steam pengguna dapat diambil dengan aman baik dari dalam game atau melalui peramban web dan setelah pengaitan awal terjadi, kamu dapat dengan aman mengizinkan akses ke akun pihak ketiga hanya dengan memverifikasi ID Steam pengguna. Dengan begitu, pengguna Steam tidak perlu melakukan login sekunder ke sistem akun pihak ketiga. Selain itu, jika akun pihak ketiga yang baru dapat dibuat dan ditautkan secara otomatis ketika ID Steam yang baru ditemukan, autentikasi sekunder dapat dilakukan tanpa mengharuskan pengguna melakukan apa pun. Sebaliknya, akun Steam mereka dapat memberikan akses ke semua game mereka, menyederhanakan pengalaman pengguna, dan menghilangkan potensi munculnya hambatan dalam menginstal dan mencoba game baru.
Menautkan dari Dalam Game
Tiket Sesi dapat digunakan untuk memverifikasikan identitas pengguna antara client game dan server backend yang aman menggunakan Web API Steamworks:
Menautkan dari Peramban Web
Steam mendukung spesifikasi OpenID 2.0 sehingga kamu dapat mengizinkan pengguna untuk login dengan aman ke akun Steam mereka dari situs webmu dan mengambil ID Steam mereka. Untuk rincian cara menggunakan OpenID dengan Steam, lihat bagian
Menggunakan OpenID.
Verifikasi Kepemilikan
Setelah identitas pengguna diverifikasi, server yang aman dapat menggunakan metode Web API
ISteamUser/CheckAppOwnership untuk memeriksa jika pengguna memiliki AppID tertentu, atau memanggil
ISteamUser/GetPublisherAppOwnership untuk mengambil daftar semua AppID milik pengguna yang terkait dengan
Key Penerbit Web API.
Daftar Periksa untuk Perpindahan CD Key Pihak Ketiga ke Kepemilikan Asli Steam
Steam menyediakan berbagai cara bagi game untuk mengautentikasi pengguna, sehingga CD Key pihak ketiga tidak lagi diperlukan. Kami telah menyusun daftar kasus penggunaan umum CD Key dan cara untuk mengimplementasikan setiap kasusnya secara alami dengan Steam:
Akses Forum Privat
Sarankan pengguna untuk login langsung dengan akun Steam mereka menggunakan OpenID. OpenID akan mengembalikan ID Steam 64-bit pengguna yang kemudian dapat digunakan dengan
ISteamUser/CheckAppOwnership untuk memverifikasi apabila pengguna memiliki AppID-mu. Rincian selengkapnya dapat ditemukan di atas pada bagian
.Membuka build game non-Steam dan bebas DRM
Gunakan OpenID dan ISteamUser/CheckAppOwnership (
didokumentasikan di atas) untuk membuka konten di situsmu. Atau, kamu dapat mengunggah build bebas DRM sebagai DLC opsional dan gratis.
Software ini dijual di situs web saya dan dibuka dengan key
Sarankan pengguna untuk login langsung dengan akun Steam mereka menggunakan OpenID. OpenID akan mengembalikan ID Steam 64-bit pengguna yang kemudian dapat digunakan dengan
ISteamUser/CheckAppOwnership untuk memverifikasi apabila pengguna memiliki AppID-mu. Rincian selengkapnya dapat ditemukan di bagian
Menautkan akun pihak ketiga ke akun Steam di atas.
Memberikan item dalam game karena mengaktifkan key pihak ketiga
Jika kamu menggunakan
Layanan Inventaris Steam, pastikan ItemDef item dikonfigurasikan dengan benar sebagai item promo dan panggil
ISteamInventory::AddPromoItem dari client.
Jika kamu memiliki item backend sendiri, panggil
ISteamUser::GetAuthSessionTicket dari client game, lalu gunakan
ISteamUserAuth/AuthenticateUserTicket dengan
ISteamUser/CheckAppOwnership untuk memverifikasi kepemilikan.
Info lebih lanjut...Key mengontrol versi software mana yang dibuka
Setiap versi dari game-mu harus memiliki AppID-nya masing-masing. Dari client game, panggil
ISteamUser::GetAuthSessionTicket, lalu gunakan
ISteamUserAuth/AuthenticateUserTicket dengan
ISteamUser/CheckAppOwnership untuk memverifikasi kepemilikan.
Info lebih lanjut...