我们计划在我们的系统中使用OAuth 2.0,我们对安全级别感到不舒服。 OAuth 2成为业界的标准,所以我怀疑我们可能会错过一些东西: - )
我们需要保护系统API;一些API公开了对用户信息的访问,而另一些则没有。用户可以在不登录的情况下使用系统,并且当稍后进行需要识别的操作时,他需要提供他的凭证。
因此,我们将首先使用客户端凭据授权授予来标识客户端。我们更喜欢这种模式,因为使用密钥看起来更安全。客户端是加载到用户代理的java脚本应用程序。流程是:
问:任何人都可以使用该应用程序的URL。如果您加载了应用程序,则手中有访问令牌。您不需要提供客户端ID或任何秘密......它就在那里。那么安全性在哪里?
对于需要识别用户的情况,我们考虑使用隐式授权授权。在这种情况下,我们不使用密钥,因为它不是客户端的秘密。但是,任何知道client_id且拥有注册用户的人都可以获得访问令牌。
问:那么,问题又是关于安全问题,我们怎么知道访问系统的客户端是真正的客户端?谢谢,
Aviram
答案 0 :(得分:0)
为什么你关心用户获取访问令牌?使用该令牌,只有属于该用户的数据才会暴露给该应用程序。
对于需要识别用户的情况:既然后端服务器已经存在,也可以使用代码流。用户和客户都已识别。
对于不需要识别用户的情况:客户端后端服务器中的代理是否可以接受?访问令牌只能是代理,您可以确保它是真正的客户端。 唯一的问题是代理需要检查每个HTTP请求的来源,以确保它来自同一个域。 JavaScript应用程序可以在向代理发送请求时添加一些自定义标头。