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

问题描述 投票:0回答:1

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

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

            form: {
                'grant_type' : 'password',
                'username': '[email protected]',
                'password': 'pass1234',
                'provider': 'student',
                'client_id': "2",
                'client_secret' : 'fXz4bILqz5CnDjFCvXpw7RZWLgWXxsTa0LN1'
            }

在这样的客户端保存秘密有多聪明或危险?现在每个人都可以看到它,他们能以某种方式使用它吗?如果它危险或者不推荐它是怎么做的呢?如果您没有从客户端发送oauth client_secret,那么您在哪里保留它?

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

laravel api oauth vuejs2 laravel-passport
1个回答
1
投票

这是个坏主意,你永远不应该在客户端有client_secret,

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

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

© www.soinside.com 2019 - 2024. All rights reserved.