Résoudre les problèmes liés au fournisseur OIDC

Ce document fournit des conseils de dépannage pour les problèmes liés au fournisseur d'identité OIDC et AzureAD dans GKE Identity Service.

Format du certificat incorrect

Ce problème se produit lorsque la valeur du certificat présente des erreurs de mise en forme. Les problèmes de mise en forme peuvent correspondre aux valeurs de certificat qui ne sont pas encodées en base64 et aux valeurs encodées en base64 mais incorrectes. Ce problème peut également survenir si le certificat n'est pas signé par une autorité de certification racine ou si aucune chaîne de confiance correctement formatée n'est fournie.

Messages d'erreur

Les exemples suivants représentent des messages d'erreur pour des scénarios dans lesquels le format du certificat est incorrect :

  • Certificat non encodé en base64 : Failed creating HTTP client to fetch the Discovery URI "<Discovery-document URI>" with error: Unable to decode data field, the value should be Base64 encoded

  • Certificat dont le format est incorrect, ou encodé en base64 mais incorrect : Unable to connect to 'https://example.com', encountered the following error: Problem with the SSL CA cert (path? access rights?). Details: error setting certificate verify locations: CAfile: /tmp/example.pem CApath: none (The certificate could not be read, this is most likely because it's empty or contains a formatting error. Please check your configuration.)

  • Certificat dont le format est incorrect, ou encodé en base64 mais incorrect : Failed fetching the Discovery URI "<Discovery-document URI>" with error: Unable to load TLS certificates.

Solution

Vous pouvez résoudre les problèmes de l'une des manières suivantes :

  • La valeur de certificat que vous fournissez dans le ClientConfig doit être une chaîne encodée en base64 et une chaîne au format PEM. Pour en savoir plus, consultez la section Encoder les certificats CA.
  • Si votre fournisseur n'utilise pas de certificats signés par une autorité de certification racine, vous devez configurer GKE Identity Service avec une chaîne de confiance des certificats. Pour en savoir plus, consultez la section Certificats intermédiaires.

Valeur de certificat incorrecte

Ce problème se produit lorsque le certificat présente une valeur non concordante. Dans ce cas, le format des certificats est correct, mais ils ne correspondent pas au serveur. Cela peut également indiquer qu'il n'y avait aucun certificat dans la configuration.

Une valeur de certificat peut être considérée comme incorrecte dans l'un des cas suivants :

  • Une valeur de certificat incorrecte est partagée dans le ClientConfig. Une valeur de certificat est incorrecte lorsque l'élément issuer du certificat du serveur ne correspond pas à l'élément subject du certificat configuré.
  • Le certificat présent dans le ClientConfig n'est pas une chaîne encodée en base64.
  • La chaîne de certificats n'est pas fournie lorsque des certificats intermédiaires sont utilisés pour émettre le certificat de serveur.

Message d'erreur

Les exemples suivants représentent des messages d'erreur pour des scénarios dans lesquels la valeur du certificat ne correspond pas :

  • La chaîne de certificats n'est pas complète ou ne correspond pas au serveur : SSL peer certificate was not OK. Details: SSL certificate problem: unable to get local issuer certificate

  • La chaîne de certificats n'est pas complète (correspond à une chaîne partielle non valide qui ne commence pas à la racine ou n'est pas contiguë) : Failed fetching the Discovery URI "<Discovery-document URI>" with error: The server's TLS certificate did not match expectations.

  • La chaîne de certificats est valide mais ne correspond pas au serveur OIDC : AIS was expecting the server to have a different certificate

  • La chaîne de certificats est valide mais ne correspond pas au serveur OIDC : Failed fetching the Discovery URI "<Discovery-document URI>" with error: The server's TLS certificate did not match expectations.

Solution

La valeur de certificat que vous fournissez dans le ClientConfig doit inclure une chaîne de certificats correctement formatée qui correspond au fournisseur d'identité. Pour en savoir plus sur la mise en forme et l'encodage des certificats, consultez la section Encoder les certificats CA.

Échec des commandes kubectl lors de l'utilisation d'un fichier kubeconfig généré par la commande gcloud anthos auth login

Lorsque vous utilisez la commande gcloud anthos auth login avec OIDC sur des machines Windows pour générer un fichier kubeconfig permettant d'accéder à un cluster, les commandes kubectl peuvent échouer et le message d'erreur suivant s'affiche : The command line is too long.. Ce problème se produit spécifiquement sur les systèmes Windows et n'affecte pas les machines Linux qui utilisent le même fichier kubeconfig. La cause sous-jacente est liée à la taille du jeton d'authentification généré par Azure Active Directory (Azure AD) lorsqu'un utilisateur appartient à un grand nombre de groupes (environ 70 à 200, selon la longueur des noms de groupes).

Ce jeton volumineux entraîne l'échec de l'exécution des commandes kubectl, car il dépasse la longueur maximale de la ligne de commande autorisée par Windows,qui est de 8 191 caractères.

Message d'erreur

$ kubectl --kubeconfig test-kubeconfig.yml get nodes

The command line is too long.
The command line is too long.
E0102 11:02:29.115256 24320 memcache.go:265] couldn't get current server API group list: Get "https://10.35.0.86:443/api?timeout=32s": getting credentials: exec: executable gcloud failed with exit code 1
The command line is too long.
E0102 11:02:29.350238 24320 memcache.go:265] couldn't get current server API group list: Get "https://10.35.0.86:443/api?timeout=32s": getting credentials: exec: executable gcloud failed with exit code 1
The command line is too long.
E0102 11:02:30.062811 24320 memcache.go:265] couldn't get current server API group list: Get "https://10.35.0.86:443/api?timeout=32s": getting credentials: exec: executable gcloud failed with exit code 1
Unable to connect to the server: getting credentials: exec: executable gcloud failed with exit code 1

Solution

Pour résoudre ce problème, procédez comme suit :

  • Mettre à niveau vers la version 1.28 ou ultérieure du cluster GKE

    Si vous exécutez une version de cluster GKE antérieure à la version 1.28, nous vous recommandons de passer à la version compatible.

  • Réduire les abonnements de l'utilisateur concerné à des groupes

    Pour résoudre le problème, vous pouvez réduire le nombre de groupes auxquels appartient l'utilisateur qui s'authentifie en le faisant passer en dessous du seuil problématique (environ 70 groupes).

  • Augmenter le nombre de groupes auxquels appartient l'utilisateur concerné

    La fonctionnalité Microsoft Entra ID est limitée en ce qui concerne le nombre de groupes émis dans un jeton. Si vous êtes membre de 70 à 200 groupes, cela peut entraîner des problèmes d'authentification. Toutefois, vous pouvez résoudre les problèmes liés au fournisseur d'identité en augmentant le nombre d'appartenances à des groupes au-delà de cette limite. En raison du comportement de cette limite, Azure AD omet les groupes de id_token lorsque le nombre d'appartenances devient excessivement élevé, ce qui empêche la ligne de commande de devenir trop longue et résout ainsi les problèmes liés au fournisseur d'identité. Consultez la documentation Microsoft Entra ID pour confirmer la limite et en savoir plus.