Authentification OpenID Connect
OpenID Connect (OIDC) offre aux organisations un moyen moderne et sécurisé d'authentifier les utilisateurs tout en simplifiant l'accès aux applications Windows hébergées par GO-Global. Grâce à l'intégration avec des fournisseurs d'identité tels qu'Okta, Azure AD ou ADFS, les administrateurs peuvent centraliser l'authentification et améliorer l'expérience de connexion des utilisateurs, que ceux-ci se connectent avec des comptes Windows locaux, des comptes de domaine ou les deux. Ce guide explique comment activer l'authentification OIDC dans GO-Global, configurer les connexions Windows automatiques, associer les comptes des fournisseurs d'identité aux utilisateurs Active Directory et gérer les paramètres supplémentaires requis pour un accès transparent. Il aborde également des options avancées telles que la personnalisation des champs de nom d'utilisateur, la gestion de la création de comptes locaux, la configuration des autorisations et la récupération de jetons OIDC par programmation.
Une fois qu'un utilisateur s'est authentifié via OIDC, GO-Global offre aux administrateurs plusieurs options pour authentifier automatiquement l'utilisateur sous Windows. Par exemple, si le fournisseur d'identité est intégré à l'Active Directory de l'organisation, GO-Global peut connecter automatiquement l'utilisateur à son compte de domaine. Par ailleurs, si l'intégration à Active Directory n'est pas nécessaire ou souhaitée, GO-Global peut créer un compte Windows local pour l'utilisateur et le connecter automatiquement à ce compte. La prise en charge de l'authentification unique est une option supplémentaire. L'authentification OpenID Connect sera grisée (désactivée) tant que cette fonctionnalité n'aura pas été achetée.
Pour activer l'authentification OpenID Connect
- Cliquez sur Outils | Options d'hôte.
- Cliquez sur l'onglet « Authentification ».
- Activer l'authentification OpenID Connect.
- Sélectionnez l'une des options suivantes, ou aucune :
- Connecter automatiquement les utilisateurs à des comptes Windows locaux. Lorsque cette option est activée, GO-Global crée automatiquement un compte utilisateur local pour les utilisateurs qui ne disposent pas d'un compte de domaine.
- Connecter automatiquement les utilisateurs à leurs comptes de domaine. Lorsque cette option est activée, GO-Global tente d'effectuer une connexion S4U à l'aide de l'UPN de l'utilisateur, qu'il obtient auprès du fournisseur d'identité OIDC après une connexion OpenID Connect réussie. En soi, une connexion S4U permettra aux utilisateurs d'accéder aux ressources hébergées sur l'hôte GO-Global, mais ceux-ci ne pourront pas s'authentifier auprès des services fonctionnant sur le réseau. Pour accéder aux services fonctionnant sur le réseau, les administrateurs doivent soit activer la délégation restreinte (comme décrit dans le Configuration requise pour la prise en charge de la délégation (article) ou activer la Option « Mettre en cache les mots de passe sur l'hôte ».
- Si une application hébergée par GO-Global peut s'exécuter sous un compte local sur l'hôte GO-Global, il convient de sélectionner l'option « Connecter automatiquement les utilisateurs à leurs comptes Windows locaux ». En revanche, si l'application nécessite l'accès à des ressources gérées par Active Directory, il faut sélectionner l'option « Connecter automatiquement les utilisateurs à leurs comptes de domaine ». Dans ce dernier cas, le fournisseur d'identité doit être intégré à Active Directory afin de pouvoir fournir à GO-Global le nom d'utilisateur universel (UPN) de l'utilisateur.
- Si aucune des options « Connecter automatiquement les utilisateurs à leurs comptes Windows locaux » ni « Connecter automatiquement les utilisateurs à leurs comptes de domaine » n'est sélectionnée, les utilisateurs seront invités à se connecter à Windows conformément aux autres options de l'onglet « Authentification ». Par exemple, si l'authentification OpenID Connect et l'authentification standard sont toutes deux activées, les utilisateurs seront invités à se connecter deux fois. Ils seront d'abord invités à se connecter au fournisseur d'identité OpenID Connect. Une fois l'authentification auprès du fournisseur d'identité OpenID Connect réussie, ils seront invités à saisir le nom d'utilisateur et le mot de passe d'un compte Windows.
- Si une application hébergée par GO-Global peut s'exécuter sous un compte local sur l'hôte GO-Global, il convient de sélectionner l'option « Connecter automatiquement les utilisateurs à leurs comptes Windows locaux ». En revanche, si l'application nécessite l'accès à des ressources gérées par Active Directory, il faut sélectionner l'option « Connecter automatiquement les utilisateurs à leurs comptes de domaine ». Dans ce dernier cas, le fournisseur d'identité doit être intégré à Active Directory afin de pouvoir fournir à GO-Global le nom d'utilisateur universel (UPN) de l'utilisateur.
- Saisissez la chaîne d'identification du client issue de la configuration de votre serveur OpenID Connect dans le champ « Client ID ».
- Saisissez la chaîne de caractères correspondant au secret client issu de la configuration de votre serveur OpenID Connect dans le champ « Secret client ».
- Saisissez l'URL d'autorisation utilisée pour authentifier les utilisateurs auprès de votre serveur OpenID Connect dans le champ « URL d'autorisation ».
- Saisissez l'URL du jeton utilisée pour authentifier les utilisateurs auprès de votre serveur OpenID Connect dans le champ « URL du jeton ».
- Dans le champ « URL de redirection », saisissez l'URL que le fournisseur d'identité doit utiliser pour rediriger les utilisateurs vers l'hôte GO-Global une fois qu'ils se sont authentifiés avec succès. Il doit s'agir de la même URL de base que celle utilisée par les utilisateurs pour accéder à l'hôte GO-Global, avec « callback.html » ajouté à la fin. Par exemple, si vous utilisez un serveur web distinct tel que IIS et que TLS n'est pas activé, l'URL de rappel serait http://hostname/goglobal/callback.html. Sinon, si vous utilisez le serveur Web intégré de GO-Global, que le protocole TLS n'est pas activé et que GO-Global est configuré pour accepter les connexions sur son port par défaut, le 491, l'URL de rappel serait http://hostname:491/callback.html.
- Cliquez sur OK.
Mise en correspondance des utilisateurs Active Directory avec les comptes du fournisseur d'identité
GO-Global propose plusieurs options pour dériver l'UPN d'un utilisateur à partir des revendications contenues dans un jeton d'identité OIDC. Les comptes utilisateur doivent correspondre de l'une des trois manières suivantes entre Active Directory (AD) et le fournisseur d'identité.
Il existe trois façons d'y parvenir :
- Le nom principal d'utilisateur (UPN) natif de l'utilisateur correspond déjà à , le nom d'utilisateur du fournisseur d'identité. Par exemple, le domaine AD local est example.com et le domaine du fournisseur d'identité est également example.com. Par défaut, GO-Global recherche un UPN valide dans les champs email, UPN, sub et userid du jeton d'identité, dans cet ordre. Les administrateurs peuvent également spécifier la revendication contenant l'UPN via la propriété OpenIDConnectUserNameField dans HostProperties.xml.
- Ajoutez un suffixe UPN et utilisez-le pour les noms d'utilisateur AD afin que l'UPN AD et l'UPN du fournisseur d'identité correspondent. Par exemple, le domaine AD local est company.local, mais ajoutez un suffixe UPN pour les utilisateurs appelé example.com. Le domaine du fournisseur d'identité est également example.com.
- Définissez l'attribut de messagerie AD de l'utilisateur de manière à ce qu'il corresponde à l'UPN du fournisseur d'identité, puis modifiez un paramètre dans le fichier HostProperties.xml. Dans certains déploiements, aucune revendication du jeton d'identité ne correspond à l'UPN AD de l'utilisateur. Par exemple, dans un environnement d'hébergement où le fournisseur d'identité du client est utilisé, le domaine du client (par exemple, customercompany.com) ne correspondra pas au domaine AD de l'environnement d'hébergement (par exemple, hostedapp.com). Comme le fournisseur d'identité du client est utilisé, les administrateurs de l'environnement d'hébergement ne pourront pas ajouter de revendication aux jetons d'identité OIDC des utilisateurs qui spécifie l'UPN AD.
Dans de telles situations, les administrateurs peuvent configurer GO-Global pour rechercher l'UPN AD de l'utilisateur via son adresse e-mail. Pour ce faire, il suffit de définir la valeur de la propriété OpenIDConnectUserLookupByEmail dans HostProperties.xml sur true pour tous les hôtes concernés. Lorsque cette propriété est définie sur true, GO-Global recherche dans Active Directory un compte utilisateur dont l'attribut e-mail correspond à la revendication e-mail du jeton d'identité OIDC.
Enregistrement des noms d'utilisateur dans des champs alternatifs
Par défaut, GO-Global récupère le nom d'utilisateur Windows à partir du nom principal de l'utilisateur (UPN) ou de l'adresse e-mail spécifiée par le fournisseur d'identité dans le jeton d'identification OpenID Connect de l'utilisateur. Toutefois, si le fournisseur d'identité est configuré pour stocker le nom d'utilisateur Windows de l'utilisateur dans un autre champ, les administrateurs peuvent configurer GO-Global pour qu'il utilise ce champ en saisissant le nom du champ dans la propriété OpenIDConnectUserNameField du fichier HostProperties.xml.
Pour définir la propriété OpenIDConnectUserNameField
- Arrêtez le service de publication d'applications.
- Ouvrez le fichier %PROGRAMDATA%\GraphOn\GO-Global\HostProperties.xml dans un éditeur de texte.
- Recherchez la propriété OpenIDConnectUserNameField et remplacez sa valeur par le nom de la revendication du jeton OpenID Connect de l'utilisateur qui contient le nom principal de l'utilisateur (User Principal Name) que GO-Global doit utiliser pour authentifier l'utilisateur sous Windows.
- Enregistrez le fichier HostProperties.xml.
- Redémarrez le service de publication d'applications.
Lorsque l'option « Connecter automatiquement les utilisateurs à des comptes Windows locaux » est activée, les noms des comptes utilisateurs locaux sont générés à partir du nom principal de l'utilisateur (UPN) ou de l'adresse e-mail obtenus lors de l'authentification OpenID Connect. Les comptes locaux ne pouvant pas contenir les caractères « @ » ou « . », ceux-ci sont respectivement remplacés par « _ » et « - ». Par exemple, l'adresse e-mail sales@graphon.com serait générée sous la forme sales_graphon-com.
Remarque: Windows impose une limite de 20 caractères pour les noms de comptes locaux. Si le nom de compte généré dépasse 20 caractères, GO-Global le tronque à 20 caractères
Les mots de passe de ces comptes sont composés de caractères choisis au hasard parmi les lettres minuscules, les lettres majuscules, les chiffres et les caractères spéciaux !@#$%& . La longueur du mot de passe généré par GO-Global correspondra à la longueur minimale spécifiée pour les utilisateurs de l'ordinateur, sauf si cette longueur minimale est inférieure à 7. Dans ce cas, GO-Global générera un mot de passe comportant 14 caractères de plus que la longueur minimale requise. Par exemple, si la longueur minimale du mot de passe de l'ordinateur est de 6, GO-Global générera un mot de passe de 20 caractères, au format suivant : 8tw@m4b9Dek#vR76@t6%. Si GO-Global ne parvient pas à obtenir la longueur minimale du mot de passe de l'ordinateur, il générera un mot de passe de 14 caractères.
Si l'exigence de longueur minimale est définie via la stratégie de groupe, activez la stratégie de groupe dans l'onglet Démarrage de session de la boîte de dialogue Options de l'hôte. Ces mots de passe ne sont ni enregistrés ni réutilisés. Le mot de passe est modifié à chaque authentification OpenID Connect.
Les autorisations pour les applications Windows hébergées dans des sessions GO-Global ne sont pas gérées par des fournisseurs d'identité tels qu'Okta ou ADFS. Elles sont gérées dans Windows ou Active Directory.
L'intégration avec Active Directory est une fonctionnalité du fournisseur d'identité. Active Directory Federated Services (ADFS) s'intègre automatiquement à Active Directory. D'autres fournisseurs d'identité proposent leurs propres intégrations. Les organisations qui utilisent un fournisseur d'identité auront déjà configuré cela. Les organisations qui sont en train de mettre cela en place devront consulter la documentation de leur fournisseur d'identité pour savoir comment procéder.
Pour plus d'informations sur Okta, rendez-vous sur : https://help.okta.com/en/prod/Content/Topics/Directory/ad-agent-main.htm.
Lorsque vous utilisez Azure, veillez à utiliser les URL du point de terminaison d'autorisation OAuth 2.0 (v1) et du point de terminaison de jeton OAuth 2.0 (v1). Les URL des points de terminaison v2 ne fonctionneront pas.
Lorsque vous utilisez ADFS, sélectionnez Application serveur lors de la création de l'application OIDC.
Attribution des droits « Lancer » et « Activer » COM aux utilisateurs standard
Par défaut, Windows n'accorde pas aux utilisateurs standard qui ne se sont pas connectés de manière interactive à Windows en saisissant un nom d'utilisateur et un mot de passe le droit de lancer et d'activer des objets COM. Par conséquent, les applications telles que l'Explorateur de fichiers Windows qui s'appuient sur des interfaces COM peuvent ne fonctionner correctement que pour les utilisateurs membres du groupe Administrateurs lorsque l'authentification OpenID Connect est utilisée. Ainsi, lorsque l'authentification OIDC est activée, accordez aux utilisateurs standard les droits COM de lancement et d'activation comme suit :
- Exécutez dcomcnfg.
- Accédez à Services des composants | Ordinateurs | Poste de travail.
- Faites un clic droit sur « Poste de travail », puis cliquez sur « Propriétés».
- Sélectionnez l'onglet « Sécurité COM ».
- Dans la section « Autorisations de lancement et d'activation », cliquez sur le bouton « Modifier les paramètres par défaut... ».
- Cliquez sur le bouton Ajouter . (Remarque : Les autorisations par défaut accordent tous les droits aux groupes INTERACTIVE et Administrateurs. C'est pourquoi cela fonctionne pour tous les utilisateurs authentifiés via un nom d'utilisateur et un mot de passe (utilisateurs INTERACTIVE) et pour les membres du groupe Administrateurs lorsque l'OIDC est utilisé.
- Ajoutez le groupe « Utilisateurs du domaine ».
- Cochez les cases « Autoriser » situées à côté des options « Lancement local » et « Activation locale ».
- Cliquez sur OK.
- Cliquez sur OK.
Récupération par programmation du jeton d'identification OIDC et du jeton d'accès
Il est parfois utile que les applications s'exécutant dans une session GO-Global puissent récupérer les revendications contenues dans le jeton d'identification OIDC et/ou le jeton d'accès fournis par le fournisseur d'identité lors de l'authentification de l'utilisateur. Lorsque cela s'avère nécessaire, les développeurs d'applications peuvent ajouter du code à leurs applications afin de récupérer ces jetons.
Pour récupérer par programmation le jeton d'identification OIDC et le jeton d'accès, le code doit :
- Obtenir un descripteur pour redirector.dll à l'aide de la fonction GetModuleHandle()
- obtenir l'adresse de procédure de deux fonctions exportées à l'aide de la fonction GetProcAddress() pour « GetOpenIDConnectIDToken » et « GetOpenIDConnectAccessToken »
- Appelez ces deux adresses de procédure avec les paramètres 0 et NULL pour obtenir la longueur du tampon de caractères nécessaire
- allouer le tampon de caractères
- Appelez à nouveau ces deux fonctions pour obtenir les jetons proprement dits
Exemple de code :
/**
* File: GetOidcIdAndAccessTokens.cpp
*
* Copyright 2025 by GraphOn Corporation
* All rights reserved.
*
* This software is the confidential and proprietary information
* of GraphOn Corporation ("Confidential Information"). You
* shall not disclose such Confidential Information and shall use
* it only in accordance with the terms of the license agreement
* you entered into with GraphOn.
*/
#include <Windows.h>
#include <stdio.h>
int main()
{
printf ("GetOidcIdAndAccessTokens\n");
HMODULE hRedirector = ::GetModuleHandleA ("redirector.dll");
if (hRedirector)
{
typedef unsigned int (WINAPI* fnGetOpenIDConnectToken)(unsigned int, char*);
fnGetOpenIDConnectToken pfnGetOpenIDConnectIDToken = (fnGetOpenIDConnectToken)::GetProcAddress (hRedirector, "GetOpenIDConnectIDToken");
if (pfnGetOpenIDConnectIDToken)
{
unsigned int length = pfnGetOpenIDConnectIDToken (0, NULL);
if (length)
{
printf ("GetOpenIDConnectIDToken(1) returned OIDC ID token length %d.\n", length);
char* oidcCustomClaims = NULL;
try { oidcCustomClaims = new char[length]; }
catch (...) {}
if (oidcCustomClaims)
{
length = pfnGetOpenIDConnectIDToken (length, oidcCustomClaims);
if (length)
{
printf ("GetOpenIDConnectIDToken(2) returned OIDC ID token length %d.\n", length);
printf ("GetOpenIDConnectIDToken(2) returned OIDC ID token %hs.\n", oidcCustomClaims);
}
else
printf ("ERROR GetOpenIDConnectIDToken(2) returned OIDC ID token length %d\n", length);
}
else
printf ("ERROR Failed to allocate ID token string length %d\n", length);
}
else
printf ("ERROR GetOpenIDConnectIDToken(1) returned OIDC ID token length %d\n", length);
}
else
printf ("ERROR ::GetProcAddress (hRedirector, \"GetOpenIDConnectIDToken\") failed!\n");
fnGetOpenIDConnectToken pfnGetOpenIDConnectAccessToken = (fnGetOpenIDConnectToken)::GetProcAddress (hRedirector, "GetOpenIDConnectAccessToken");
if (pfnGetOpenIDConnectAccessToken)
{
unsigned int length = pfnGetOpenIDConnectAccessToken (0, NULL);
if (length)
{
printf ("GetOpenIDConnectAccessToken(1) returned OIDC access token length %d.\n", length);
char* oidcCustomClaims = NULL;
try { oidcCustomClaims = new char[length]; }
catch (...) {}
if (oidcCustomClaims)
{
length = pfnGetOpenIDConnectAccessToken (length, oidcCustomClaims);
if (length)
{
printf ("GetOpenIDConnectAccessToken(2) returned OIDC access token length %d.\n", length);
printf ("GetOpenIDConnectAccessToken(2) returned OIDC access token %hs.\n", oidcCustomClaims);
}
else
printf ("ERROR GetOpenIDConnectAccessToken(2) returned OIDC access token length %d\n", length);
}
else
printf ("ERROR Failed to allocate access token string length %d\n", length);
}
else
printf ("ERROR GetOpenIDConnectAccessToken(1) returned OIDC access token length %d\n", length);
}
else
printf ("ERROR ::GetProcAddress (hRedirector, \"GetOpenIDConnectAccessToken\") failed!\n");
}
else
printf ("ERROR ::GetModuleHandle (\"redirector.dll\") failed!\n");
printf ("\nPress Enter to exit.\n");
::getchar ();
}
Pour exécuter les applications de test GetOidcIdAndAccessTokens
- Téléchargez et décompressez le fichier GetOidcIdAndAccessTokens.zip disponible à l'adressehttps://cdn.graphon.com/portal_resources/Downloads/GetOidcIdAndAccessTokens.zip sur un hôte GO-Global sur lequel l'authentification OpenID Connect est activée.
- Enregistrez les deux applications de test GetOidcIdAndAccessTokens_32bit.exe et GetOidcIdAndAccessTokens_64bit.exe auprès de GO-Global.
- Lancez une session GO-Global.
- Exécutez les applications de test dans la session GO-Global. Le jeton d'identification OpenID Connect et le jeton d'accès s'affichent dans une fenêtre de console.
Conclusion
La mise en œuvre de l'authentification OpenID Connect dans GO-Global offre aux administrateurs des outils puissants pour unifier la gestion des identités, réduire les obstacles pour les utilisateurs et renforcer la sécurité dans l'ensemble des applications hébergées. En choisissant le workflow de connexion approprié, en s'assurant que les revendications OIDC correspondent à Active Directory et en appliquant les autorisations Windows requises, les organisations peuvent créer une expérience d'authentification fluide pour les environnements locaux et basés sur un domaine. Grâce à la possibilité de personnaliser la gestion des noms d'utilisateur et d'accéder aux jetons OIDC par programmation, GO-Global prend également en charge des besoins applicatifs plus avancés. Ensemble, ces fonctionnalités offrent aux administrateurs la flexibilité nécessaire pour intégrer des solutions d'identité modernes tout en conservant une compatibilité totale avec les exigences d'authentification Windows.
Êtes-vous un ISV qui explore la livraison d'applications basées sur le nuage ? Contactez-nous pour savoir comment GO-Global peut vous aider à rationaliser l'accès aux logiciels pour vos utilisateurs finaux. Ou téléchargez un essai gratuit pour le tester vous-même.

