2014-10-25 5 views
1

Flask-Security docs упоминает поддержку JSON/Ajax для всех важных конечных точек просмотра. Таким образом, вы можете получить всю удивительную функциональность «Колбак-Безопасность», нажав на объекты с объектами JSON.Использование Flask-Security как часть REST API

Но, теперь я пытаюсь использовать его как часть RESTful API, и это не работает, потому что он нужен маркер CSRF, который необходим для веб-страниц, но не для API:

{ 
    "meta": { 
     "code": 400 
    }, 
    "response": { 
     "errors": { 
      "csrf_token": [ 
       "CSRF token missing" 
      ] 
     } 
    } 
} 

Каков наилучший способ обойти это?

ответ

0

Хорошо, понял. Все это нуждается в переменной конфигурации Настой должен быть установлен для приложения:

WTF_CSRF_ENABLED = False 
+0

Как это влияет на основное приложение? Уменьшает ли безопасность сайт? –

5

При использовании REST API, предпочитаемый метод проверки подлинности на основе маркеров с чем-то, как JSON веб-токена (JWT). Эта схема имеет другой ландшафт безопасности, поскольку вы не создаете HTML на стороне сервера или не используете файлы cookie. Я не эксперт по вопросам безопасности, но из того, что я прочитал, это означает, что вы не подвержены подделке запросов на межсайтовый запрос (CSRF). Вот почему выключение токенов CSRF в Flask-Security в порядке.

Попробуйте использовать схему аутентификации на основе токена PyJWT. Чтобы получить токен, вы отправляете учетные данные в конечную точку «login» и получаете ответ в ответ. Затем вам нужно будет отправить токен с каждым запросом через HTTP-заголовки. Вы можете часто устанавливать это глобально на стороне JS.

Вот несколько ссылок:

примечание: Кажется, что колба-JWT использует питона itsdangerous библиотеку, которая не была обновлена ​​в некоторое время. Здесь обсуждается: https://github.com/mattupstate/flask-jwt/issues/10 Опять же, я не эксперт по безопасности, и обе библиотеки, по-видимому, обрабатывают кодирование/декодирование по умолчанию одним и тем же алгоритмом. PyJWT и Python-Jose перечислены на jwt.io и имеют расширенную функциональность.

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