我可以将 oauth client_secret 存储在服务器上而不是从前端客户端发送它以便每个人都可以看到吗?

can I store oauth client_secret on server instead of sending it from the frontend client so everyone can see it?

我正在构建一个将使用 api 的客户端。为此使用 Laravel 和 vuejs。后端是它自己的应用程序,前端客户端是它自己的应用程序,将 运行 在 vuejs 上。

现在,当我想将用户登录到后端时,我必须从客户端发送此数据:

            form: {
                'grant_type' : 'password',
                'username': 'student@gmail.com',
                'password': 'pass1234',
                'provider': 'student',
                'client_id': "2",
                'client_secret' : 'fXz4bILqz5CnDjFCvXpw7RZWLgWXxsTa0LN1'
            }

像这样在客户端中保存秘密是明智还是危险?现在每个人都可以看到它,他们可以以某种方式使用它吗?如果它危险或不推荐,其他人是怎么做的?如果您不从客户端发送 oauth client_secret,那么您将它保存在哪里?

顺便说一句,如果有人有构建 api:s 的经验,想知道为什么我在这里提到提供者,因为我使用的是多重身份验证护照,所以我可以通过不同的提供者对不同类型的用户进行身份验证。但我的问题是关于在前端 javascript 中存储 client_secret 的安全性?

这是个糟糕的主意,你永远不应该在客户端使用 client_secret,

选项 1:
使用implicit grant。 此授权最常用于 JavaScript 或无法安全存储客户端凭据的移动应用程序。

选项 2:
从您的登录控制器对 auth/token 进行内部调用。类似于此解决方案中的寄存器 here 因此,您将 username/password 发送到您的登录控制器,登录控制器将进行内部调用以获取令牌。