如何保护我的Web API基本身份验证凭据

时间:2019-04-23 09:38:04

标签: authentication asp.net-web-api

我刚刚开始在我的Web API中实现身份验证。 我想从基本身份验证开始

我了解到我必须在每个请求中都传递用户名和密码。
因此,可以说我正在执行一些管理任务,并像这样对API进行调用:

 $.ajax({
          url: host + "homework/delete/" + $(this).data("id"),
          type: 'DELETE',
          headers:
                    {
                        Authorization: 'Basic ' + btoa(username + ':' + password)
                    },
          success: function (d) {
                   $tr.remove();
          },
          error: function () {
                 alert("Error please try again");
          }
  });

因此,尽管我的用户名/密码是可变的,但它们的值必须位于page(source)。任何访问该页面的人都可以看到这些凭据。
这意味着,只要知道该页面的URL,就可以看到凭据。

如果我放置登录页面,我应该如何在管理页面上检查该用户是否已通过身份验证。我应该使用Cookies吗?如果用户正在通过登录页面进行设置?

2 个答案:

答案 0 :(得分:0)

为了增强安全性,我认为应该有另一种方法。首先,您需要使用用户名和密码对服务进行身份验证,并接收具有有限生存期的身份验证令牌,然后应使用此令牌来访问您的服务。

答案 1 :(得分:0)

我认为您必须选择另一种方法:

  1. 使用UI(PHP,Java等)创建服务器端应用程序
  2. 此应用程序具有会话管理
  3. 凭据存储在服务器端应用程序的配置中
  4. 对由基本身份验证保护的服务的请求由服务器应用程序执行。响应已交付给客户

如果要创建客户端JavaScript应用程序,则无法隐藏凭据。您的方法的另一个问题可能是:安全服务是否支持CORS(跨源资源共享)?