启用基本身份验证并阻止浏览器提示进行身份验证

时间:2017-06-26 15:38:29

标签: java spring spring-security basic-authentication

首先,我不是100%肯定我所要求的是正确的做法。如果我错了,请随意给我纠正。

使用Spring Security,我开发了一个REST API后端,用户可以使用一些自定义条目登录。如果我的用户使用我的自定义API对自己进行身份验证,则会为他们创建一个会话,并且考虑到他们的角色和ACL,他们可以访问其余的API条目。

同时,这些API的设计使其可以为其他软件提供服务。所以我认为启用一些HTTP基本身份验证也是有意义的。后来,我也可能正在研究摘要。如果某些请求使用这些方法之一进行身份验证,则不会为它们创建任何会话。他们需要为每个请求重新进行身份验证。这是一个无状态的API。

到目前为止一切都很棒。用户和其他系统可以使用相同的API集。但问题是当用户的会话过期时。或者当某些用户在登录之前开始使用后端服务时。在这种情况下,正确的策略是将用户重定向到登录页面并要求他们自己进行身份验证。但是,由于我已经启用了HTTP基本身份验证,因此调用需要身份验证的REST API(当用户未经过身份验证时)会弹出一个浏览器弹出窗口,询问用户名和密码。

当然,用户可以输入凭据并继续使用系统。但我不喜欢这种用户身份验证方式。首先,身份验证凭据会坚持下去,我认为这是一个安全风险。它们很容易保存到浏览器中,而无需通知用户。并且很难摆脱保存的凭据。用户可以在不知道他的用户名和密码被保存的情况下离开计算机。

所以我的问题是,是否可以启用基本身份验证,但同时阻止浏览器知道它?甚至更好,采取行动?

我怀疑如果我在回来的路上阻止WWW-Authenticate响应标题,我可能会这样做。但是,我不确定这样一个决定的后果。此外,我不知道如何从所有API的响应中删除该标头。

1 个答案:

答案 0 :(得分:0)

我想我先没先仔细研究就急着问一个问题!这篇文章完美地回答了它!

How can I supress the browser's authentication dialog?

解决方案:在您的请求中添加X-Requested-With: XMLHttpRequest标头。

相关问题