Spring Security OAuth2 хранит access_token в cookie - PullRequest
0 голосов
/ 08 января 2019

Я использую Spring Security + Angular. Когда я отправляю запрос на /oauth/token и получаю токен:

{
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDY5NDQwODYsInVzZXJfbmFtZSI6ImFkbWluIiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9BRE1JTiJdLCJqdGkiOiI4M2VhMTA1MC05NjczLTRlZGItOTlmMS0yNWIzOTQ1ODdjMmUiLCJjbGllbnRfaWQiOiJmcm9udGVuZCIsInNjb3BlIjpbInJlYWQiLCJ3cml0ZSJdfQ.i6v2G70eEgGUt_CdgctcTrGgz_RHs6OuEA8lGHOgVro",
    "token_type": "bearer",
    "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJhZG1pbiIsInNjb3BlIjpbInJlYWQiLCJ3cml0ZSJdLCJhdGkiOiI4M2VhMTA1MC05NjczLTRlZGItOTlmMS0yNWIzOTQ1ODdjMmUiLCJleHAiOjE1NDk1MzI0ODYsImF1dGhvcml0aWVzIjpbIlJPTEVfQURNSU4iXSwianRpIjoiNzQxMDA0NzUtODkxOC00YjM5LTk5NDMtNjAzMWIxMGVjNGQ3IiwiY2xpZW50X2lkIjoiZnJvbnRlbmQifQ.3QOdAL10lQsPSvsFfgyf02gvAanyJ-R1BX_wtF1APB0",
    "expires_in": 3599,
    "scope": "read write",
    "jti": "83ea1050-9673-4edb-99f1-25b394587c2e"
}

Как можно на стороне Spring Security указать установку куки и сохранить там токен? Или я должен сделать это на стороне Angular так:

Cookie.set("access_token", token.access_token, expireDate);

Что правильно делать? Мне кажется, что хранение токена в куки - это правильное и безопасное решение.

1 Ответ

0 голосов
/ 08 января 2019

Токены доступа предназначены для пользовательских агентов, которые выполняют остальные вызовы. Они могут безопасно хранить токены доступа (большинство делают это в памяти на защищенном сервере) и передавать этот токен при каждом вызове на сервер.

При этом ваше приложение не должно брать этот токен и отправлять его в браузер в виде файла cookie.

Если вы используете implicit_grant , то ваше приложение уже считается с меньшей безопасностью , поскольку для получения токена не требовалось никаких учетных данных клиента.

В этом случае я бы рекомендовал держать его в памяти в вашем приложении. Если приложение должно хранить его (чтобы пережить перезагрузки и т. Д.), Рассмотрите возможность использования локальное хранилище сеансов

В худшем случае локальное хранилище переживет закрытие браузера.

Но я не думаю, что вам здесь нужны куки. Поскольку токен передается в API с помощью заголовка авторизации с bearer prefix

Authorization: Bearer AbCdEf123456

Надеюсь, это поможет

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