我用yii2写了一个休息api,我正在使用 oAuth2 ,问题是用户想要登录,客户端Web应用程序应该发送请求获取令牌,请求应包含 client_id和secret_key以及用户名和密码在这种情况下,用户只需检查元素并单击网络并查看已发布的参数到服务器这意味着用户可以看到client_id和secret_key。 client_id和secret_key是每个应用程序的签名,服务器可以找出使用api的巫婆应用程序。 如何处理这个安全问题?
答案 0 :(得分:0)
您似乎错过了OAuth 2.0的一个关键元素,客户端类型。
OAuth 2.0定义了两种类型的客户端,公共客户端和 confidentiatl客户端。
<强> 2.1. Client Types 强>
<强>机密强>
这些是可以保护凭证的客户。他们有 完全有可能使用授权代码授予类型,从而获得 来自反向信道请求的令牌。因为他们使用反向信道来获取 令牌,他们的凭据永远不会暴露给最终用户(通过用户 剂)
公开强>
无法保护凭据的客户端。例如SPA客户端和 移动应用程序属于此类别。
在您的情况下,您似乎有一个公共客户端(看起来像broswer中的基于用户代理的应用程序)。在这种情况下,您应该将您的客户端类型设置为公共客户端。如果不是这种情况,则表示您未在Web应用程序中使用正确的反向通道调用。
此外,使用授权代码流的公共客户端可以使用PKCE来避免授权代码被盗攻击。可以从RFC7636
找到相关的RFC