1

我们在 slashdb(slashdb.com) 后面暴露了我们的 sql server db。在他们的网站中,我们能够创建查询并从他们生成的 URL 中获取数据。但不是来自外部,比如来自 C# 应用程序。

现在我们将在您的 c# 应用程序中使用这些 URL,并在我们的网页中显示数据。我知道如何在 c# 中进行基于休息的调用。但是我被困在通过我的 c# 的 slashdb rest api 调用发送身份验证信息。它抛出 403 http 错误。

请让我知道如何从 ac# 应用程序调用 slash db rest 调用。

谢谢。

4

1 回答 1

1

HTTP 403 确实表明缺少或不正确的凭据,或者用户无权表或查询资源的事实。

首先,确保您将用于向 SlashDB 发送请求的用户名已分配给查询的执行权限。为此,请转到配置-> 查询,然后打开查询定义。在执行字段中输入用户名。您可以通过用逗号分隔多个用户名来分配它们。作为旁注用户 public 不需要凭据,因此如果您的资源可以公开使用,只需添加 public 执行字段。

对于非公共用户,您需要在 HTTP 请求中提供这些凭据。

SlashDB 允许通过两种方式发送您的凭证:

  1. 使用 BasicAuthentication 的用户名/密码
  2. 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");
于 2014-10-03T18:16:57.587 回答