2012-02-23 19 views
6

私はこのトピック、特にerlangの新機能についてはかなり新しいことを認めなければなりません。現在、私はさまざまな認証ハンドラを試してみようとしています。目標は、Facebook、Twitterなどで "委任された認証"を行うことです。couchdbカスタム認証ハンドラ

  1. 私が理解する限り、couchdbの実装はちょうど私が必要とするものの反対です。これを使用して、couch-usersのトークンを作成できますが、twitterのaccessTokens/secretsを受け入れずに、それをソファのユーザーにマッピングすることもできます。
  2. 私はdatacouch - nodejsのtwitterに対する認証に必要なものを見つけました。その後、プライベートソファから平文パスワードを取得し、それを_session-APIと共に使用してソファクッキーを作成しました。

ここでは、平文のパスワードを保存しないようにしようとしています。私はproxy_authentification_handlerを使用することを聞いたが、それはあまりにも不経済であるか、それを使用するにはあまりにも愚かであるようだ。 (私は理解限り)Iを作製couch_httpd_authに正しいエントリ

couch_httpd_auth auth_cache_size   50 
        authentication_db  _users 
        authentication_redirect /_utils/session.html 
        require_valid_user  false 
        proxy_use_secret  false 
        secret     xxxxxxxxxxxx 
        timeout     43200 
        x_auth_roles   roles 
        x_auth_token   token 
        x_auth_username   uname 

、またセクションのhttpdで

httpd    allow_jsonp    true 
        authentication_handlers {couch_httpd_auth, proxy_authentification_handler},{couch_httpd_auth, cookie_authentication_handler}, {couch_httpd_auth, default_authentication_handler} 
        bind_address   127.0.0.1 
        default_handler   {couch_httpd_db, handle_request} 
        port     5984 
        secure_rewrites   false 
        vhost_global_handlers _utils, _uuids, _session, _oauth, _users 

としては他にも(iはfalseにproxy_use_secret設定docsのコメントに記載され最初のステップ)、アクセストークンなしの認証を許可します。

私は今、何も影響を与えていないようですhttp://localhost:5984/_utils/config.html?uname=user1&roles=userにGETを行う...

誰もが今までそのことを実行しましたか?何か不足していますか?または、erlangをコーディングせずにカスタム認証ハンドラを実装する機会はありますか?

ありがとうございます。

答えて

2

URLパラメータは何も実行していません。

  • X-Authの-CouchDBのユーザ名:ユーザ名、(couch_httpd_authセクションでx_auth_username)
  • Xを、あなたはoriginal bugユーザー名とロールがURLが、HTTPヘッダでない渡されることがわかりますを見てみると(couch_httpd_authセクションのx_auth_roles)
  • X-Auth-CouchDBトークン:認可を認証するトークン(couch_httpd_authセクションのx_auth_token)-Auth-CouchDB-Roles:ユーザーロール、カンマで区切られたロールのリスト。このトークンは、秘密鍵とユーザ名から作成されたhmac-sha1です。秘密鍵は、クライアントとcouchdbノードで同じにする必要があります。秘密鍵はiniのcouch_httpd_authセクションの秘密鍵です。秘密鍵が定義されていない場合、このトークンはオプションです。

これらのヘッダー情報を入力すると、認証は実際には広告として機能します。