Passerelle d'application

Découvrez comment résoudre les problèmes courants liés à la passerelle d'application.

Le message d'erreur de ma réponse contient : 400 Demande incorrecte : valeur d'en-tête non valide

Découvrez la cause courante lorsqu'un message d'erreur de réponse contient : 400 Bad Request: invalid header value.

La passerelle d'application ajoute des en-têtes aux demandes qui sont transmises par proxy à un serveur d'applications en amont. L'un de ces en-têtes, idcs_user_display_name, peut comporter des caractères non valides tels que définis par la RFC la plus récente, en fonction des valeurs définies pour le prénom et le nom de l'utilisateur du domaine d'identité. Cette nouvelle RFC limite les caractères autorisés aux caractères US-ASCII imprimables (c'est-à-dire, 0x21 - 0x7E et les espaces et les tabulations horizontales). Reportez-vous à la section RFC 7230 HTTP/1.1 Message Syntax and Routing.

Les serveurs d'applications qui appliquent la RFC la plus récente rejetteront la demande avec la réponse : 400 Bad Request : valeur d'en-tête non valide. Remarque : La réponse exacte dépend du serveur d'applications utilisé.

Retirez les caractères non imprimables éventuels.

Le serveur de la passerelle d'application ne prend pas en compte les modifications

Lorsque vous ne pouvez pas voir les modifications que vous avez apportées à IAM sur le serveur de passerelle d'application, procédez comme suit.

Les modifications apportées aux applications d'entreprise et aux définitions de passerelle d'application dans les domaines d'identité peuvent ne pas être reflétées immédiatement sur la passerelle d'application car celle-ci met en cache les informations des domaines d'identité, telles que les ressources, les stratégies d'authentification et les valeurs d'en-tête des applications d'entreprise.

La passerelle d'application contacte IAM à l'aide d'agents pour collecter des informations sur l'hôte et le port. Lorsque vous démarrez la passerelle d'application, son serveur NGINX est automatiquement configuré avec ces informations. Toutes les modifications apportées à IAM sont régulièrement interrogées par les agents.

Par défaut, le délai d'actualisation de la stratégie et des en-têtes est de 3 600 secondes (1 heure). Pour modifier ces valeurs, connectez-vous au serveur de la passerelle d'application et modifiez le fichier /usr/local/nginx/conf/cloudgate.config. Modifiez la valeur ttl pour policy et headers dans la section caching comme indiqué dans l'exemple suivant, puis redémarrez le serveur de la passerelle d'application et l'agent.
"caching" : {
  "minimumTtl"            : 300,
  "headers"               : { "ttl": 3600 },
  "discovery"             : { "ttl": 3600 },
  "policy"                : { "ttl": 3600},
  "tenantKeys"            : { "ttl": 86400 }
}
Vous pouvez également modifier l'intervalle d'interrogation des agents. Par défaut, le délai d'actualisation de l'agent pour obtenir la nouvelle configuration de passerelle d'application à partir d'IAM est de 60 secondes, soit le délai minimal pris en charge. Dans le fichier /usr/local/nginx/conf/cloudgate.config, modifiez la valeur pollIntervalSecs dans la section agentConfig comme dans l'exemple :
"agentConfig": {
    "pollIntervalSecs"    : 60,
    "daemon"         : true,
    "logLevel"        : "warn",
    "logFolder"        : "" 
}
Si vous voulez que les modifications apportées à la configuration de l'application d'entreprise soient reflétées immédiatement, arrêtez et redémarrez le serveur de la passerelle d'application.
/scratch/oracle/cloudgate/home/bin/cg-stop
/scratch/oracle/cloudgate/home/bin/cg-start
Si vous voulez que les modifications apportées à la configuration de la passerelle d'application soient reflétées immédiatement, arrêtez et redémarrez l'agent.
/scratch/oracle/cloudgate/home/bin/agent-stop
/scratch/oracle/cloudgate/home/bin/agent-start

Message Invalid_session

Si la passerelle d'application ne peut pas communiquer correctement avec IAM, des messages invalid_session sont présents dans les fichiers journaux des erreurs de la passerelle d'application.

Voici un exemple de messageinvalid_session dans le fichier error.log :

www-authenticate: Bearer error="invalid_session", error_description="Authentication Failure

Cela peut être dû à la façon dont la passerelle d'application traite une demande client vers une ressource protégée. La passerelle d'application utilise les sous-demandes NGINX pour envoyer des demandes à IAM, et requiert que le résolveur NGINX Linux soit configuré de manière appropriée afin que ces sous-demandes fonctionnent correctement.

  1. Vérifiez que le paramètre de résolveur dans le fichier /usr/local/nginx/conf/nginx-cg-sub.conf est défini sur l'adresse IP correcte.
  2. Vérifiez que le nom du locataire dans le fichier /usr/local/nginx/conf/cloudgate.config est configuré correctement.

Erreur de commande GET 127.0.0.1 :53

Les fichiers journaux des erreurs contiennent la commande GET 127.0.0.1 :53 qui renvoie l'erreur 500.

Etant donné que la passerelle d'application envoie des sous-demandes à un servlet interne, elle requiert que votre machine virtuelle écoute le port 53.

Le serveur de la passerelle d'application doit communiquer avec lui-même via l'adresse IP 127.0.0.1 et le port 53.

Si vous exécutez la passerelle d'application dans un logiciel de machine virtuelle, configurez la transmission de port de l'hôte à l'invité pour ce port. Reportez-vous à Configuration de règles de transmission de port.

Le serveur de la passerelle d'application ne peut pas communiquer avec IAM

Lorsque votre serveur A[[ Gateway Server ne peut pas communiquer avec IAM, suivez ces étapes pour utiliser un client SSH tel que PuTTY et les informations d'identification suivantes pour vous connecter au serveur de la passerelle d'application.


  1. Exécutez la commande sudo su - pour vous connecter en tant que root et lorsque vous y êtes invité, fournissez le mot de passe oracle.


  2. Installez Telnet en exécutant la commande suivante :
    yum install telnet

  3. Exécutez la commande telnet suivante et essayez d'établir une connexion à votre instance IAM et votre application à partir du serveur de la passerelle d'application.
    telnet <idcs-tenant>.identity.oraclecloud.com 443

    Si Telnet ne peut pas se connecter à votre instance IAM, contactez l'administrateur réseau pour qu'il applique une autre configuration réseau permettant au serveur de la passerelle d'application d'établir une connexion à votre instance IAM.

  4. Exécutez la commande exit pour vous déconnecter du compte root.