我刚刚开始在我的 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");
}
});
因此,尽管我的用户名/密码在变量中,但它们的值必须在页面(源(中。 无论谁访问该页面,都可以看到这些凭据。
这意味着,无论谁知道该页面的网址,都可以看到凭据。
如果我放置了一个登录页面,我应该如何在管理页面上检查此用户是否已通过身份验证。我应该使用饼干吗?如果用户通过登录页面进行设置?
为了增强安全性,我认为应该有另一种方法。首先,您需要使用用户名和密码对服务进行身份验证,并接收生存期有限的身份验证令牌,然后应使用此令牌访问服务。
我认为你必须选择另一种方法:
- 使用 UI(PHP、Java 等(创建服务器端应用程序
- 此应用程序具有会话管理
- 凭据存储在服务器端应用程序的配置中
- 对受基本身份验证保护的服务的请求由服务器应用执行。响应将传递给客户端
如果要创建客户端 JavaScript 应用程序,则无法隐藏凭据。您的方法的另一个问题可能是:受保护的服务是否支持 CORS(跨源资源共享(?