2 votes

Quel est le format de la demande d'authentification à l'api python-eve ?

J'ai essentiellement deux questions connexes.

Dans mon cas, j'ai une authentification Mongo globale sous la forme suivante l'administration avec le mot de passe passer . J'ai mis en œuvre mon BCryptAuth tel que décrit dans cette réponse Ainsi, je peux créer des utilisateurs sans aucune authentification :

curl -d 'username="barack"' -d 'password="obama"' http://0.0.0.0:5000/users/?pretty

Ensuite, je peux accéder à mon api en utilisant mon authentification Mongo comme ceci :

curl -u admin:pass http://0.0.0.0:5000/users/?pretty

Mais je ne peux pas utiliser les informations d'identification de mon nouvel utilisateur pour obtenir des données. Ainsi, la requête

curl -u barack:obama http://0.0.0.0:5000/users/?pretty

ne fonctionne pas. J'obtiens toujours 401 :

{
    "_status": "ERR",
    "_error": {
        "code": 401,
        "message": "Please provide proper credentials"
    }
}

En cet exemple Après avoir mis en œuvre l'authentification de base, la demande est la suivante :

curl -H "Authorization: Basic YWRtaW46c2VjcmV0" -i http://example.com

Je ne vois pas très bien ce que le jeton qui suit le symbole Basic est le mot-clé. J'ai également essayé d'utiliser ce format dans mon cas, mais rien ne fonctionne.

La première question à se poser est donc de savoir quel doit être le format de la demande, étant donné que la barack avec le mot de passe obama pour les BasicAuth ?

Par ailleurs, j'essaie de mettre en œuvre la fonction TokenAuth . La deuxième question est la suivante : quel est le format de la demande avec le jeton ?

Je n'ai pas trouvé d'informations claires à ce sujet.

MISE À JOUR

Grâce à @gcw, j'ai trouvé comment faire la demande en utilisant la fonction Autorisation l'en-tête.

Quelques remarques :

  • Le décodage Base64 sous linux se fait avec echo '<base64encodedstring>' | base64 -d . Les -D est l'option macos.
  • L'encodage Base64 est effectué avec : echo -n '<string>' | base64 . Les -n est importante - elle fait tomber le new line qui est par défaut inclus dans le <string> .

Mais je n'ai toujours pas pu utiliser les utilisateurs nouvellement créés pour se connecter à l'api.

0voto

gcw Points 1070

L'en-tête Authorization doit avoir la valeur admin:pass au format base64. Si vous vérifiez le contenu de YWRtaW46c2VjcmV0 en le décodant avec echo "YWRtaW46c2VjcmV0" | base64 -D vous pouvez voir qu'il s'agit de admin:secret . Essayez d'utiliser vos identifiants au format base64 pour voir si cela fonctionne. Vous pouvez également générer l'en-tête d'autorisation à l'aide de l'onglet Auth de base de Postman.

En ce qui concerne l'utilisation de TokenAuth, vous pouvez utiliser Bearer au lieu de Basic pour transmettre votre jeton au format base64. Cette réponse ici explique en détail les différentes méthodes d'authentification HTTP.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X