我已经在我的Asp.Net Web API应用程序中使用JWT实现了用户身份验证。只要用户登录,生成访问令牌并返回到客户端,并且客户端随每次访问安全资源的请求发送回来,它都能正常工作。但是,如果我复制相同的访问令牌并使用相同的访问令牌从任何其他客户端(如邮递员)准备请求,则可以访问受保护资源。我认为这是正常行为。但有没有更好的解决方案摆脱这一点,即即使使用相同的访问令牌也不允许任何其他客户端。这样也可以使客户特定。
答案 0 :(得分:2)
如果您不希望任何其他入侵者复制您的访问令牌并访问受保护资源,则必须使用 SSL 。
为了保护极其敏感的数据,您应该将令牌生命周期保持在非常短的时间范围内。如果您要保护敏感度较低的东西,可以延长使用寿命。如果令牌有效,则令牌越长,攻击者在用户的计算机受到威胁时必须模拟经过身份验证的用户的时间窗口越长。
您可以查看this great answer了解一些事情
答案 1 :(得分:0)
您应该首先传递用户名和密码以获取令牌。该密码是提供安全性的私钥,以确保没有其他人可以为该用户获取令牌。只要您的流量超过https(ssl),那么该令牌在传输过程中受到保护,其他任何人都无法拦截它。