XML API Problema con las contraseñas que contienen caracteres especiales

XML API Problema con las contraseñas que contienen caracteres especiales

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


Symptom


Los usuarios no pueden generar API claves ni utilizar la autenticación básica cuando utilizan XML API .T los usuarios pueden obtener uno de los siguientes errores:
– Credenciales no válidas – Falta de valor para la contraseña del parámetro – No se puede resolver el nombre de host

(que se ejecuta desde cURL desde la línea de comandos)

El mismo nombre de usuario y contraseña funcionaría para los SSH inicios de sesión y la interfaz web.

Ejemplo:
$ curl -k 'http://10.129.80.155/api/?type=keygen&user=user01&password=user#01' Credenciales
<response status='error' code='403'><result><msg>no válidas.</msg></result></response>


O puede obtener un error de parámetro que falta:

Ejemplo:
$ curl -k 'http://10.129.80.155/api/?type=keygen&user=user02&password=#02user'
Valor que falta para el parámetro<response status='error' code='400'><result><msg>"contraseña".</msg></result></response>

O cuando se utiliza la autenticación básica, no se puede resolver el nombre de host:

$curl -k ' <show><system><info></info></system></show> http://user01:user#01@10.129.80.155//api/?type=op&cmd='
curl: (6) No se pudo resolver el host: user01


https://198.51.100.1/api/?type=keygen&user=apiuser&password=&apiuser (se ejecutó en el navegador)

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>
  Imagen de usuario añadido
https://198.51.100.1/api/?type=keygen&user=apiuser&password=api#user (se ejecutó en el navegador)
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>
  
Imagen de usuario añadido


Cause


En todos los casos, la contraseña contiene caracteres especiales. La API generación de claves producirá un error cuando la contraseña contenga caracteres especiales como # y &. Este no es un PAN-OS problema específico. Esto se debe a la forma en que los navegadores y cURL manejan caracteres especiales. Esto se debe a que se trata de caracteres reservados utilizados como delimitadores generales o sub.

RFC definición de lista de delimitadores: https://tools.ietf.org/html/rfc3986#section-2.2
RFC: https://tools.ietf.org/html/rfc3986#section-3.5

En la sección 3.5: A el componente de identificador de fragmento se indica mediante la presencia de un carácter de signo numérico "#" y termina al final del URL archivo . Ahora, mira los documentos oficiales de cURL: https://curl.haxx.se/.

Curl admite fragmentos finos cuando URL se le pasa a, pero la parte del fragmento nunca se envía realmente a través del cable, por lo que no hace una diferencia en las operaciones de cURL, ya sea que esté presente o no. Por lo tanto, el "#" nunca se envía a través del cable, lo que resulta en tal comportamiento.

Cuando se utilizan sin URL codificación, puede ver que el navegador no envía realmente todo URL (contraseña en este caso). En los ejemplos siguientes, HTTP se habilitó para propósitos de demostración, y la facilidad de las capturas de paquetes muestra la HTTP carga útil.

Ejemplo 1: nombre de usuario: user2 y contraseña: user&2

Browser:
Imagen de usuario añadido

Captura de paquetes tomada en el cliente que envía la GET solicitud: Si usted mira la sección de
Imagen de usuario añadido

la contraseña, el navegador trunca la contraseña en "usuario."

Ejemplo 2: nombre de usuario: user3 y password user#3

Navegador:
Imagen de usuario añadido

Captura de paquetes tomada en el cliente que envía la GET solicitud: Si usted mira la sección de
Imagen de usuario añadido

contraseña, el navegador trunca la contraseña en "usuario." Por lo tanto, el problema se debe a la interpretación de caracteres especiales por navegadores y cURL.


Resolution


Aquí está una referencia rápida del juego de caracteres reservados:

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

Si los datos de un URI componente entrarían en conflicto con el propósito de un carácter reservado como delimitador, los datos en conflicto deben URI codificarse. En este caso, si la contraseña contiene caracteres reservados, deben codificarse y, a continuación, usarse como entrada.

Por ejemplo, si la contraseña contiene caracteres especiales como "#" y "&", utilice el URL código %23 y %26 respectivamente.

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



Additional Information


Para obtener información adicional, estos son algunos artículos de referencia:
https://docs.paloaltonetworks.com/ pan-os /8-1/ pan-os - panorama -api/get-started-with-the- pan-os -xml-api/get-your-api-key

Para facilitar el codificación y decodificación de URI:
https://www.url-encode-decode.com/

Para la lista de toda codificación de caracteres especiales HTML para:
https://www.w3schools.com/tags/ref_urlencode.asp
 


Actions
  • Print
  • Copy Link

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

Choose Language