XML API Problème avec les mots de passe contenant des caractères spéciaux

XML API Problème avec les mots de passe contenant des caractères spéciaux

87346
Created On 09/25/18 20:36 PM - Last Modified 03/26/21 17:01 PM


Symptom


Les utilisateurs ne sont pas en mesure de générer des API clés ou d’utiliser l’authentification de base lors de l’utilisation XML API .T il utilisateurs peuvent obtenir l’une des erreurs suivantes:
- Informations d’identification invalides
- Valeur manquante pour mot de passe paramètre
- Impossible de résoudre le nom d’hôte (en cours d’exécution à partir de cURL à partir de la ligne de commande)

Le même nom d’utilisateur et mot de passe fonctionnerait pour SSH les connexions et l’interface Web.

Exemple:
$ curl -k 'http://10.129.80.155/api/?type=keygen&user=user01&password=user#01'
<response status='error' code='403'><result><msg>Informations d’identification invalides.</msg></result></response>


Ou vous pouvez obtenir une erreur de paramètre manquant:

Exemple:
$ curl -k 'http://10.129.80.155/api/?type=keygen&user=user02&password=#02user' Valeur manquante
<response status='error' code='400'><result><msg>pour paramètre « mot de passe ».</msg></result></response>

Ou lors de l’utilisation de l’authentification

de base, vous seriez incapable de résoudre le nomde l’hôte: $curl -k 'http://user01:user#01@10.129.80.155//api/?type=op&cmd = <show><system><info></info></system></show> '
curl: (6) Ne pouvait pas résoudre l’hôte: user01


https://198.51.100.1/api/?type=keygen&user=apiuser&password=&apiuser (couru dans le navigateur)

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<response status="error" code="400">
<result>
<msg>Missing value for parameter "password".</msg>
</result>
</response>
  Image ajoutée par l'utilisateur
https://198.51.100.1/api/?type=keygen&user=apiuser&password=api#user (couru dans le navigateur)
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<response status="error" code="403">
<result>
<msg>Invalid Credential</msg>
</result>
</response>
  
Image ajoutée par l'utilisateur


Cause


Dans tous les cas, le mot de passe contient des caractères spéciaux. La API génération clé échouera lorsque le mot de passe contient des caractères spéciaux tels que # et &. Ce n’est pas PAN-OS une question précise. Cela est dû à la façon dont les navigateurs et cURL gérer les caractères spéciaux. C’est parce que ce sont des caractères réservés utilisés comme généraux ou sublimiters.

RFC définition de la liste des délimitants : https://tools.ietf.org/html/rfc3986#section-2.2
RFC: https://tools.ietf.org/html/rfc3986#section-3.5 À

la section 3.5 : le composant d’identificateur de fragment est indiqué par la présence d’un caractère de signe de nombre A « # » et terminé à la fin du URL . Maintenant, regardez les documents officiels cURL: https://curl.haxx.se/.

Curl prend en charge les fragments très bien quand un URL est passé à elle, mais la partie fragment n’est jamais réellement envoyé sur le fil, de sorte qu’il ne fait pas une différence pour les opérations de cURL si elle est présente ou non. Par conséquent, le « # » n’est jamais envoyé à travers le fil, ce qui entraîne un tel comportement.

Lorsque ceux-ci sont utilisés URL sans encodage, vous pouvez voir que le navigateur n’envoie pas réellement l’ensemble URL (mot de passe dans ce cas). Dans les exemples ci-dessous, HTTP a été activé à des fins de démonstration, et la facilité des captures de paquets montrent la charge HTTP utile.

Exemple 1 : nom d’utilisateur : utilisateur2 et mot de passe : navigateur utilisateur&2

:
Image ajoutée par l'utilisateur

Capture de paquets prise au client envoyant GET la demande : Si vous regardez la section mot de
Image ajoutée par l'utilisateur

passe, le navigateur tronque le mot de passe à « utilisateur ».

Exemple 2 : nom d’utilisateur : utilisateur3 et utilisateur de mot de passe#3

Navigateur :
Image ajoutée par l'utilisateur

Capture de paquets prise au client envoyant la GET demande : Si vous regardez la section mot de
Image ajoutée par l'utilisateur

passe, le navigateur tronque le mot de passe à « utilisateur ». Par conséquent, le problème est dû à l’interprétation de caractères spéciaux par navigateurs et cURL.


Resolution


Voici une référence rapide de l’ensemble de caractères réservés:

 reserved    = gen-delims / sub-delims
 gen-delims  = ":" / "/" / "?" / "#" / "[" / "]" / "@"
 sub-delims  = "!" / "$" / "&" / "'" / "(" / ")"
                  / "*" / "+" / "," / ";" / "="

Si les données URI d’un composant entreraient en conflit avec le but d’un personnage réservé en tant que délimitant, les données contradictoires doivent URI être codées. Dans ce cas, si le mot de passe contient des caractères réservés, ils doivent être codés puis utilisés comme entrée.

Par exemple, si le mot de passe contient des caractères spéciaux tels que « # » et « & », URL utilisez le code %23 et %26 respectivement.

Exemple API Demande:
https://198.51.100.1/api/?type=keygen&user=apiuser&password=api%23user



Additional Information


Pour plus d’informations, voici quelques articles à référence:
https://docs.paloaltonetworks.com/ pan-os /8-1/ pan-os - panorama -api/get-started-with-the-- pan-os -xml-api/get-your-api-key Pour

un code facile et décoder des URL: https://www.url-encode-decode.com/
Pour

la liste de tous les caractères spéciaux codant HTML pour:
https://www.w3schools.com/tags/ref_urlencode.asp
 


Actions
  • Print
  • Copy Link

    https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000CliMCAS&lang=fr&refURL=http%3A%2F%2Fknowledgebase.paloaltonetworks.com%2FKCSArticleDetail

Choose Language