我一直在浏览oAuth auth-code grant类型,根据我的阅读,我了解当你想让令牌远离用户代理时,你使用Auth-code grant而不是隐式授权。这允许您在客户端和后端API之间进行通信是安全的。但是一旦你这样做并且客户端具有与api通信所需的令牌,客户端和用户代理应该如何安全地通信?
我打算让客户端拥有自己的API,用户代理可以访问,这将使用访问令牌来访问后端API。我可以通过在用户代理和客户端服务器之间实现隐式授权来保证通信安全,但这似乎不必要地复杂,因为你将有2层oAuth。我觉得我在这里误解了一些东西,所以对此的任何澄清都会有所帮助。
答案 0 :(得分:1)
在这种情况下,我们讨论的是两个API的安全性:
1。) Backend-API - 您的客户正在使用它。
安全性:此处使用OAuth身份验证代码授予类型来保护此后端-api,以便客户端可以使用使用身份验证代码接收的访问令牌来访问此后端-api。
此处user -agent仅用于获取授权代码以获取访问API的访问令牌。
2。)客户自己的API - 用户将使用它来访问Backend-API检索的数据。
安全性:此API的开发人员需要根据客户端和许多其他因素实现此API的安全性。现在有许多协议和技术来保护API,例如:使用基本身份验证,Oauth 1.0a或Oath 2,JSON Web令牌(JWT),使用API密钥等。您会发现许多资源 关于如何保护API。
此处,用户-agent将用于访问客户自己的API。
结论:
这里需要注意的是,CLient自己的API的安全实现与Backend-API的安全实现无关。这些是2个不同的API,用于2个不同的目的,并将有自己的安全实现。
用户代理用于在第一种情况下获取身份验证代码(即访问后端API),并将用于访问客户端自己的API(在收到访问令牌后)。