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 lenew 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.