Сохранить / проверить токен JWT, сохраненный в HttpOnly cook ie in. net core api - PullRequest
0 голосов
/ 25 апреля 2020

Я добавил аутентификацию на основе jwt в свой API, работает с добавлением токена в заголовок (Авторизация: Bearer {tokenhere}).

Я посмотрел, как хранить его на стороне клиента, и самым рекомендуемым способом было использование HttpOnly cook ie, который установлен на сервере, поэтому клиентский код не может получить к нему доступ. Браузер получит его и присоединит к будущим запросам.

Чтобы это работало, сервер должен записать этот ответ ie в ответ и иметь возможность проверить его вместо токена в заголовке. (Авторизация: Bearer {tokenhere}).

Как мне это настроить? Я искал как и низко, и не нашел учебника по этому вопросу, это либо cook ie, либо jwt, никогда jwt не сохранялся как httponly cook ie.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Я нашел 2 ответа, либо:

- поймать запрос и переместить токен от повара ie в заголовок как носитель аутентификации, поэтому, когда он доберется до обработки jwt auth, он получит его вот так ( Как правильно обновить sh токен с помощью JWT + HttpOnly Cook ie? )

- переопределить событие обработчика jwt и перезаписать токен, считывающий его из файла cookie ( In ASP. NET Ядро считывает токен JWT из Cook ie вместо заголовков )

запись его в Cook ie не составляет большого труда, в методе входа в систему Я просто делаю это:

HttpContext.Response.Cookies.Append("access_token", tokens.AccessToken, new CookieOptions { HttpOnly = true });
0 голосов
/ 25 апреля 2020

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...