How to Validate Ownership of Steam App

Hi there,

So we are looking in to a compliance issue where we aren’t currently checking that the steam user that is playing the game currently owns the game.

Currently User A can have the game in their steam library and then User B on the same PC can sign in to their steam account but run the game by navigating to out games .exe in the steamapps folder. This shouldn’t be allowed if User B doesn’t own the game as well.

I am looking at the steamworks documentation on this subject: User Authentication and Ownership (Steamworks Documentation)

Can someone advise how to do this in UE5.6?

Looking at the code I can see there is an FOnlineAuthSteam which can be grabbed by calling:

FOnlineSubsystemSteam::GetAuthInterface()

But i end up with compile errors when attempting to call any functions from it.

We’ve been currently using the GetEncryptedAppTicketInterface to get our auth tokens but that interface doesn’t implement:

Any advice on this matter would be greatly appreciated.

Thanks

Lewis

'OnlineEncryptedAppTicketInterfaceSteam.h' in 'DinnerEditor-OnlineSubsystemSteam-Win64-Debug.dll' was not compiled with Edit and Continue enabled. Ensure that the file is compiled with the Program Database for Edit and Continue (/ZI) option at Project Properties > C/C++ > Debug Information Format.
'AuthenticateUser': is not a member of 'TSharedPtr<FOnlineAuthSteam,ESPMode::ThreadSafe>'
'OnlineEncryptedAppTicketInterfaceSteam.cpp' in 'DinnerEditor-OnlineSubsystemSteam-Win64-Debug.dll' was not compiled with Edit and Continue enabled. Ensure that the file is compiled with the Program Database for Edit and Continue (/ZI) option at Project Properties > C/C++ > Debug Information Format.
'OnlineEncryptedAppTicketInterfaceSteam.h' in 'DinnerEditor-HydraExtras-Win64-Debug.dll' was not compiled with Edit and Continue enabled. Ensure that the file is compiled with the Program Database for Edit and Continue (/ZI) option at Project Properties > C/C++ > Debug Information Format.
The command "..\..\Build\BatchFiles\Build.bat -Target="DinnerEditor Win64 Debug -Project=\"D:\Projects\Dinner\Dinner\Dinner.uproject\"" -Target="ShaderCompileWorker Win64 Development -Project=\"D:\Projects\Dinner\Dinner\Dinner.uproject\" -Quiet" -WaitMutex -FromMsBuild -architecture=x64" exited with code 6.
use of undefined type 'FOnlineAuthSteam'



After looking in to this more. It seems as though i can set bRelaunchInSteam=true in the config files and this seems to validate the user ownership but also makes sure that the steam client must be running when trying to run the game.

RelaunchInSteam will work as a low-level DRM, there are still methods of bypassing it easily. If you want to truly validate app ownership you will need to get the auth token in the identity interface and send it up to a third party backend server which will authenticate via Steam’s web API to verify ownership.

-Jake