Я создал центральное приложение (давайте назовем это maindomain.com
), где я настроил паспорт. На этом сайте пользователи будут регистрироваться, чтобы получить доступ ко всем другим приложениям, которые я создаю.
Чтобы проверить это, я следовал Сообщение в блоге Мэтта Штауффера создать клиентское приложение, которое будет использовать пользовательские данные, хранящиеся на maindomain.com
давайте назовем это app1.com
,
Я могу подтвердить, что мой обратный вызов и еще много чего работает. Когда вы идете в app1.com/login
(согласно моему маршруту) он перенаправляет на maindomain.com
и позволяет авторизовать app1.com
использовать ваши данные для входа — красиво.
Согласно посту Мэтта, сейчас он выводит токен на экран. Мне нужно изменить это так, чтобы оно сохранялось в базе данных — я полагаю, мне нужно просто создать столбец в таблице моего пользователя и сохранить его там?
Я протестировал токен и могу получить доступ к маршрутам API с помощью Postman. Однако, поскольку в данный момент я создаю веб-приложения, которым всем необходимо использовать эту централизованную пользовательскую систему, я не уверен, как я могу использовать форму входа для авторизации пользователей и предоставления им доступа к их панели управления.
Если пользователь входит в app1.com
отправить запрос POST maindomain.com
? Разве это не будет проблемой с CSRF? Я прочитал документацию, но так как это мое первое предприятие в Oauth2
Я довольно смущен.
Если вы хотите, чтобы ваша форма для входа находилась на app1.com, ваш единственный выбор — поток предоставления пароля — app1.com получит учетные данные пользователя и сделает запрос POST к oauth / tokens на maindomain.com, пытаясь получить токен доступа. Этот POST-запрос может происходить во внешнем или внутреннем (более безопасный — пароль клиента будет скрыт), это ваше дело.
В противном случае, похоже, что ваш код авторизации уже запущен и работает. Вы можете просто продолжать перенаправлять пользователей на maindomain.com (Facebook и большинство других поставщиков OAuth2 выбирают этот путь), используя форму входа там, а затем перенаправить обратно и получить токен доступа на основе кода авторизации. Сохраните этот код в своей базе данных app1.com и разрешите пользователям получать доступ к панели инструментов, используя это. Когда он истекает — запустите поток снова.
Попробуйте посмотреть это видео от Тейлора (создателя 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 🙂