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.
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:
401 Unauthorized
comprenant un en-tête WWW-Authenticate
avec un défi à résoudre,Authorization
qui doit être analysé et validé côté serveur.[1]: base64("john:pwd")
-> am9objpwd2Q=
Il y a un moyen plus facile de faire. Faites-le de cette façon
curl " http: // user: [email protected] "
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==