2014-02-04 4 views
8

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

Теперь я хочу удалить эту учетную запись из своей системы, есть ли способ отменить токен аутентификации, который я дал клиенту?

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

+0

Смотрите также: https://groups.google.com/forum/#!searchin/firebase-talk/revoke/firebase-talk/Th0HZs_jBNc/QO8xjOOjoU4J – Kato

ответ

6

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

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

5

Firebase теперь предлагает возможность отменить обновленные жетоны, это совсем свежие - добавлено 04/01/2018. https://firebase.google.com/docs/auth/admin/manage-sessions#revoke_refresh_tokens

+0

Это пограничное [ссылка- только ответ] (// meta.stackexchange.com/q/8231). Вы должны расширить свой ответ, указав здесь как можно больше информации, и используйте ссылку только для справки. –

+0

Это очень новая функция, и я считаю, что большинство из нас неохотно предлагают примеры, прежде чем мы полностью их осуществим. Вот моя попытка: Отсюда: https://firebase.google.com/docs/auth/admin/manage-sessions#revoke_refresh_tokens Edit: я переверну это его собственный ответ, кажется, я не знаю, как помещать блоки кода в комментарии. – Levi

0

Добавление ответа @Alex Редвуд в

Это важная часть:

return admin.auth().revokeRefreshTokens(uid)` 
    .then(() => { 
     // Get user's tokensValidAfterTime. 
     Return admin.auth().getUser(uid); 
    }) 

пример в документации есть все виды детальными случаев, как писать метку времени в базу данных, чтобы предотвратить читается до тех пор, пока текущий токен не истечет, а также конкретные случаи реализации. Важной частью является то, что вы звоните revokeRefreshTokens(uid) по правильному адресу uid и убедитесь, что значение userRecord изменило значение userRecord.tokensValidAfterTime. Это не приведет к истечению активных токенов. Поэтому важно сократить время истечения срока действия, чтобы сократить окно атаки (лучшее решение, чем правило базы данных, которое проверяет метку времени на мой взгляд).

От: https://firebase.google.com/docs/auth/admin/manage-sessions#revoke_refresh_tokens

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