Laravel Passport — Как войти через веб-приложение?

Я создал центральное приложение (давайте назовем это maindomain.com), где я настроил паспорт. На этом сайте пользователи будут регистрироваться, чтобы получить доступ ко всем другим приложениям, которые я создаю.

Чтобы проверить это, я следовал Сообщение в блоге Мэтта Штауффера создать клиентское приложение, которое будет использовать пользовательские данные, хранящиеся на maindomain.comдавайте назовем это app1.com,

Я могу подтвердить, что мой обратный вызов и еще много чего работает. Когда вы идете в app1.com/login (согласно моему маршруту) он перенаправляет на maindomain.com и позволяет авторизовать app1.com использовать ваши данные для входа — красиво.

Согласно посту Мэтта, сейчас он выводит токен на экран. Мне нужно изменить это так, чтобы оно сохранялось в базе данных — я полагаю, мне нужно просто создать столбец в таблице моего пользователя и сохранить его там?

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

Если пользователь входит в app1.com отправить запрос POST maindomain.com? Разве это не будет проблемой с CSRF? Я прочитал документацию, но так как это мое первое предприятие в Oauth2 Я довольно смущен.

2

Решение

Если вы хотите, чтобы ваша форма для входа находилась на app1.com, ваш единственный выбор — поток предоставления пароля — app1.com получит учетные данные пользователя и сделает запрос POST к oauth / tokens на maindomain.com, пытаясь получить токен доступа. Этот POST-запрос может происходить во внешнем или внутреннем (более безопасный — пароль клиента будет скрыт), это ваше дело.

В противном случае, похоже, что ваш код авторизации уже запущен и работает. Вы можете просто продолжать перенаправлять пользователей на maindomain.com (Facebook и большинство других поставщиков OAuth2 выбирают этот путь), используя форму входа там, а затем перенаправить обратно и получить токен доступа на основе кода авторизации. Сохраните этот код в своей базе данных app1.com и разрешите пользователям получать доступ к панели инструментов, используя это. Когда он истекает — запустите поток снова.

1

Другие решения

Попробуйте посмотреть это видео от Тейлора (создателя Laravel), чтобы начать:

https://laracasts.com/series/whats-new-in-laravel-5-3/episodes/13

Я создал репозитории для обоих проектов и подтвердил их работоспособность:

API-сервер:
https://github.com/jeremykenedy/laravel-passport

Потребитель API:
https://github.com/jeremykenedy/laravel-consumer

Попробуйте сделать защищенные конечные точки API в файле маршрутизации. api.php и используйте области маркеров, если это необходимо для дополнительной защиты конечных точек API 🙂

0

По вопросам рекламы [email protected]