对于允许客户访问其数据的客户 API,我想知道进行身份验证的最合理方法是什么。目前该 API 基于 OAuth 2.0 和授权代码流,但存在一些挑战:
最近我经常看到令牌是一种更简单的身份验证方法:
这是有效的前进方式吗?有没有其他选择?是否可以在每次使用时更新刷新令牌的有效性,以便在经常使用(并更新)令牌的情况下永远不需要新的登录?
答案 0 :(得分:0)
制定标准是为了帮助行业保持高水平的互操作性和安全性。您可以实施自己的解决方案,但它可能不像 OAuth 流程那样健壮和安全。例如,在我看来,发行一个在被撤销之前一直有效的令牌是一种非常糟糕的做法。如果有人设法窃取了该令牌,只要您没有注意到发生了一些奇怪的事情,他们就可以访问您的 API。
您的客户可能想要一个简单的解决方案,但这意味着它不安全。
如果他们实施 OAuth 流程有问题,也许您应该提供自己的 SDK 或库,这将使他们更轻松地处理流程。他们调用方法 getToken
的库,所有细节都由您的库处理。
我也不同意 OAuth 兼容供应商很难改变的观点。在大多数产品中,您可以轻松更改端点的路径,并且参数和流程是标准化的。您可以更改授权服务器,而您的用户不会注意到这一点(如果您拥有符合标准的服务器)。
至于滚动会话,您可以实现它。每当刷新令牌用于获取新的访问令牌时,您都可以发出具有延长到期时间的新刷新令牌。这样刷新令牌就可以无限期地有效,只要用户继续使用它。