11
votes

Couchdb, python et authentification

J'ai installé Couchdb V 0.10.0 et tente de lui parler via Python à partir de la classe Couch téléchargée à partir de Couchdb Wiki. Le problème est le suivant: xxx

i manuelle a modifié le fichier local.ini pour inclure mon identifiant OSX standard et mon mot de passe OSX. J'ai maintenant un accès complet via Futon mais pas de joie WRT Python. Est-ce un problème d'en-tête HTTP?

à une perte - merci!


2 commentaires

Quelle bibliothèque Python utilisez-vous? Il y a plusieurs classées sur la page Python Wiki ( wiki.apache.org/couchdb/getting_started_with_python )


Merci Andyuk - J'utilise exemple le code sur la page wiki car il est le plus simple. J'essaie également de trouver Couchdb Doc sur la désactivation de l'authentification (localement)


6 Réponses :


5
votes

Le classement Couch dans l'exemple ne transmet aucune information d'authentification à la base de données. Ce n'est donc pas un miracle qu'il n'autorise pas les opérations privilégiées. Donc, vos seules options sont:

  • Désactiver l'authentification complètement (comme vous l'avez mentionné)
  • transmettez le nom d'utilisateur et le mot de passe dans le cadre de l'URI
  • transmettez le nom d'utilisateur et le mot de passe sous la forme d'un HTTP Demand Heather

    Si vous souhaitez transmettre un nom d'utilisateur et un mot de passe, vous devrez modifier la catégorie Couch . Envoi d'un Authorisation HTTP Demander en-tête est plus facile, car la classe Couch utilise la classe httplib.httpconnection . Vous pouvez ajouter une telle en-tête à côté du accepter un de la manière: xxx

    même pour les autres méthodes de requête HTTP.

    La documentation sur l'authentification de base est ici:

    http: // livres. Couchdb.org/Relax/Reference/Security


1 commentaires

Documentation sur les fonctionnalités de sécurité de CouchDB: wiki.apache.org/couchdb/security_features_overview



6
votes

Vous pouvez également faire:

db = couchdb.Database("http://your.url/yourdb")
db.resource.http.add_credentials(username, password)


1 commentaires

Ne semble pas être une propriété .http dans la ressource, mais il y a Couch.Resource.Credentials. Donc j'ai fait Couch.Resource.Credentials = (server_user, server_passwd) qui fonctionne pour moi.



0
votes

Il existe plusieurs correctifs pour Python-Couchdb qui permettent l'authentification. Le code sera probablement inclus dans la version 0.7, mais jusque-là, vous pouvez utiliser la fourchette à http: // github. com / mdornseif / couchdb-python - il vous permet d'utiliser http: // utilisateur: PASS@127.0.0.1: 5984 / URL de type.

http: // Blogs.23.nu/c0re/2009/12/Running-A-CouchdB-Cluster-on-amazon-ec2/ (en bas) montre comment utiliser des mots de passe CouchDB.


0 commentaires

3
votes

Il suffit de le transmettre dans le cadre de l'URI ... Python-Couchdb analimuera l'utilisateur / le transmettre et les utilisera:

http: // utilisateur: PASS @ localhost: 5984


1 commentaires

Cela est vrai pour Python-Couchdb 0.7 et plus, assurez-vous que vous êtes à jour.



23
votes

Pour concourer la réponse de David, (c'est-à-dire comment je le fais en utilisant le module Couchdb 0.8 en Python 2.6 avec Couchdb 1.0.2 ")

couch = couchdb.Server(couch_server)

couch.resource.credentials = (USERNAME, PASSWORD)


2 commentaires

travaillé pour moi dans une situation similaire ... Une fois que je me suis souvenu de mettre mon nom d'utilisateur et mon mot de passe dans des citations! C'est un peu implicite dans la réponse de Lysdexia ici, mais je le mentionne ici au cas où quelqu'un d'autre manque qu'à la fin d'une journée à la fin. Sauf si bien sûr, vous ne les avez pas définis ailleurs et utilisez simplement des noms de variables ici.


Je voulais juste confirmer que j'ai pu utiliser cela sur la version 1.0 de la bibliothèque, en cours d'exécution sur Debian Wheezzy contre Couchdb 1.6.1, où le mot de passe de l'administrateur a été défini dans local.ini sous [Administrations]. Je suppose que cela fonctionnera avec des utilisateurs normaux aussi.



1
votes

ci-dessus sont tous agréables; Mais j'ai constaté que pour les méthodes de validation OAuth par rapport à la base de base, cela fonctionne vraiment bien: xxx

Remarque: cela ne fonctionnera pas avec l'authentification de base; Dans un tel cas, Fviktor a ce que je considère comme la meilleure réponse. Vous pouvez également examiner le matériel de référence de sécurité qu'il lié si vous êtes intéressé par des sessions d'authentification persistantes.


0 commentaires