Как я должен хранить токен доступа из 3-й части API - PullRequest
0 голосов
/ 11 декабря 2018

Привет, я использую meteorjs и сторонний API для создания пользователей в сторонней базе данных.

Я получаю токены доступа с oauth2, и токены имеют срок действия 2 часа.После получения токена доступа с помощью асинхронной функции я использую его несколькими различными способами.

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

, что является лучшим способом для безопасного хранения и использованияэто глобально на сервере?

заранее большое спасибо

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

В итоге я использую глобальную переменную для хранения токена на сервере;

token = '';

Meteor.methods({
  refreshToken: function () {
    token = getToken();
  ...
});

и теперь

token

доступна для всех методов.и я также проверяю, является ли токен все еще действующим, и обновляю токен, если срок действия истекает в течение 300 секунд. И код для этой части выглядит следующим образом:

    const EXPIRATION_WINDOW_IN_SECONDS = 300;
    const expirationTimeInSeconds = token.expires_at.getTime() / 1000;
    const expirationWindowStart = expirationTimeInSeconds - EXPIRATION_WINDOW_IN_SECONDS;
    const nowInSeconds = (new Date()).getTime() / 1000;
    const shouldRefresh = nowInSeconds >= expirationWindowStart;
       if (shouldRefresh) {
           try {
               //refresh the token
           } catch (error) {
               console.log('Error refreshing access token: ', error.message);
           }
       }
0 голосов
/ 12 декабря 2018

RFC6819 - Модель угроз и соображения безопасности определяют несколько векторов угроз и измерений счетчиков.В этом разделе 5.3.3.Хранение секретов в безопасном хранилище определяет рекомендации по хранению секретов.

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

Учитывая, что вы используете интерфейс на основе JavaScriptВ приложении лучше всего хранить токен доступа в веб-хранилище HTML5 .

. Он позволяет получить доступ к токену в любое время, когда это требуется для вызовов API.Кроме того, если реализация браузера безопасна (например: - содержит все исправления безопасности и т. Д.), Это обеспечит безопасное хранилище, запрещающее доступ к другим приложениям.Также у вас есть возможность использовать sessionStorage , чтобы обеспечить дополнительную безопасность удаления маркера доступа при закрытии вкладки.

...