Ответы пользователя по тегу JSON Web Token
  • Как исправить данную ошибку при настройке auth0?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    Честно говоря, по этой ошибке вообще сложно сказать, что произошло.
    Могу порекомендовать проверить ключи и вообще, загружаются ли они. Потом, если есть возможность, попробовать этот токен расшифровать на официальном сайте jwt, там есть возможность. Если все ок - проблема в конфигурации, как бы банально это не звучало.
    Ответ написан
  • Что делать с токеном при авторизации в мобильном приложении?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    Надо отдавать JWT-токен. У него есть такое понятие, как время жизни - после истечения которого токен перестанет быть валидным. Это правильно с точки зрения безопасности.

    Как это можно решить. Для этого можно использовать такое понятие как refresh token. Т.е. отдаете совместно с JWT еще и Refresh Token, ассоциированный с JWT (к примеру, сохраненный в БД). По данному refresh token-у можно перезапросить новый токен для данного пользователя и спокойно работать дальше.
    Ответ написан
  • Как в Symfony отключить создание session при вызове api методов?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    Вообще, все API методы должны иметь свой файрвол безопасности, к примеру через тот же JWT.
    У LexikJWTAuthenticationBundle в конфигурации хорошо это показано.

    security:
    
        # ***
        
        firewalls:
        # ***
            refresh:
                pattern:  ^/api/v1/token/refresh
                stateless: true
                anonymous: true
        # ***
            api:
                pattern:   ^/api
                stateless: true
                guard:
                    authenticators:
                        - lexik_jwt_authentication.jwt_token_authenticator


    Так же, важен порядок следования файрволов, API у меня идет выше основного.
    Ответ написан
  • Как выполнить проверку против определенного значения payload в express-jwt?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    var jwt = require('express-jwt');
    
    app.get('/protected',
      jwt({secret: 'shhhhhhared-secret'}),
      function(req, res) {
        if (!req.user.admin) return res.sendStatus(401);
        res.sendStatus(200);
      });


    Если я правильно понял, jwt({secret: 'shhhhhhared-secret'}), говорит нам о том, что при доступе к '/protect' нужно применить middleware jwt с настройками {secret: 'shhhhhhared-secret'} и расшифровать HMAC-токен с использованием секретной фразы 'shhhhhhared-secret', потом пихнуть полученную учетку в запрос.

    Внутри же
    function(req, res) {
        if (!req.user.admin) return res.sendStatus(401);
        res.sendStatus(200);
      }
    вы получаете req и пользователя, и проверяете уже доступ на основание данных учетки.
    Ответ написан
  • Как сервер авторизации JWT и API сервер проводят валидацию токена?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    Вообще, второе приложение (API) должно уметь по данному токену получать пользователя.
    По сути, JWT-токен состоит из трех частей:
    • Заголовок с алгоритмом
    • Тело
    • Подпись


    В теле, обычно лежит информация вида:
    1. Когда выдан
    2. Срок действия
    3. Кто выдал
    4. Публичные метки (роли, идентификатор пользователя и т.п.)


    API декодирует токен, в зависимости от алгоритма (может быть понадобится p12 - сертификат, все зависит от настроек) и на основание этой информации получает пользователя. Как только у вас истекает время жизни токена, приложение бросает 401 и вам нужно заново получить токен.

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

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

    Важно понимать, что использует клиент в качестве библиотеки для JWT-аутентификации (а API - это клиент), как она (библиотека) может работать.
    Ответ написан