使用C#进行RESTful API调用

时间:2018-03-07 11:16:02

标签: c# rest security authorization api-design

我正在使用提供商提供给我的密钥和密码来构建我的URL以进行API调用。

https://api.testurl.com/api/test/calldata?key=12345&secret=999999&query=hello

我的问题是,我正在追加“查询”。每次基于用户输入并使用'键进行呼叫。并且'秘密'每一次 - 对我而言,这似乎并不安全。每次拨打电话都不会泄密密钥吗?

public async Task<List<APIResult.Data>> ApiAsync()
{
    using (var client = new HttpClient())
    {
    HttpResponseMessage response = await client.GetAsync(_apiUrlToCall);

    if (!response.IsSuccessStatusCode) return null;
        var result = await response.Content.ReadAsStringAsync();
        var rootResult = JsonConvert.DeserializeObject<APIResult.Rootobject>
        (result);
        return rootResult.Data.ToList();
    }
}

2 个答案:

答案 0 :(得分:4)

通常,您会在HTTP标头中而不是在查询字符串中传递身份数据(在本例中为密钥和密钥)。这样它就不会被记录在任何地方(例如IIS日志,浏览器历史记录,谷歌,facebook 跟踪器)。

如果您使用的是HTTPS,则应该阻止它在其他任何地方公开。

但是,因为HTTP是无状态,每次发出请求时都必须发送某种识别数据,无论是秘密密钥,Kerberos令牌,会话coookie,无论它是什么。

答案 1 :(得分:2)

你可以传递钥匙和钥匙作为Http标题的秘密。通常,对于rest api,授权Http Header是使用authtoken设置的。你可以这么类似。