Identity Providers #

Pragma Engine enables cross-play, cross-progression, and cross-platform experiences by supporting multiple identity providers with account linking. This allows players to start on one platform and link their account when switching to another platform.

Identity providers are linked to a Pragma Engine account and used for authentication and platform-specific social integration. These accounts are isolated from player and social data to enable seamless cross-platform experiences.

Test Provider #

The Pragma Engine test provider uses the name Unsafe Provider to indicate that it’s only for internal and testing use cases and should not be enabled in production. It can also be used in load testing to allow the creation of millions of test accounts.

When run in development mode, the platform will populate the Test Provider with default accounts (test01 - test20). To disable the test provider, under social set the canAuthenticate service config setting to false.

social:
  serviceConfigs:
    UnsafeIdentityDaoConfig:
      canAuthenticate: false

Configure Identity Providers #

Pragma Engine is highly configurable. You can enable additional plugins and custom services via the config files located in the 5-ext/config directory. Add the relevant configuration code blocks to local-dev.yml (for testing) or common.yml (for production) under the social section.

For identity providers not listed, studios can implement a custom Identity Provider Plugin. See the Custom Identity Provider concepts page for more information.
Steam configuration
valuedescription
appIdSteam numerical value used to identify a game on Steam
steamWebAPIKeyauthorization key used to connect with the Steam Web API
restrictByAppOwnershipoptional
boolean determining whether to reject users if they don’t own the app or are on a timed trial
restrictByAccountBanoptional
boolean determining whether to reject users who have been developer banned or VAC banned
portalLoginEnabledoptional
boolean determining whether this login method is available on the portal login page
social:
  pluginConfigs:
    AccountService.identityProviderPlugins:
      plugins:
        Steam:
          class: "pragma.account.SteamIdentityProviderPlugin"
          config:
            appId: "${steamAppId}"
            steamWebAPIKey: "${steamWebApiKey}"
            restrictByAppOwnership: false
            restrictByAccountBan: false
            portalLoginEnabled: false
Epic configuration
valuedescription
portalLoginEnabledoptional
boolean determining whether this login method is available on the portal login page
social:
  pluginConfigs:
    AccountService.identityProviderPlugins:
      plugins:
        Epic:
          class: "pragma.account.EpicIdentityProviderPlugin"
          config:
            portalLoginEnabled: false
Discord configuration
valuedescription
clientIdDiscord OAuth ID that identifies developer’s Discord app while making authorization requests
clientSecretencrypted OAuth secret for the Discord app referenced by the clientId property
redirectUribackend authorization endpoint that Discord uses to validate OAuth handshakes
botTokenoptional
unique ID for Discord server bots
guildIdoptional
Discord-defined guild identifier
allowedRoleIdsoptional
map of user roles that are allowed to authenticate
portalLoginEnabledoptional
boolean determining whether this login method is available on the portal login page
social:
  pluginConfigs:
    AccountService.identityProviderPlugins:
      plugins:
        Discord:
          class: "pragma.account.DiscordIdentityProviderPlugin"
          config:
            clientId: "${discordClientId}"
            clientSecret: "${discordClientSecret}"
            redirectUri: "http://localhost:11000/v1/account/discord-redirect"
            botToken: "${discordBotToken}"
            guildId: "${guildId}"
            allowedRoleIds: 
              1: "${RoleId1}"
              2: "${RoleId2}"
            portalLoginEnabled: false
Check out the Unreal and Unity Setup Guides for Discord implementation details.
Google configuration
valuedescription
clientIdGoogle OAuth ID that identifies developer’s Google app while making authorization requests
clientSecretencrypted OAuth secret for the Google app referenced by the clientId property
redirectUribackend authorization endpoint that Google uses to validate OAuth handshakes
allowedDomainsoptional
map of specific domains that are authorized for access–if this value is defined, all other domains are rejected
portalLoginEnabledoptional
boolean determining whether this login method is available on the portal login page
social:
  pluginConfigs:
    AccountService.identityProviderPlugins:
      plugins:
        Google:
          class: "pragma.account.GoogleIdentityProviderPlugin"
          config:
            clientId: "${googleClientId}"
            clientSecret: "${googleClientSecret}"
            redirectUri: "http://localhost:11000/v1/account/google-redirect"
            allowedDomains:
              1: "${allowedDomain1}"
              2: "${allowedDomain2}"
            portalLoginEnabled: false
Check out the Google developer documentation for creating access credentials.
Twitch configuration
valuedescription
clientIdTwitch OAuth ID that identifies developer’s Twitch app while making authorization requests
clientSecretencrypted OAuth secret for the Twitch app referenced by the clientId property
redirectUribackend authorization endpoint that Twitch uses to validate OAuth handshakes
portalLoginEnabledoptional
boolean determining whether this login method is available on the portal login page
social:
  pluginConfigs:
    AccountService.identityProviderPlugins:
      plugins:
        Twitch:
          class: "pragma.account.TwitchIdentityProviderPlugin"
          config:
            clientId: "${twitchClientId}"
            clientSecret: "${twitchClientSecret}"
            redirectUri: "http://localhost:11000/v1/account/twitch-redirect"
            portalLoginEnabled: false
Playstation configuration
Pragma Engine supports PlayStation Network integration. Contact us for details.

View identity providers in Portal #

  1. From the Social Pragma Portal, click Services, then click Accounts.

  2. Click on the relevant player name to view individual account information.

  3. View the player’s identity providers.

Contents #

TopicDescription
Custom Identity ProvidersCreate a custom identity provider.