Laravel Passport: 401 Не аутентифицирован, но ключи шифрования те же - PullRequest
0 голосов
/ 21 сентября 2018

У меня странная проблема с аутентификацией Passport при развертывании моего приложения на новом сайте, несмотря на то, что у меня не было проблем с этим раньше.

Я использую функцию предоставления пароля в Passportвойти в приложение (Laravel 5.4).Это происходит, когда пользователь публикует свое имя пользователя / пароль как JSON на сайте, и оттуда он отправляет эти учетные данные в OAuth / token, чтобы получить ключ API для сайта.В прошлом это работало нормально, и мои ключи OAuth переданы в хранилище.

На днях мне удалось развернуть сайт на новом сервере (с теми же ключами OAuth), восстановленном (я думаю)ключ приложения, загрузил мои данные, которые имеют зашифрованные пароли, и аутентификация работала нормально.Сегодня, однако, я сделал то же самое в другой ветви, и теперь вход в систему возвращает 401 Unauthorized.

Я сделал почти каждую перестановку, о которой мог подумать: удалить ключи OAuth, восстановить ключ приложения, переустановить паспорти все же приложение отказывается входить в систему. Я не верю, что оно имеет какое-либо отношение к исходному коду, потому что никакие изменения, внесенные в эту ветку, не повлияют на систему входа в систему.

Я даже пытался скопировать рабочуюКлюч приложения сайта и ключи OAuth для сломанного сайта все еще не работают.

Что делает меня еще более загадочным, так это то, что у меня есть другой сайт с другим ключом приложения, разные ключи OAuth, но те же данные, и система входа в систему работает нормально.

Я не достаточно разбираюсь в пакете league / oauth2, чтобы понять, почему это не работает.Что мне не хватает?

Спасибо, Мэтт

1 Ответ

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

Ну, плохой код не платит.

Что я не упомянул, так это то, что сайт, который я пытаюсь развернуть, является попыткой перенести домен на новый сервер.И сломанный сайт, и его активный дочерний сайт имеют одинаковое доменное имя.Это код, который отправляет на мои собственные домены /oauth/token конечная точка:

$username = Input::json('username');
$password = Input::json('password');

$page = Input::get('page');

$client = Client::find(2);

$http = new GuzzleHttp\Client();

try {
    $response = $http->post(url('oauth/token'), [   # <-- see the problem?
        'form_params' => [
            'grant_type'    => 'password',
            'client_id'     => '2',
            'client_secret' => $client->secret,
            'username'      => $username,
            'password'      => $password,
            'scope'         => '',
        ],
    ]);

#...

Проблема довольно смешная.Поскольку DNS еще не переключился на сайт, запросы на мой собственный сайт направляются на старый сайт, а не на этот .Следовательно я возвращаюсь Unauthenticated.Потому что я нет.

Решением было отредактировать файл /etc/hosts на сервере, чтобы он указывал на домен.Таким образом, любые вызовы к своему собственному API на самом деле будут иметь свои собственные API.Задача решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...