Dokumentasi Steamworks
Autentikasi Pengguna dan Verifikasi Kepemilikan

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:

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:
sits_large_border.png

sits_large_noborder.png

sits_small.png

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