2015-09-28 6 views
1

Что я пытаюсь сделать?
Я пытаюсь построить api для онлайн-бронирования, так что другое туристическое агентство может использовать этот api. Он выполняет функцию поиска полету, показывает результат поиска, заказывает рейс и онлайн-платеж. Поэтому для авторизации я планирую использовать oAuth. Когда пользователь посещает сайт туристического агентства, он может искать, забронировать рейс и оплатить. Здесь им не нужно проходить аутентификацию для поиска рейса и бронирования, но оплата производится с использованием третьей стороны. То, что я пытаюсь сделать, это то, что, когда пользователь использует api, им не нужна аутентификация, но мы должны разрешить, что пользователь находится на действующем сайте или нет, поэтому я использую oauth grant type client credentialsLaravel 5.1: как использовать oauth2-server-laravel?

Что я сделал?
Я пытаюсь использовать пакет laravel lucadegasperi/oauth2-server-laravel для oauth. Я успешно установил пакет в свой проект и выполнил конфигурацию в соответствии с информацией, приведенной здесь https://github.com/lucadegasperi/oauth2-server-laravel/wiki. Я проверил, чтобы получить токен доступа, используя расширение chrome postman. enter image description here

О чем я смущен?
Если я разделяю client_id и client_secret на стороне клиента, тогда любой другой пользователь может использовать этот идентификатор клиента и секрет клиента и использовать наш api. Как я могу создать маркер доступа после того, как пользователя представить кнопку поиска и использовал этот маркер для другого процесса, как показывает результат поиска, бронирование и т.д.

Итак, мой вопрос является

  1. Пользуется ли я право тип гранта для авторизации? Если нет, то подходящий для этого будет ?

  2. Как я могу использовать client_id и client_secret, чтобы мы могли надежно разрешить сайт?

ответ

0

Вы можете написать приложение Wrapper, которая будет содержать CLIENT_ID, client_secret. и ваше приложение-оболочка также будет управлять токеном доступа.

Идея:

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

Если токен не существует в кеше, то приложение Wrapper сделает запрос маркера на основе Client_id и Client Secret и получит токен и сохраняет токен для следующего вызова.

Таким образом, ваше приложение не публикует ваши учетные данные & токен публично.

Смежные вопросы