Токен доступа и хранилище токенов идентификатора для бессерверного приложения

Я пишу бессерверное приложение с AWS (Lambda, API Gateway, Cognito и т. Д.), И мне интересно, как лучше всего защитить свой стек.

Я читал, что для приложений, использующих сервер, EC2 или иное, лучше всего хранить токены идентификатора пользователя на бэкэнде. Это имеет смысл, поскольку процесс узла предоставит мне долгосрочное решение для зависания и повторного использования токенов идентификатора. С другой стороны, бессерверное приложение не предоставляет такой роскоши. Я подумал о том, чтобы оставить его на переднем плане, поскольку, в конце концов, токены JWT, предоставляемые когнито, подписаны и, следовательно, должны быть защищены от несанкционированного доступа, но с моей стороны это кажется немного тревожным. Я бы предпочел систему, в которой пользователи не имеют прямого доступа к своим собственным токенам. Я также думал о том, чтобы просто запрашивать новый токен для каждого запроса, отправленного в Lambda, но это тоже кажется далеко не идеальным решением.

Есть ли какие-то общепринятые передовые практики в отношении бессерверной аутентификации и авторизации? На правильном ли я пути, просто храню свои токены на стороне клиента, пока у пользователя открыто приложение?


person Carl    schedule 08.05.2019    source источник


Ответы (1)


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

Например, ниже приведены заголовки запроса. В авторизации хранится токен jwt, который можно декодировать в https://jwt.io/, но его нельзя изменить. ,

Host: aa.aa.aa
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer: token234567890-eddedede
X-Requested-With: XMLHttpRequest
Connection: keep-alive

Кроме того, рекомендуется истекать годовые токены и продлевать их через определенные промежутки времени.

person Spiff    schedule 08.05.2019
comment
Это было мое предположение. Я сделаю это. - person Carl; 08.05.2019