XML API Problem mit Kennwörtern, die Sonderzeichen enthalten

XML API Problem mit Kennwörtern, die Sonderzeichen enthalten

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


Symptom


Benutzer können bei verwendung von Schlüsseln oder der Standardauthentifizierung keine Schlüssel generieren API oder die Standardauthentifizierung XML API verwenden.T er Benutzer können einen der folgenden Fehler erhalten:
– Ungültige Anmeldeinformationen
– Fehlender Wert für Parameterkennwort
– Hostname nicht auflösen (von cURL aus der Befehlszeile ausgeführt)

Derselbe Benutzername und dasselbe Kennwort würde für die SSH und Web-Interface-Anmeldungen funktionieren.

Beispiel:
' curl -k 'http://10.129.80.155/api/?type=keygen&user=user01&password=user#01'
<response status='error' code='403'><result><msg>Ungültige Anmeldeinformationen.</msg></result></response>


Oder Sie erhalten einen fehlenden Parameterfehler:

Beispiel:
' curl -k 'http://10.129.80.155/api/?type=keygen&user=user02&password=#02user'
<response status='error' code='400'><result><msg>Fehlender Wert für den Parameter "password".</msg></result></response>

Oder wenn Sie die Standardauthentifizierung verwenden, können Sie

den Hostnamen nicht mehr auflösen: $curl-k 'http://user01:user#01@10.129.80.155//api/?type=op&cmd= <show><system><info></info></system></show> '
curl: (6) Host: user01


https://198.51.100.1/api/?type=keygen&user=apiuser&password=&apiuser (im Browser ausgeführt)

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>
  Benutzeriertes Bild
https://198.51.100.1/api/?type=keygen&user=apiuser&password=api#user (im Browser ausgeführt)
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>
  
Benutzeriertes Bild


Cause


In allen Fällen enthält das Passwort Sonderzeichen. Die API Schlüsselgenerierung schlägt fehl, wenn das Kennwort Sonderzeichen wie z. B. . Dies ist kein PAN-OS spezifisches Thema. Dies ist auf die Art und Weise zurückzuführen, wie Browser und cURL Mitsonderzeichen verarbeiten. Dies liegt daran, dass es sich um reservierte Zeichen handelt, die als allgemeine oder Untertrennzeichen verwendet werden.

RFC Definition seroberste Liste der Trennzeichen: https://tools.ietf.org/html/rfc3986#section-2.2
RFC: https://tools.ietf.org/html/rfc3986#section-3.5

In Abschnitt 3.5: A Fragment-Id-Komponente wird durch das Vorhandensein eines Zahlenzeichens "-" angezeigt und am Ende des URL beendet. Nun, schauen Sie sich cURL offizielle Dokumente: https://curl.haxx.se/.

Curl unterstützt Fragmente in Ordnung, wenn ein URL an sie übergeben wird, aber das Fragmentteil wird nie wirklich über den Draht gesendet, so dass es keinen Unterschied macht, ob es vorhanden ist oder nicht. Daher wird das "A" nie über den Draht gesendet, was zu einem solchen Verhalten führt.

Wenn diese ohne Codierung verwendet URL werden, können Sie sehen, dass der Browser nicht tatsächlich das gesamte URL sendet (Passwort in diesem Fall). In den folgenden Beispielen HTTP wurde die Nutzlast für Demonstrationszwecke aktiviert, und die einfache Paketerfassung zeigt die HTTP Nutzlast an.

Beispiel 1: Benutzername: benutzer2 und Passwort: user&2

Browser:
Benutzeriertes Bild

Paketerfassung beim Senden der GET Anfrage:
Benutzeriertes Bild

Wenn Sie sich den Passwort-Abschnitt ansehen, kürt der Browser das Kennwort unter "Benutzer".

Beispiel 2: Benutzername: Benutzer3 und Kennwort benutzer 3

Browser:
Benutzeriertes Bild

Paketerfassung, die auf dem Client aufgenommen wurde, der die GET Anforderung sendet: Wenn Sie sich den
Benutzeriertes Bild

Kennwortabschnitt ansehen, kürt der Browser das Kennwort unter "Benutzer". Daher ist das Problem auf die Interpretation von Sonderzeichen durch Browser und cURL zurückzuführen.


Resolution


Hier ist eine kurze Referenz des reservierten Zeichensatzes:

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

Wenn die Daten für eine Komponente mit dem URI Zweck eines reservierten Zeichens als Trennzeichen in Konflikt stehen würden, müssen die in Konflikt stehenden Daten URI codiert werden. Wenn das Kennwort in diesem Fall reservierte Zeichen enthält, müssen diese codiert und dann als Eingabe verwendet werden.

Wenn das Kennwort z. B. Sonderzeichen wie z. B. "A" und "&" enthält, verwenden Sie die URL Codierung %23 bzw. %26.

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



Additional Information


Weitere Informationen finden Sie hier einige Artikel als Referenz:
https://docs.paloaltonetworks.com/ pan-os /8-1/ pan-os - panorama -api/get-started-with-the- pan-os -xml-api/get-your-api-key

Für einfaches Codieren und Decoden von URIs:
https://www.url-encode-decode.com/

Für die Liste aller Sonderzeichencodierungen für HTML :
https://www.w3schools.com/tags/ref_urlencode.asp
 


Actions
  • Print
  • Copy Link

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

Choose Language