Могу ли я сохранить oauth client_secret на сервере вместо того, чтобы отправлять его из внешнего клиента, чтобы все могли его видеть?

Я создаю клиента, который будет использовать 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, задается вопросом, почему я упоминаю здесь провайдера, потому что я использую паспорт с несколькими авторизациями, поэтому я могу аутентифицировать разные типы пользователей с разными провайдерами. Но мой вопрос о безопасности хранения client_secret внутри javascript на веб-интерфейсе?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
528
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это плохая идея, у вас никогда не должно быть client_secret на стороне клиента,

Вариант 1:
Используйте неявное предоставление. Этот грант чаще всего используется для JavaScript или мобильных приложений, где учетные данные клиента не могут быть надежно сохранены.

Вариант 2:
Сделайте внутренний вызов auth / token из вашего контроллера входа. Что-то вроде реестра в этом решении здесь Итак, вы отправите имя пользователя / пароль своему контроллеру входа в систему, и контроллер входа сделает внутренний вызов для получения токена.

Другие вопросы по теме