Я пытаюсь добраться до точки, где я могу динамически регистрировать новых клиентов для моего сервера Oauth. Проблема, которая у меня есть (или проблема, которую я пытаюсь понять), заключается в том, что изначально без использования кодировщика паролей клиентские секреты хранятся в БД в виде простого текста.
После поиска в поисках я обнаружил, что нужно установить PasswordEncoder, который будет обрабатывать кодирование / декодирование секрета клиента.
@Override
public void configure(ClientDetailsServiceConfigurer configurer) throws Exception {
configurer.jdbc(dataSource).passwordEncoder(getPasswordEncoder());
}
Теперь я действительно вижу, что закодированный секрет клиента хранится в БД. Проблема в том, что теперь, когда я запрашиваю токен из службы, я вынужден использовать закодированный секрет клиента, когда я запрашиваю новый токен (вместо использования простой текстовой версии)
curl -k -u 'TEST_USER:05a2fcc7-7759-4354-9366-a7c8cf650aae' http://localhost:8080/oauth/token -X POST -d 'response_type=token&client_id=TEST_USER&username=TEST_USERNAME&password=TEST_PASSWORD&scope=process&grant_type=password'
{"error" : "unauthorized", "error_description": "Для доступа к этому ресурсу требуется полная аутентификация"}
Если я использую закодированный секрет клиента, служба генерирует токен, как и положено. * То, чего я пытался добиться, - это зашифрованный в БД пароль и возможность использовать текстовую версию в запросе.
Что я пропускаю или делаю неправильно?