Ответы пользователя по тегу API
  • Как исправить ошибку авторизации Json rpc?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    один из моих методов обращается на этот адрес для добавления пользователей в систему

    А вы туда передаете свой токен, что передаете, когда обращаетесь на test.ru/api/jsonrpc?
    Судя по всему, не передаете.
    Перед обращением ко второму, нужно взять данный токен из заголовков запроса и передать его дальше, и так - для всех методов, требующих авторизации.
    Ответ написан
  • Как сделать api для микросервисов на php?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    Если сказать грубо, то API в общем понимание - это и есть набор микросервисов (далее МС).
    Т.е., скажем у нас есть API для получения списка пользователей, тогда, в терминах МС, у нас есть МС "Список пользователей", цель которого следует из названия. Общая концепция - иметь минимальное количество качественных действий. Отсюда и его преимущества и недостатки ( https://ru.wikipedia.org/wiki/Микросервисы ) .

    В целом по технологиям и стекам - вполне можно и на PHP, используя ту же Symfony/Silex/Slim/Equip и т.д. Тут, на чем удобно, то и используйте. Я вообще не слышал, чтобы разрабатывали конкретные решения под нужды МС.
    Если смотреть на Java, я видел не мало примеров на spring-boot, на .NET - .net core думаю будет идеален (asp.net core).

    В качестве протоколов обычно выбирается JSON, но никто не будет вас ругать, если вы будете использовать protobuf или вообще, что-то свое. У каждого свои нюансы, в общем.

    Говоря про общие моменты, обычно, рядом с МС всегда "употребляют" тот же Docker и автоматические средства развертывания. Т.е. по факту - МС, зачастую, цельный блок инфраструктуры, сразу же готовый для использования после автоматического развертывания.

    UPD. Еще, крайне важный момент для МС - это мониторинг работоспособности. Нельзя им пренебрегать. На хабрахабре была не так давно целая статья про мониторинг.

    UPD2. Шлюзом-аггрегатором может быть что угодно, более того, его может и не быть. Самый простой вариант шлюза - это NGINX, где можно сделать проксирование запросов, в зависимости от запрашиваемого URL.
    Ответ написан
  • Что делать с токеном при авторизации в мобильном приложении?

    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 у меня идет выше основного.
    Ответ написан
  • Как сервер авторизации JWT и API сервер проводят валидацию токена?

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


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


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

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

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

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

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    Можно. Из C#, через System.Management-классы. Работает медленно.

    https://stackoverflow.com/a/340611
    https://stackoverflow.com/questions/6944779/determ...
    https://stackoverflow.com/questions/5992099/c-shar...
    Ответ написан
    Комментировать