【问题标题】:PouchDB authentication with token (Cookie: AuthSession=xyz) lead to unsafe header "Cookie"带有令牌的 PouchDB 身份验证(Cookie:AuthSession=xyz)导致不安全的标头“Cookie”
【发布时间】:2018-06-20 04:55:41
【问题描述】:

我想使用 couchdb 提供的访问令牌连接到我的远程 couchdb 数据库,这可以通过发送带有以下内容的标头来完成:

Cookie: AuthSession={COUCHDB_TOKEN}

我用 curl 做这个没有问题。但是使用 pouchDB 的代码如下:

new PouchDB(url, {
    ajax: { headers: {'Cookie': 'AuthSession=couchdb_token'} }        
});

我得到了错误:

Refused to set unsafe header "Cookie"

有没有办法将此令牌放入标头而不会出现此错误?

我已经进行了研究,但无法找到一种在不提供用户名和密码的情况下使用 pouchdb 与远程数据库同步的方法,但这些不应该存储在客户端所以..

【问题讨论】:

    标签: cookies ionic-framework header couchdb pouchdb


    【解决方案1】:

    问题是浏览器阻止了“Cookie”请求标头的设置,因为该标头由浏览器直接管理。您不能设置任何these headers

    您应该使用 _session 端点向 CouchDB 进行身份验证。该端点将响应一个 Set-Cookie 标头,该标头在浏览器中建立了 AuthSession cookie,该 cookie 在接下来的调用中被发送回 CouchDB。

    我通常做的是在 CouchDB 中配置一个 ProxyAuthentication(注意:这在 CouchDB 2.0 中被破坏)模式,然后在我的应用程序中使用自定义 auth 标头进行身份验证。这种方法有点复杂,但允许您将应用程序身份验证令牌与 CouchDB 一起使用。 --- 编辑 ---

    请检查您是否有ProxyAuthentication enabled。 身份验证令牌的逻辑是here。 您不需要调用 _session 端点,只需使用适当的逻辑构建令牌即可。

    -- 编辑2--

    查看 CouchDB 代码,Token 是这样生成的:

    "X-Auth-CouchDB-Token": hex_hmac_sha1(secret, "user@test.org")

    地点:

    • secret 是 couch_httpd_auth/secret 定义的密钥。
    • 用户是标头 X-Auth-CouchDB-UserName 中提供的用户

    您应该在客户端重现此逻辑。

    【讨论】:

    • 好的,谢谢,是的,我使用 _session 端点,但仅与我的节点服务器一起使用,然后我将 AuthSession cookie 返还给客户端,但如何使用它,但将其添加到标题中?您说的其他选项是配置 ProxyAuthentication 然后使用以下标头: X-Auth-CouchDB-Roles: users,blogger X-Auth-CouchDB-UserName: foo X-Auth-CouchDB-Token: {SECRET_TOKEN} {SECRET_TOKEN}与我们从询问 _session 得到的令牌是一样的吗?因为这对我不起作用。
    • 我发现这部分文档很不清楚,这个令牌是在哪里生成的? :HTTP 标头名称(默认为 X-Auth-CouchDB-Token),包含用于验证授权的令牌。此令牌是从 couch_httpd_auth/secret 和 couch_httpd_auth/x_auth_username 创建的 HMAC-SHA1。客户端和 CouchDB 节点上的密钥应该相同。
    • @YvonneAburrow 这是我发布解决方法的链接stackoverflow.com/a/48356410/7077287
    猜你喜欢
    • 2012-12-12
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2017-04-27
    相关资源
    最近更新 更多