身份识别提供程序:什么是基于令牌的身份验证?
基于令牌的身份验证是一种身份验证协议,用户通过该协议验证自己的身份,以获得唯一的访问令牌。然后,用户可以在令牌的有效期内访问网站、应用程序或资源,而无需重新输入凭据。
基于令牌的身份验证的工作原理是什么?
基于令牌的身份验证从用户登录至系统、设备或应用程序开始,通常使用密码或安全问题。授权服务器验证初始身份验证,然后发放访问令牌,访问令牌是一小段数据,允许客户端应用程序向 API 服务器发出安全调用或信号。
基于令牌的身份验证的工作原理是为服务器提供第二种高度可靠的方式来验证用户的身份和请求的真实性。
完成该基于令牌的初始身份验证协议后,令牌就像盖了章的票据一样:用户可以在令牌生命周期内连续无缝访问相关资源,而无需重新进行身份验证。 该生命周期在用户注销或退出应用程序时结束,也可由设定的超时协议触发。
基于令牌的身份验证有何益处?
基于令牌的身份验证能为多个利益相关者提供许多便利:
- 即时的用户体验:用户无需在每次返回系统、应用程序或网页时重新输入凭据并重新进行身份验证,只要令牌仍然有效(通常会持续到会话因注销或退出而结束),用户就可以保持即时访问。
- 增加了数字安全性:基于令牌的身份验证在传统的基于密码或基于服务器的身份验证之上又增加了一道安全保护。通常,令牌比密码更难被窃取、被黑客入侵或以其他方式泄露。
- 管理员控制:基于令牌的身份验证为管理员提供了对每个用户操作和事项的更精细的控制和可见性。
- 减轻技术负担:由于令牌生成可以与令牌验证完全分离,因此验证可以由辅助服务(如 Entrust 身份和访问管理解决方案提供的服务)来处理。这将显著减少内部服务器和设备上的负载。
什么是访问令牌?
访问或身份验证令牌授予用户对设备、应用程序或其他数字资源的访问权限。当今有许多种不同类型的令牌:
硬件令牌
硬件令牌是用户用来访问资源的小型物理设备。硬件令牌可采用连接的方式(即 USB、智能卡、一次性电子密码钥匙链)或非接触的方式(即蓝牙令牌)。此类令牌由用户携带。在基于令牌的身份验证(阅读:前智能手机时代)的早期阶段,硬件令牌是唯一的选择。但硬件令牌相对昂贵,容易丢失和被盗,因此通常需要更多 IT 支持。
软件令牌
软件令牌,亦称断开连接式令牌,是真正的非接触式令牌,可以在任何地点验证身份。如今,最常见的软件令牌是通过智能手机实现双重身份验证 (2FA)、多重身份验证 (MFA) 或 JSON 网络令牌的移动应用程序。软件令牌正日益成为基于令牌的身份验证的主要选择,其具有降低成本、减少用户接触、降低丢失或被盗的可能性以及降低中间人攻击风险的优势。
开源或 JSON 网络令牌的组成部分
JSON 网络令牌由三个不同的部分组成:
- 标头:令牌的类型和加密算法
- 有效负载:给定资源的身份验证凭据
- 签名:用于验证有效负载真实性的加密密钥
如何实现基于令牌的身份验证?
实现基于令牌的身份验证协议有五个关键步骤:
- 请求:用户输入其登录凭据
- 验证:服务器验证用户凭据
- 令牌提交:服务器生成一个令牌,该令牌在设定时间段内有效
- 存储:令牌由用户的网络浏览器存储,以备将来使用
- 到期时间:令牌在给定的时间段内保持活动状态
何时推荐使用基于令牌的身份验证?
在许多情况下,基于密码或服务器的身份验证足以满足安全需求。但是,有几个特征可表示基于令牌的身份验证所提供的额外安全性、控制和用户便利性格外适用:
- 经常授予临时访问权限的系统/资源:如果您的用户基数因日期或时间的不同而变化很大,那么授予和取消临时用户访问权限的传统协议可能会耗费大量时间、成本,并有较高的技术要求。令牌可以为安全、即时的临时访问提供动态、敏捷、高性价比的解决方案。
- 需要精细门禁的系统/资源:如果您需要将访问控制到更精细的级别(例如,授予对文档特定部分的访问权限或授予特定的编辑或使用权限),则基于密码的身份验证将不起作用。基于令牌的身份验证非常适合这些更详细的权限和更精细的管理控制。
- 极有可能遭到黑客入侵或泄露的系统/资源:如果您的数字资源包含特别敏感、有价值或受保护的信息,那么基于令牌的身份验证将比基于密码的身份验证更加有效。
- 受到严格监管的系统/资源:与上述观点相交的是,如果您的数字资源包含受数据隐私要求或其他法规保护的敏感信息,则这些法规可能会规定身份验证不限于基本密码。如果配置得当,基于令牌的身份验证可以满足高度安全保护的合规性要求。
基于令牌的高度安全身份验证的最佳做法
无需置疑的是,采用基于令牌的身份验证是走出传统基于密码的身份验证的重要一步,但令牌仍被视为“不记名令牌”,也就是说,任何持有令牌的人都可以访问。这意味着,即使是像移动应用程序这样的软件令牌仍有被盗或泄露的风险:个人如果恶意拥有令牌,就可以使用该令牌在未经授权的情况下访问受保护的资源和信息。为了防范这种潜在的被盗和泄露风险,围绕以下最佳做法构建基于令牌的身份验证程序显得尤为重要
- 对令牌保密:用户应将令牌(无论是硬件还是软件)视为安全凭据。这意味着应安全可靠地存储令牌,切勿共享,且只能向经过验证的服务透露,以防止丢失或被盗。
- 简化令牌有效负载:令牌旨在使用最少量的信息来对用户进行身份验证。虽然令牌已被编码,但也会被恶意行为者轻松解码。因此,切勿在令牌有效负载中放入敏感或受保护的信息,并尽量减少对有效负载的索取。这也将有助于提高速度/性能。
- 明确令牌到期时间并启用令牌撤销:令牌通常设置为在用户注销或硬退出时自动到期。但是从技术上讲,如果没有会话结束触发器,已签名的令牌就没有内置的到期时间。为了防止泄露,您应该为所有令牌设置默认到期时间,并在必要时制定撤销令牌的协议。
- 始终使用 HTTPS 连接:如果连接不安全,则在传输过程中拦截和窃取令牌会变得异常容易。在向(从)令牌验证服务器中发送(获取)令牌时,请务必使用 HTTPS 连接。
- 考虑其他层或安全性:根据您的安全要求,可能需要在基于令牌的基本身份验证的之上添加其他安全和身份验证协议。例如,某些用例添加了第二个令牌验证系统,专门确保所有令牌都是从正确的服务器生成的。