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

Я создаю клиент, который будет использовать API.Используя Laravel и vuejs для этого.Backend - это его собственное приложение, а клиент frontend - это собственное приложение, которое будет работать на vuejs.

Прямо сейчас, когда я хочу войти в систему, пользователь должен отправить эти данные из клиента:

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

Насколько разумно или опасно хранить секрет в клиенте, как это?Теперь все это видят, могут ли они каким-то образом это использовать?И если это опасно или не рекомендуется, как все это делают?Если вы не отправляете oauth client_secret от клиента, то где вы его храните?

Кстати, если у кого-то есть опыт создания api: s, интересно, почему я упоминаю здесь свой провайдер, потому что я использую паспорт multi-auth, такЯ могу аутентифицировать пользователей разных типов с разными провайдерами.Но мой вопрос касается безопасности хранения client_secret внутри javascript на веб-интерфейсе?

1 Ответ

0 голосов
/ 14 сентября 2018

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

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

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

...