2016-12-14 9 views
1

Я использую Oauth2 для защиты моего веб-API. Моя проблема:В то же время доступно только 1 токен доступа из 1 учетной записи пользователя - веб-API (OAuth2)

Пользователь «A» с учетной записью «A» имеет доступ к токену доступа «A». Пользовательский логин «B» с учетной записью «A», маркер доступа «B» предоставляется. Затем оба токена доступа «A», «B» могут получить доступ к моим ресурсам (та же учетная запись «A»).

Как изменить это поведение, так что, когда пользователь «B» входит в систему, предоставляется токен доступа B, и токен доступа «A» истек.

спасибо.

ответ

0

Поведение --- выдача нового токена доступа делает недействительными существующие токены доступа или нет - зависит от реализации сервера OAuth 2.0. Спецификация OAuth 2.0 (RFC 6749) не налагает никаких ограничений на поведение.

Фактически, определенная реализация сервера OAuth 2.0 обеспечивает функцию, позволяющую администраторам сервера настраивать поведение. См. this answer.

+0

Спасибо, так как я могу настроить сервер OAuth 2.0, например: «Той токен на предмет»? –

+0

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

0

Это не будет легко, если вы не захотите изменить свой веб-API, чтобы перезвонить на сервер авторизации и проверить, отменен ли токен. Также вам нужно будет изменить ваш сервер авторизации для отмены токенов на основе ваших конкретных правил.

Это противоречит текстуре Oauth2.0, поскольку сервер ресурсов (ваш веб-api) не должен выполнять обратные вызовы на сервере auth, если у него есть действительный токен (т.е. подписан правильно, а не истек и с правильными областями).

Я бы предположил, что Oauth2.0 не может быть лучшим решением в этом случае.

+0

Спасибо за помощь, @ iandayman. –

+0

О, RFC 7662 (OAuth 2.0 Token Introspection) - это спецификация, определяющая API, с которой сервер ресурсов получает информацию о токен доступа с сервера авторизации, который выдал токен доступа. Предполагается, что API интроспекции будет вызван из реализаций веб-API сервера ресурсов. –