我无法使用管理员在 CouchDB 3.x 中创建数据库

I am not able to do create database in CouchDB 3.x with Admin

刚刚在 windows 机器上安装了 couchdb 3.00 版本并配置为单节点。

在安装中定义管理员,即使在安装之后。定义后重新启动 couchDB。

我的管理员出现在 UI:

但是当我尝试通过 shell 脚本创建数据库时,它会响应:

我绝对确定我的密码是正确的。

我想知道我是否犯了错误或错误。

该问题与 CouchDB 无关,而是与 Invoke-WebRequest 允许的身份验证方法有关。

虽然我找不到任何明确说明 URL 凭据 不受 支持的文档,但我确实在 PowerShell 文档中找到 1 支持的身份验证方法列表:

-Authentication

Specifies the explicit authentication type to use for the request. The default is None. Authentication cannot be used with UseDefaultCredentials.

Available Authentication Options:

None: This is the default option when Authentication isn't supplied; no explicit authentication is used.

Basic: Requires Credential. The credentials are sent in an RFC 7617 Basic Authentication header in the format of base64(user:password).

Bearer: Requires Token. Sends an RFC 6750 Authorization: Bearer header with the supplied token. This is an alias for OAuth

OAuth: Requires Token. Sends an RFC 6750 Authorization: Bearer header with the supplied token. This is an alias for Bearer

我将以上内容解释为不支持您使用的身份验证方法

这是一个使用基本身份验证的示例,它肯定是执行任务的数百种方法之一。

 # setup variables to form a HTTP Basic Authorization
 $uid = "<username>"
 $pwd = "<password>"
 # Convert the Basic credentials to bytes
 $atob = [System.Text.Encoding]::UTF8.GetBytes($uid +":" + $pwd)
 # To Base64 encoding
 $auth = "Basic " + [System.Convert]::ToBase64String($atob)
 # Create the database
 Invoke-WebRequest -Method PUT -Url http://127.0.0.1:5964/abc -Headers @{"Authorization"=$auth}

FWIW,cURL 允许轻松进行内联 URL http 身份验证,但这可能不是一个选项。

以上代码借鉴了这个关于基本身份验证的 SO Q/A 答案。

1 PowerShell Documentation Version 7

从 Couchdb 3 开始,必须对 PUT 或 DELETE 操作使用身份验证。 Invoke-WebRequest 为此目的设置了 -Authorization 参数。 但身份验证是明文格式。我使用 PSCouchDB (https://pscouchdb.readthedocs.io/en/latest/auth.html) 在 SecureString 密码对象中使用身份验证。

例如:

$password = "password" | ConvertTo-SecureString -AsPlainText -Force

Set-CouchDBSession -UserId admin -Password $password

Set-CouchDBSession -UserId admin    # prompt password

New-CouchDBDatabase -Database test