web-dev-qa-db-fra.com

commande d'autorisation de base pour curl

Comment configurer l'autorisation de base à l'aide de 64 informations d'identification codées? J'ai essayé ci-dessous les deux commandes, mais d'aucune utilité, suggérer s'il vous plaît.

curl -i -H 'Accept:application/json' Authorization:Basic <username:password> http://example.com
curl -i -H 'Accept:application/json' Authorization:Basic.base64_encode(username:password) http://example.com  
33
Amit Sharad

Utilisez le -H en-tête avant l'autorisation: éléments de base. Alors il sera

curl -i \
    -H 'Accept:application/json' \
    -H 'Authorization:Basic username:password' \
    http://example.com
27
Sabuj Hassan

Comment configurer l'autorisation de base?

Tout ce que vous avez à faire est d'utiliser -u, --user USER[:PASSWORD]. En coulisse, curl construit l'en-tête Authorization avec des informations d'identification codées en base64 pour vous.

Exemple:

curl -u username:password -i -H 'Accept:application/json' http://example.com
43
deltheil

Une façon, fournir --user drapeau dans le cadre de curl, comme suit:

curl --user username:password http://example.com

Une autre méthode consiste à obtenir Base64 jeton codé de "nom d'utilisateur: mot de passe" depuis n'importe quel site Web en ligne tel que - https : //www.base64encode.org/ et transmettez-le sous l'en-tête Authorization de curl comme suit:

curl -i -H 'Authorization:Basic dXNlcm5hbWU6cGFzc3dvcmQ=' http://localhost:8080/

Ici, dXNlcm5hbWU6cGFzc3dvcmQ= est Base64 jeton codé de username:password.

12
Arpit

Contexte

Vous pouvez utiliser le base64 Outil CLI pour générer la version encodée en base64 de votre nom d’utilisateur + mot de passe comme ceci:

$ echo -n "joeuser:secretpass" | base64
am9ldXNlcjpzZWNyZXRwYXNz

-or-

$ base64 <<<"joeuser:secretpass"
am9ldXNlcjpzZWNyZXRwYXNzCg==

Base64 est réversible, vous pouvez donc aussi le déchiffrer pour le confirmer:

$ echo -n "joeuser:secretpass" | base64 | base64 -D
joeuser:secretpass

-or-

$ base64 <<<"joeuser:secretpass" | base64 -D
joeuser:secretpass

REMARQUE: nom d'utilisateur = joeuser, mot de passe = secretpass

Exemple n ° 1 - utilisation de -H

Vous pouvez mettre cela ensemble dans curl comme ceci:

$ curl -H "Authorization: Basic $(base64 <<<"joeuser:secretpass")" http://example.com

Exemple n ° 2 - Utiliser -u

La plupart des gens seront probablement d’accord pour dire que si vous vous en donnez la peine, vous pouvez aussi bien utiliser curl's -u option.

$ curl --help |grep -- "--user "
 -u, --user USER[:PASSWORD]  Server user and password

Par exemple:

$ curl -u someuser:secretpass http://example.com

Mais vous pouvez le faire de manière semi-plus sûre si vous conservez vos informations d'identification dans un service de coffre-fort chiffré tel que LastPass ou Pass .

Par exemple, ici, j'utilise l'outil CLI de LastPass, lpass, pour récupérer mes informations d'identification:

$ curl -u $(lpass show --username example.com):$(lpass show --password example.com) \
     http://example.com

Exemple n ° 3 - Utiliser la configuration curl

Il existe cependant un moyen encore plus sûr de transmettre vos informations d'identification à curl. Cette méthode utilise le -K _ commutateur.

$ curl -X GET -K \
    <(cat <<<"user = \"$(lpass show --username example.com):$(lpass show --password example.com)\"") \
    http://example.com

Lorsqu'elles sont utilisées, vos informations restent masquées, car elles sont transmises à curl via un descripteur de fichier temporaire, par exemple:

+ curl -skK /dev/fd/63 -XGET -H 'Content-Type: application/json' https://es-data-01a.example.com:9200/_cat/health
++ cat
+++ lpass show --username example.com
+++ lpass show --password example.com
1561075296 00:01:36 rdu-es-01 green 9 6 2171 1085 0 0 0 0 - 100.0%       

REMARQUE: Ci-dessus, je communique avec l'un de nos nœuds Elasticsearch pour obtenir des informations sur la santé du cluster.

Cette méthode crée dynamiquement un fichier avec le contenu user = "<username>:<password>" et donnant cela à curl.

Autorisation HTTP Basic

Les méthodes présentées ci-dessus facilitent une fonctionnalité appelée autorisation de base faisant partie de la norme HTTP.

Lorsque l'agent utilisateur souhaite envoyer des informations d'authentification au serveur, il peut utiliser le champ Autorisation.

Le champ d'autorisation est construit comme suit:

  1. Le nom d'utilisateur et le mot de passe sont combinés avec un seul deux-points (:). Cela signifie que le nom d'utilisateur lui-même ne peut pas contenir deux points.
  2. La chaîne résultante est codée dans une séquence d'octets. Le jeu de caractères à utiliser pour ce codage est par défaut non spécifié, tant qu'il est compatible avec US-ASCII, mais le serveur peut suggérer l'utilisation de UTF-8 en envoyant le paramètre charset.
  3. La chaîne résultante est codée à l'aide d'une variante de Base64.
  4. La méthode d'autorisation et un espace (par exemple, "Basic") sont ensuite ajoutés à la chaîne codée.

Par exemple, si le navigateur utilise Aladdin en tant que nom d'utilisateur et OpenSesame en tant que mot de passe, la valeur du champ est le codage en base64 de Aladdin: OpenSesame ou QWxhZGRpbjpPcGVuU2VzYW1l. Ensuite, l'en-tête Authorization apparaîtra comme suit:

Autorisation: base QWxhZGRpbjpPcGVuU2VzYW1l

Source: Authentification d'accès de base

3
slm