Web API授权方案

时间:2014-03-03 14:30:35

标签: c# asp.net .net asp.net-web-api

我以前实现了ASP.NET WebSecurity Membership和WebAPI,但我从未同时使用它们(从不需要)。

现在,我正在构建一个新站点,客户端不需要访问者注册或登录。所以没有会员资格。

然而,客户端希望能够通过WebAPI检索数据。然而,这些数据可能是敏感的,并不是我们希望用户或黑客看到的东西,所以我如何“授权”我的客户端 - 而且只有我的客户端 - 以便她可以从客户端发出API请求(无论是WinForms)桌面应用,移动应用等)?

1 个答案:

答案 0 :(得分:1)

我在面向公众的API中实现了类似的功能,其中一些方法只允许管理员调用。

管理方法签名包括字符串参数,该字符串参数接受我之前分配给管理员用户的唯一标识符字符串。

然后在我检查的每个方法调用上,如果提供的API Key属于管理员并且如果没有则抛出未经授权的异常,或者如果有则响应带有数据的调用。

示例方法:

public decimal GetCompanyBalance(string APIKey, int CompanyId)
{
    if(!UserManager.GetByAPIKey(APIKey).IsAdmin){
        throw new UnauthorizedException();
    }

    return Company.GetBalance(CompanyId);
}