Нужно ли помещать оригинальные учетные данные в UsernamePasswordAuthenticationToken после успешной аутентификации в AuthenticationProvider? - PullRequest
1 голос
/ 27 мая 2019

Я получаю уже подтвержденный идентификатор пользователя на входе.Я решил написать свою реализацию Authentication для входящего идентификатора - VkIdAuthentication.И реализация AuthenticationProvider, которая получает VkIdAuthentication, затем находит UserDetails и возвращает UsernamePasswordAuthenticationToken.

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

Один комментарий в AbstractUserDetailsAuthenticationProvider смущает меня:

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

1 Ответ

4 голосов
/ 27 мая 2019

Из следующего комментария, найденного на this :

В более широком смысле: возможно, существуют поставщики аутентификации, которым требуются учетные данные даже после аутентификации сеанса, или, возможно, существуютдругие случаи использования, где наличие учетных данных необходимо для какой-то другой цели, но (с моей наивной точки зрения) кажется, что учетные данные пользователя никогда не нужны после успешного завершения аутентификации, поэтому, возможно, все менеджеры аутентификации должны удалить учетные данные из экземпляров аутентификации, независимо оттип используемого токена / провайдера?

И из того, что я вижу в текущих исходных кодах , поведение по умолчанию таково, что даже вы возвращаете UsernamePasswordAuthenticationToken из AbstractUserDetailsAuthenticationProviderзатем он очень скоро вызовет UsernamePasswordAuthenticationToken#eraseCredentials(), чтобы снова установить для учетных данных значение NULL.

Поэтому я бы сказал, что довольно безопасно возвращать аутентификацию с учетными данными NULL, если вам не требуется использовать учетные данные пользователя после успешной аутентификации.

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