Является ли токен доступа к пледу секретом?

Документация API Plaid Link гласит, что результат успешной ссылки Plaid возвращает public_token со следующими свойствами:

Как только пользователь успешно загрузится через Plaid Link, модуль предоставит public_token. Это в отличие от типичных запросов API Plaid, которые возвращают access_token.

Безопасно выставить в приложении или браузере

Не может использоваться для непосредственного получения номеров счетов и маршрутизации (для аутентификации) или транзакций (для соединения)

Можно обменять на Plaid access_token через конечную точку /exchange_token.

Предположительно, это в отличие от access_token, что подразумевает, что access_token это секрет. Однако, насколько я могу судить, каждая конечная точка пледа, которая принимает access_token также требует идентификатор клиента и secret значение.

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

1 ответ

Ваше предположение верно, access_token должен храниться в секрете.

Единственная причина выставить access_token либо показывать эту информацию пользователю (нет причин делать это), либо предоставлять клиенту информацию, чтобы он мог отправить ее позже (например, с помощью токена OAuth для аутентификации).

Но если вы выставите access_tokenэто означает, что ваш API ожидает, что пользователь отправит свой собственный токен доступа при запросе информации. Ваш API доверяет этому пользовательскому вводу. Если пользователь получает доступ к другому пользователю access_tokenони могут отправить это в ваш API и получить доступ к учетной записи другого пользователя.

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

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

Для обеспечения максимальной безопасности ваших пользовательских данных, access_token никогда не следует давать конечному пользователю.

Другие вопросы по тегам