使用令牌保护API

时间:2015-10-24 22:52:48

标签: api security asp.net-web-api cryptography token

我目前正在开发API,但我对如何保护它有点困惑。我不想重新发明轮子,而且我不是加密专家。

我目前的计划如下;

  • 检查客户端是否通过HTTPS进行通信

  • 检查客户端是否有令牌,如果他们确实有验证,否则让他们登录(返回401)

要验证令牌,我会检查它是否存在于数据库中,是否检查它是否已过期。

如果令牌不存在,我会要求他们进行身份验证。这将涉及通过HTTPS将其用户名和密码发送到服务器,我会使用传统方法检查它(哈希,加盐,比较等)如果全部检出,那么我就创建一个会话密钥/ token / random字符串以及将来的所有请求都要求他们发送API请求。

这听起来像是一种明智的做法吗?

由于

2 个答案:

答案 0 :(得分:0)

您可以选择使用单点登录并将令牌生成委派给安全令牌服务,例如Thinktecture's Identity Server。 然后在API端,您将只需配置承载令牌认证,如下所示:

app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
    {
        Authority = "https://localhost:44319/identity",
        RequiredScopes = new[] { "sampleApi" }
    });

此处的完整示例:https://identityserver.github.io/Documentation/docs/overview/mvcGettingStarted.html

答案 1 :(得分:-1)

对于初学者来说,这听起来不错。您在考虑的是基本身份验证,然后是基于令牌的授权。但是你也应该考虑使用某种混淆技术来发送用户名和密码。像base64一样,它只有你的算法可以在服务器端解密的特定格式。这是一个很好的教程,可以帮助您:http://www.codeproject.com/Articles/1005485/RESTful-Day-sharp-Security-in-Web-APIs-Basic