Что вернуть после входа в систему через API? - PullRequest
0 голосов
/ 09 мая 2019

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

Мой вопрос заключается в том, должен ли ответ API входа возвращать личный токен доступа с токеном обновления вместе с информацией о пользователе? Или я должен просто вернуть токен и сделать еще один вызов API для получения информации о пользователе.

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

Мне нужны предложения, а также хорошие ссылки, связанные с моим вопросом.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 09 мая 2019

Это зависит от того, что вы используете для аутентификации. Если вы используете такие библиотеки, как Laravel Passport или JWT , вы можете иметь конечную точку токена, которая возвращает токен доступа, токен обновления, период действия и тип токена (Bearer). Затем вы можете иметь аутентифицированную конечную точку, которая будет использоваться для получения профиля пользователя на основе токена, переданного в заголовке запроса.

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

Если вы используете JWT, вы также можете встроить несколько пользовательских свойств в сам токен. Клиент может получить информацию о профиле от самого JWT без необходимости совершать поездку в оба конца на сервер. Профиль паспорта ADD для JWT

Если у вас есть собственный способ обработки аутентификации, вы можете передать токен и профиль пользователя в том же ответе.

В конце концов, вам решать, что вам больше подходит.

1 голос
/ 10 мая 2019

Вы смотрели на OpenID Connect? Это еще один уровень поверх OAuth 2.0, обеспечивающий аутентификацию пользователя (OAuth 2.0 не охватывает аутентификацию, а только предполагает, что это происходит) и способы поиска информации о текущем пользователе. Он имеет концепцию ID_token, в дополнение к токену доступа OAuth, а также предоставляет конечную точку / userinfo для получения информации о пользователе. Вы могли бы поместить информацию о пользователе в свой токен доступа, но рекомендуется не допускать, чтобы ваш токен доступа был доступен из JavaScript (т. Е. Использовать куки HTTP_ONLY для хранения вашего токена доступа).

...