PouchDB允许未经授权的用户创建管理员

时间:2018-02-10 22:44:37

标签: authorization couchdb admin pouchdb

我有一个pouchdb(使用他们自己的服务器)安装运行。如果我做

int execCmd(char* args[10])
{
    pid_t pid;

    switch( pid = fork() )
    {
        case -1:   // error
            perror( "fork failed" );
            exit(1);
            break;

        case 0:    // child
            execvp(*args, args);
            perror( "execvp Failed!" ); 
            exit(1);
            break;

        default:   // parent
            /* do something */
            waitpid( pid, NULL );
            break;
    }

    return 0;
}

我按预期得到curl -X PUT 127.0.0.1:5984/_config/admins/anna -d '"secret"'

但是,如果我使用 pouchdb-authentication 插件并在浏览器中运行以下内容(确保我已注销),则会创建一个服务器管理员

{"error":"unauthorized","reason":"You are not a server admin."}

发生什么事了?!

1 个答案:

答案 0 :(得分:0)

在我的电脑上,当我这样做时:

$ curl -kv -X PUT https://root:****@192.168.1.106:6984/_node/couchdb@127.0.0.1/_config/admins/admin -d '"****"'

我正在通过添加额外的admin用户来更改计算机上CouchDB的全局配置。

我不太清楚PouchDB是如何工作的,但我认为当你像这样使用PouchDB时:

const db = new PouchDB('http://127.0.0.1:5984/spacedbs')
let aut = db.signUpAdmin('illegal', 'pass')

您只是将管理员添加到单个数据库而不是全局CouchDB配置。 sample数据库可以拥有管理员/成员用户/角色,如下所示:

enter image description here