在我的应用程序中,客户端通过SSLSocket
连接到服务器。要进行身份验证,服务器将发送盐,而客户端将发送使用给定盐加密的密码。
我实际上不想让用户每次都输入密码,但是另一方面,我不想遇到安全问题。
我了解了密钥库,但是它们安全吗?而且据我了解,用户仍然必须输入密码。
什么是安全且用户舒适的解决方案?
答案 0 :(得分:0)
如果我正确理解,您当前的协议如下所示:
px-sm-5
客户端不必一次又一次地发送密码,我建议您在协议中使用访问令牌。访问令牌(“身份验证令牌”,“会话ID”)是服务器返回的较大随机值,作为身份验证响应:
<div class="mx-auto order-0 mb-0 h3 px-sm-5">
这是一个会话管理。 NIST提供有关会话管理的建议:https://pages.nist.gov/800-63-3/sp800-63b.html#sec7
与连续显示凭据相比,会话管理更可取,因为连续显示的可用性很差,通常会诱使人们采取变通办法,例如缓存的解锁凭据,从而使身份验证事件不新鲜。
客户端将访问令牌保存在内存中,并代替使用它。 如果要在应用程序启动之间保留访问令牌,则必须安全地存储它,并且取决于客户端的操作系统:
无论哪种方式,访问令牌都必须在一段时间后过期,即使它由于某种原因泄漏了,客户端也会在一段时间后获得一个新令牌。请参阅有关re-authentication in NIST的部分。