HTTP 403 确实表明缺少或不正确的凭据,或者用户无权表或查询资源的事实。
首先,确保您将用于向 SlashDB 发送请求的用户名已分配给查询的执行权限。为此,请转到配置-> 查询,然后打开查询定义。在执行字段中输入用户名。您可以通过用逗号分隔多个用户名来分配它们。作为旁注用户 public 不需要凭据,因此如果您的资源可以公开使用,只需添加 public 执行字段。
对于非公共用户,您需要在 HTTP 请求中提供这些凭据。
SlashDB 允许通过两种方式发送您的凭证:
- 使用 BasicAuthentication 的用户名/密码
- API 密钥
Ad.1使用 Authorization 标头和 username:password 的二进制值构造您的 HTTP 请求。请参阅此 Stackoverflow 配方如何做到这一点:Calling a rest api with username and password - how to
Ad.2要使用 API 密钥,首先为 SlashDB 用户分配一个密钥(字母数字字符串),然后在您的请求中提供它。
为此,请转到配置-> 用户,然后打开用户的配置对话框。向下滚动到底部的 API 身份验证部分,然后将您的密钥粘贴到提供的字段中。如需灵感,请参阅http://randomkeygen.com/上的 CodeIngniter 或 WEP256 密钥。不要使用包含“:”的字符串,因为它用于将密钥拆分为 app-key 和 api-key。现在只需使用一个键即可。
将您的密钥与您的请求一起作为标头或在 URL 查询字符串中发送。默认情况下,该参数称为“apikey”:
选项 1:在标题中
(HttpWebRequest)WebRequest.Create(@"https://slashdb.yourdomain.com/db/Northwind/Customers/CustomerID/ALFKI.json");
req.Headers.Add("apikey", "12345678");
选项 2:在 URL 中
(HttpWebRequest)WebRequest.Create(@"https://slashdb.yourdomain.com/db/Northwind/Customers/CustomerID/ALFKI.json?apikey=12345678");