为了账号安全,请及时绑定邮箱和手机立即绑定

需要注销时可以使用基本身份验证的替代方法吗?

需要注销时可以使用基本身份验证的替代方法吗?

湖上湖 2021-05-07 14:08:27
如果未构建BASIC身份验证来处理注销,那么存在哪些备用身份验证方法来对需要能够注销的后端服务进行身份验证?我们正在使用BASIC身份验证来登录后端应用程序,并使用FORM身份验证来进行前端应用程序。我们的团队在FireFox / IE上测试了堆栈之后,发现如果用户通过这些浏览器上的BASIC身份验证登录到后端服务,则他们将无法注销。我的团队无法接受这些骇客和解决方法(要求用户输入不正确的凭据,关闭用户的浏览器,使用javascript发送不正确的凭据,要求用户清除浏览器缓存等),因此我们正在寻求有关替代身份验证方法的建议允许登出
查看完整描述

2 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

基于表单的身份验证

如果可以将会话状态保留在服务器上,则可以进行基于表单的身份验证

以表单的形式发送凭据,如果凭据有效,则服务器将发出cookie,该cookie将被来回发送以标识服务器上的会话。要注销,会话可以无效:

session.invalidate();

您还可以将应用程序配置为由于超时而使会话过期:

<session-config>
    <session-timeout>60</session-timeout> <!-- minutes -->
    </session-config>

基于令牌的身份验证

如果您需要无状态机制,请进行基于令牌的身份验证

客户端将硬凭证(例如用户名和密码)交换为一条称为令牌的数据。对于每个请求,客户端将发送令牌到服务器以执行身份验证,然后授权,而不是发送硬凭证。

对于令牌,可以使用JSON Web令牌(JWT)。这是一个开放标准,它定义了一种紧凑且自成体系的方式,用于在各方之间作为JSON对象安全地传输信息。

JWT是以下标记类型的通用名称

  • JSON Web签名(JWS):对有效负载进行编码和签名,以便可以验证声明的完整性

  • JSON Web加密(JWE):它们的有效负载已加密,因此对其他方隐藏了声明。

//img1.sycdn.imooc.com//60adfa2c000124b508040686.jpg

令牌可以在exp索赔中定义到期日期。要注销,您可以从客户端中删除令牌。

您还可以在服务器端的白名单中跟踪令牌,并根据需要使令牌无效。但是,无需将整个令牌存储在服务器端:仅将令牌标识符存储在白名单中,并使用jti声明将令牌标识符存储在令牌中。


查看完整回答
反对 回复 2021-05-26
?
万千封印

TA贡献1891条经验 获得超3个赞

我建议您看看Apache Shiro,尤其是会话的管理方式(https://shiro.apache.org/session-management.html)。他们已经抽象化了会话的概念,以便它可以在各种情况下工作:在Web应用程序中(在这种情况下,它只是HTTP会话的包装),在独立应用程序中,等等。前端可以打开和关闭与后端层共享的Shiro会话(从中注销)。

看到这句话:

异构客户端访问

(...)
For example, a (desktop) application could ‘see’ and ‘share’ the same physical session. We are unaware of any framework other than Shiro that can support this



查看完整回答
反对 回复 2021-05-26
  • 2 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信