2015-06-29 3 views
6

Это моя установка:магазин JWT лексема печенья

  • 1 сервер аутентификации, который выдает JWT маркер на преуспевающим аутентификации.
  • Несколько серверов ресурсов API, которые предоставляют информацию (когда пользователь аутентифицирован).

Теперь я хочу создать свой внешний интерфейс ASP.NET MVC. Можно ли взять маркер, который я получаю после аутентификации, и поместить его в файл cookie, чтобы я мог получить доступ к нему с помощью любого защищенного вызова, который мне нужно сделать? Я использую DLL RestSharp для выполнения своих HTTP-вызовов. Если у него есть недостаток безопасности, тогда где я должен хранить свой токен?

Я хотел бы использовать этот код для печенья:

  System.Web.HttpContext.Current.Response.Cookies.Add(new System.Web.HttpCookie("Token") 
     { 
      Value = token.access_token, 
      HttpOnly = true 
     }); 
+0

убедитесь, что это также HTTPS, только добавив флаг безопасности! – Tilo

+0

[Ответ] (http://stackoverflow.com/a/40376819/204699) на соответствующий вопрос о том, где хранить токен в приложениях браузера, может содержать полезную дополнительную информацию. –

ответ

8

Вы на правильном пути! Файл cookie должен всегда иметь флаг HttpOnly, установка этого флага предотвратит доступ к среде JavaScript (в веб-браузере) к файлу cookie. Это лучший способ предотвратить атаки XSS в браузере.

Вы также должны использовать флаг Secure, чтобы гарантировать, что cookie отправляется только через HTTPS.

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

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

Token Based Authentication for Single Page Apps (SPAs)

https://stormpath.com/blog/build-secure-user-interfaces-using-jwts/

+0

Прохладный за информацию! – Kaizer

+2

Спасибо за информацию. Любой план написать что-то о интеграции .NET Identity 2.0? –

+0

@andrea: Это последнее продолжение, но я только что написал статью об ASP.NET + Stormpath: https://stormpath.com/blog/10-minute-asp-net-user-authentication –

0

Вы генерации собственных JWTs?

Если да, то следует использовать алгоритм подписи на основе асимметричного шифрования, например «RS256» или «RS512». Таким образом, вы можете проверить претензии в своем клиентском приложении, не разделяя секретный секрет.

Вам действительно нужно передать JWT в Cookie?

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

+0

вы могли бы предоставить некоторые код, как вы храните jwt в cookie, пожалуйста? Предположим, что 'string token = YOUR_TOKEN', и вы кодируете в стартовом классе – sepehr

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