web-dev-qa-db-fra.com

l'option de cUrls "-u"

De la documentation cUrl:

-u, --user <user:password;options>

Specify the user name, password and optional login options to use for server authentication. Overrides -n, --netrc and --netrc-optional.

A quoi cela est traduit, c'est-à-dire comment l'attraper sur le serveur pour authentifier l'utilisateur: sont-ils dans les paramètres GET ou POST?

La langue n'est pas importante, l'idée est importante.

21
Alan Coromano

Tout dépend de la méthode authentication mais pour les plus courantes - Basic Auth et Digest Auth , cela fonctionne avec des en-têtes ad hoc HTTP. Voici un exemple avec l'authentification de base:

curl -u john:pwd http://foo.com/misc

Ceci effectue une requête GET avec l'en-tête correspondant:

GET /misc HTTP/1.1
Authorization: Basic am9objpwd2Q=
User-Agent: curl/7.33.0
Host: foo.com
Accept: */*

L'en-tête Authorization contient les données d'authentification que le serveur est censé analyser, base64 décoder [1] et utiliser. Le même en-tête serait défini avec une demande POST. Vous pouvez facilement le tester avec un service tel que httpbin (1) (voir /basic-auth/:user/:passwd endpoint).

L'authentification Digest est un peu plus complexe mais fonctionne aussi avec les en-têtes HTTP:

  • le client envoie d’abord sa demande, le serveur répond avec un 401 Unauthorized comprenant un en-tête WWW-Authenticate avec un défi à résoudre,
  • le client résout le problème et envoie une autre demande avec la réponse incluse dans un en-tête Authorization qui doit être analysé et validé côté serveur.

[1]: base64("john:pwd") -> am9objpwd2Q=

40
deltheil

Il y a un moyen plus facile de faire. Faites-le de cette façon

curl " http: // user: [email protected] "

4
Aminah Nuraini

Dans PHP/nginx, il est disponible dans cet élément de tableau sous forme de chaîne codée en base64. Cela fonctionne à la fois sur les méthodes GET et POST (curl -X POST).

$_SERVER['HTTP_AUTHORIZATION']

Demande:

curl http://127.0.0.1:8080/test.php  -u arun:12345

valeur dans $ _SERVER ['HTTP_AUTHORIZATION']:

Basic YXJ1bjoxMjM0NQ==
0
mixdev