Обновить

Комментарии 6

Мощный разбор. Я правильно понимаю, что это основано на личном опыте в проде?

Да, основано на личном опыте в проде. Но, естественно, это лишь часть, которая относится непосредственно к Spring Authorization Server

curl --location --request POST 'http://localhost:9091/oauth2/token?grant_type=authorization_code&code=M6MsgrcmEa6eKlslkgDoS3mEOSuNoN827eLFUu6-k2Vi1v-xW17it7ojPC6QXbnjVsvCVCvfkIWNRq8kmMZBcPcre2R2N9AvNSxwLCMIiO0q4SRjWcoYrOFztvputvxS&redirect_uri=http://localhost:8080/code' \--header 'Authorization: Basic dGVzdC1jbGllbnQ6dGVzdC1jbGllbnQ='

Обратите внимание, что в последнем запросе у нас обязательно должен быть заголовок Authorization с типом Basic, в котором находится base64 строка следующего вида: test-client:test-client. Это наши clientId и clientSecret, которые мы указывали при создании RegisteredClient.

Я понимаю, что вот этот момент - это костыль? Это не относится к authorization code flow. У вас разрешена CLIENT_CREDENTIALS авторизация и вы её используете, чтоб получить refresh_token. В public клиентах, refresh token не возращается по-умолчанию.

Не совсем так. Да, у нас разрешена авторизация по CLIENT_CREDENTIALS, но в данном месте мы получаем именно пару access и refresh токенов по Authorization Code Flow. Аутентификация клиента необходима, так как у нас непубличные клиенты. Для получения токена по Client Credentials Flow указывается grant_type=client_credentials

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Информация

Сайт
ntik.ru
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия