我正在为我创建的API实施oauth2解决方案,并且我正在努力应对潜在的不安全因素(或至少我的理解)。
是否正确生成单个令牌并将其用作端点请求的身份验证凭据。是什么阻止了潜在的强力攻击,攻击者只需向API提交令牌,希望其中一个有效且正在使用?
我可能误解了一些东西,但我无法为我的生活带来什么。
答案 0 :(得分:2)
当然,令人难以想象。例如,它们不应该是简单的顺序整数。令牌长度也没有限制。基本上有两种选择:
1)构建一个使用您自己的密钥加密的长令牌(注意:它不会必须很长,但它会因为加密将使其长时间隐式)。您可以在返回时检查令牌是否真的属于您,因为您是唯一可以加密和解密这些令牌的人。
2)构建也存储在数据库中的令牌,并且相当难以创建,因此您将检查数据库中是否存在令牌。
您也可以混合使用这两种方法。您还应该为令牌添加一些过期时间(在第一种情况下嵌入其中,或者在第二种情况下在数据库中除外)。
答案 1 :(得分:1)
OAuth 2.0 for Brute Force Attack中最易受攻击的授权类型之一是资源所有者密码凭据类型。在这种情况下,黑客可以访问客户端凭据(clientId和密码),并且他/她只需要资源所有者(用户)凭据(用户名和密码)。 Java中描述了一种身份验证实现模型 - Spring Security here,可以避免这个问题。