Реализация токена OAuth 2 Refresh - PullRequest
       19

Реализация токена OAuth 2 Refresh

0 голосов
/ 30 октября 2018

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

Моя основная проблема заключается в том, что если я получаю токен обновления от какого-либо поставщика OAuth (в данном случае Google), у меня есть две проблемы, которые я не знаю, как решить:

  1. Как безопасно сохранить токен обновления, чтобы его можно было использовать для получения новых токенов, чтобы пользователь оставался в системе?
  2. Как определить, кто пользователь, которому нужен токен обновления? Я не могу просто иметь конечную точку, которая использует старые токены или адреса электронной почты для выдачи обновленного токена, потому что это кажется невероятно глупым.

Быстрое изображение с подробным описанием потока, о котором я говорю


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

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

Я обеспокоен передовой практикой, поэтому, если вся моя реализация имеет недостатки, и я должен делать X вместо Y или Z, тогда я тоже открыт для предложений.

Спасибо за ваше время,

Ses

1 Ответ

0 голосов
/ 30 октября 2018

Как безопасно сохранить токен обновления, чтобы его можно было использовать для получения новых токенов, чтобы пользователь оставался в системе?

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

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

Я думаю, вы путаете аутентификацию с авторизацией.

Oauth2 предоставляет вашему приложению authorization доступ к данным пользователей. Когда вы используете токен обновления, аутентификация не задействована, и нет способа узнать, кто выполняет действие. Oauth2 никоим образом не authenticate указывает, что пользователь предварительно выполняет действие, oauth2 - это ваше приложение, которое выполняет действие от имени пользователя с помощью authorization. Это не гарантирует, что пользователь присутствует, когда действие выполнено.

Для этого вам нужно будет использовать Openid connect и использовать токен id для идентификации пользователя, который использует ваше приложение.

...