Le jeton OIDC est un outil permettant d'accéder aux jetons d'un fournisseur d'identité compatible avec OIDC, puis de les exposer, de les allouer et de les actualiser. Il est utile pour paramétrer divers services cloud afin qu'ils fonctionnent avec l'Unreal Editor, notamment un CDD cloud. Dans cette page, vous trouverez des informations sur la configuration de l'outil Jeton OIDC et sur la configuration des fournisseurs d'identité.
Configuration
Vous pouvez enregistrer le fichier de configuration à l'emplacement Engine\Programs\OidcToken\oidc-configuration.json ou <Jeu>\Programs\OidcToken\oidc-configuration.json
L'exemple suivant illustre le fonctionnement du fichier de configuration :
{
"OidcToken": {
"Providers": {
"MyOwnProvider": {
"ServerUri": "https://<url-to-your-provider>",
Configurer un fournisseur d'identité
Dans cette section, nous vous expliquons comment configurer certains des fournisseurs d'identité (IdP) les plus courants.
Okta
Vous devez configurer les éléments suivants pour utiliser Okta en tant qu'IdP :
Un client (application) pour une connexion interactive (par les utilisateurs).
Un serveur d'autorisation personnalisé pour contrôler la manière dont Okta mappe les revendications et les étendues, ainsi que certains groupes auxquels vous pouvez affecter des utilisateurs pour gérer le contrôle d'accès.
Si vous souhaitez l'exécuter dans une batterie de builds où la connexion interactive est impossible, vous devez configurer un autre client (application) pour pouvoir établir les connexions.
Okta ne prend pas en charge les connexions OIDC sans serveurs d'autorisation personnalisés. Pour en créer un, consultez la documentation d'Okta sur les serveurs d'autorisation (en anglais).
Pour configurer Okta en tant que fournisseur d'identité, procédez comme suit :
Ouvrez le tableau d'administration d'Okta.
Cliquez sur Applications > Applications.
Créez le client pour une connexion interactive et activez les types d'octrois suivants :
Refresh Tokens
Authorization Code
Nous vous recommandons de spécifier plusieurs URL de connexion sous localhost. Par exemple :
http://localhost:8749/oidc-token
http://localhost:8750/oidc-token
http://localhost:8751/oidc-token
http://localhost:8752/oidc-token
http://localhost:8753/oidc-token
http://localhost:8754/oidc-token
Cela permet à l'application de fonctionner sur plusieurs ports locaux pendant le processus de connexion, et d'éviter les problèmes liés à l'occupation des ports.
Les ports répertoriés ci-dessus sont un exemple arbitraire. Choisissez les ports qui répondent à vos besoins.
Configurez le client de connexion sans surveillance, similaire au client que vous avez créé lors des étapes précédentes, mais avec les modifications suivantes :
Utilisez plutôt le type d'octroi Client Credentials.
Il n'est pas nécessaire de spécifier d'URL de connexion.
Vous devez utiliser des objets de profil avec votre client. Pour découvrir comment mettre à jour un profil créé, consultez la documentation d'Okta sur la mise à jour des attributs de profil (en anglais).
Après avoir créé les informations d'identification du client que vous souhaitez utiliser pour les connexions sans surveillance, envoyez la charge utile correspondante, comme dans l'exemple suivant :
C++"profile": { "clientCredentialsGroups": [ "app-ue-storage-project-your-project-name" ] }Mettez à jour votre revendication de groupes dans le serveur d'autorisation personnalisé en procédant comme suit :
Vous pouvez mapper des groupes d'utilisateurs comme vous le souhaitez, mais vous devez créer au moins un groupe qui inclut tous les utilisateurs auxquels vous souhaitez donner accès. Chez Epic Games, nous en avons généralement un par projet.
Vous devez également créer un groupe administrateurs pour les utilisateurs qui bénéficient d'un accès privilégié.
Utilisez une convention d'affectation de noms qui facilite l'identification des groupes que vous souhaitez utiliser. Ainsi, seuls les groupes qui s'appliquent aux éléments de l'Unreal Engine seront envoyés dans le cadre des jetons, et non tous les groupes auxquels appartient un utilisateur.
Assurez-vous d'attribuer au moins un utilisateur à chaque groupe lors de leur création.
Sur la page d'administration d'Okta, configurez le serveur d'autorisation personnalisé sous Security > API.
Les serveurs d'autorisation personnalisés sont une extension d'Okta qui n'est peut-être pas disponible pour vous, mais qui est nécessaire pour qu'Okta puisse gérer les connexions OIDC.
Pour créer le serveur d'autorisation, cliquez sur Create Authorization Server . Ce serveur d'autorisation n'est pas propre au CDD cloud. Vous pouvez l'utiliser pour tous les services d'Unreal Engine de votre choix.
Modifiez le serveur d'autorisation et configurez le champ Access Policies. Créez une stratégie pour chaque client et configurez-la pour permettre à ce client de se connecter.
Ouvrez la section Claims correspondant au type de jeton d'accès, puis configurez une revendication de groupes et paramétrez-la pour filtrer les groupes que vous souhaitez utiliser, ainsi que pour inclure
clientCredentialsGroups. Utilisez cette expression personnalisée :C++(appuser != null) ? Arrays.flatten( Groups.startsWith("OKTA", "app-ue-", 100) == null ? {} : Groups.startsWith("OKTA", "app-ue-", 100) ) : app.profile.clientCredentialsGroup1sCelle-ci permet de filtrer les groupes qui commencent par
app-ue.Configurez une étendue cache_access, qui peut être utilisée pour les connexions de batteries de builds.
Okta devient votre fournisseur d'identité une fois cette procédure terminée.
Comment tester Okta en tant que fournisseur d'identité
Pour tester Okta, procédez comme suit :
Dans le serveur d'autorisation, accédez à Token Preview.
Choisissez le client de connexion interactive avec le type d'octroi Authorization Code.
Sélectionnez l'utilisateur affecté au groupe approprié.
Lorsque vous prévisualisez ce jeton, le JSON affiché doit inclure une matrice de groupes qui contient les noms des groupes que vous avez attribués.
Microsoft Entra (AzureAD)
Pour configurer Microsoft Entra en tant que fournisseur d'identité, procédez comme suit :
Accédez au portail de Microsoft Azure.
Cliquez sur le service Microsoft Entra.
Accédez à App Registration et créez un nouvel enregistrement d'application pour les connexions sur PC. Utilisez les paramètres suivants :
Single tenant
Contient un ensemble d'URI de redirection d'hôte local utilisant l'option "public client/native". Voici quelques exemples d'URI de redirection :
http://localhost:8749/oidc-token
http://localhost:8750/oidc-token
http://localhost:8751/oidc-token
http://localhost:8752/oidc-token
http://localhost:8753/oidc-token
http://localhost:8754/oidc-token
Notez l'
identifiant de clientde cette application.Accédez à Token Configuration et ajoutez un paramètre de revendication de groupes pour utiliser l'option Groups assigned to the application.
Créez un nouveau groupe de sécurité pour le rôle Project User. Attribuez ce groupe de sécurité au rôle, puis ajoutez tous les utilisateurs de votre choix au groupe de sécurité.
Créer les rôles d'application suivants :
Project User (généralement un par projet)
Admin
Le rôle d'utilisateur de projet doit pouvoir être attribué aux utilisateurs, aux groupes et aux applications, tandis que le rôle d'administrateur est réservé aux utilisateurs.
Revenez à l'écran App registration et créez une application pour le service back-end (par exemple, "CDD cloud Unreal").
Ajoutez une étendue d'API à votre nouvelle application et nommez-la
user.access. Attribuez l'identifiant de clientde l'accès à l'application de bureau à cette API.Créez un nouvel enregistrement d'application distinct pour vos applications de préparation et ajoutez-y une clé secrète de client afin qu'elles puissent se connecter sans assistance (ou utilisez une identité gérée ou similaire si vous préférez). Le rôle d'utilisateur de projet doit également être attribué à cette application.
Lorsque vous créez le fichier
oidc-configuration.json, l'URI du serveur à utiliser pour l'enregistrement de l'application se trouve sous le bouton Endpoints. Il s'agit généralement de[https://login.microsoftonline.com/](https://login.microsoftonline.com/)<directory-tenant-id>/v2.0.Pour l'identifiant de client, utilisez l'
identifiant de clientde l'application de bureau que vous avez créée. L'étendue doit contenir l'étendue de l'API que vous avez créée dans le service back-end, et qui se termine généralement par :offline_access profile openid api://<api scope guid>/user.access.
Une fois cette procédure terminée, Microsoft Azure est votre fournisseur d'identité.