Опасно ли помещать client_secret на стороне клиента? - PullRequest
0 голосов
/ 05 марта 2019

Я хочу создать систему аутентификации с laravel, passport и vue js.Какой лучший выбор

1 - laravel

public function login(Request $request)
{
$http = new GuzzleHttp\Client;
$response = $http->post('http://your-app.com/oauth/token', [
    'form_params' => [
        'grant_type' => 'password',
        'client_id' => 'client-id',
        'client_secret' => 'client-secret',
        'username' => $request->username,
        'password' => $request->password,
        'scope' => '',
    ],
]);

return json_decode((string) $response->getBody(), true);
}

1 - vuejs

    axios.post('/login', {
                    'username': 'xxxxxx',
                    'password':'xxxxxxxxx'
                })
                    .then(response => {
                 //login
                    }).catch(error => {
                   //error
                })

2-vuejs

    axios.post('/oauth/token', {
                    'username': 'xxxxxx',
                    'password':'xxxxxxxxx',
                    'grant_type' => 'password',
                     'client_id' => 'client-id',
                     'client_secret' => 'client-secret',

                })
                    .then(response => {
                 //login
                    }).catch(error => {
                   //error
                })

в растворе 2Опасно ли помещать client_secret на стороне клиента?

Ответы [ 4 ]

0 голосов
/ 06 марта 2019

Я бы предложил вам использовать решение 1. Оно защищает вашу службу OAuth, оставляя ее скрытой и недоступной для повторного использования.Кроме того, вы должны реализовать механизм обновления токенов.

0 голосов
/ 06 марта 2019

Я бы предпочел Решение 1. В решении 2 каждый может прочитать client_secret и притвориться клиентом.

0 голосов
/ 06 марта 2019

Я бы предложил вариант 3: с использованием паспортов, встроенных в JS-аутентификацию .

Вы проходите аутентификацию с использованием стандартного потока аутентификации, поставляемого с Laravel.Затем добавьте промежуточное ПО \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class на маршруты, обслуживающие VueJS.Убедитесь, что ваш axios настроен на включение токена CSRF по умолчанию.Если вы используете app.js, который поставляется с laravel, то это уже сделано для вас.Затем вы можете сделать ваши запросы Axios как обычно.(не забудьте включить токен CSRF. Th.

0 голосов
/ 05 марта 2019

Совсем нет. Сохраните его в файле .env и обязательно поместите в свой .gitignore

...