Spring Security 5.3.2 OAuth 2, поток учетных данных пароля владельца ресурса — как добавить дополнительные параметры ЗАГJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Security 5.3.2 OAuth 2, поток учетных данных пароля владельца ресурса — как добавить дополнительные параметры ЗАГ

Сообщение Anonymous »

Я пытаюсь создать токен доступа на специальном корпоративном сервере авторизации oauth 2 с помощью потока учетных данных пароля владельца ресурса.
См. https://www.rfc-editor.org /rfc/rfc6749#section-4.3
Этот сервер генерирует токен доступа только в том случае, если получает следующие параметры:

Код: Выделить всё

POST https://custom_corporate_server/auth/oauth/v2/token

Header
idp: 99

Body
grant_type: password
scope: my_scope
client_id: 00******-****-****-****-**********99
client_secret: 00******-****-****-****-**********99
username: my_user
password: my_password
Их конфигурация требует дополнительного специального параметра заголовка: idp — должно быть числовым.
Я использую Spring Boot 2.3.0 и Spring Security 5.3. .2.
Я перешел по ссылке ниже, чтобы создать свой тестовый пример:
https://docs.spring.io/spring-security/ ... ss-token-2

Код: Выделить всё

@Bean
public OAuth2AuthorizedClientManager authorizedClientManager(
ClientRegistrationRepository clientRegistrationRepository,
OAuth2AuthorizedClientRepository authorizedClientRepository) {

OAuth2AuthorizedClientProvider authorizedClientProvider =
OAuth2AuthorizedClientProviderBuilder.builder()
.password()
.refreshToken()
.build();

DefaultOAuth2AuthorizedClientManager authorizedClientManager =
new DefaultOAuth2AuthorizedClientManager(
clientRegistrationRepository, authorizedClientRepository);
authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);

// Assuming the `username` and `password` are supplied as `HttpServletRequest` parameters,
// map the `HttpServletRequest` parameters to `OAuth2AuthorizationContext.getAttributes()`
authorizedClientManager.setContextAttributesMapper(contextAttributesMapper());

return authorizedClientManager;
}

private Function contextAttributesMapper() {
return authorizeRequest -> {
Map contextAttributes = Collections.emptyMap();
HttpServletRequest servletRequest = authorizeRequest.getAttribute(HttpServletRequest.class.getName());
String username = servletRequest.getParameter(OAuth2ParameterNames.USERNAME);
String password = servletRequest.getParameter(OAuth2ParameterNames.PASSWORD);
if (StringUtils.hasText(username) && StringUtils.hasText(password)) {
contextAttributes = new HashMap();

// `PasswordOAuth2AuthorizedClientProvider` requires both attributes
contextAttributes.put(OAuth2AuthorizationContext.USERNAME_ATTRIBUTE_NAME, username);
contextAttributes.put(OAuth2AuthorizationContext.PASSWORD_ATTRIBUTE_NAME, password);
}
return contextAttributes;
};
}
Мне не удалось передать этот параметр в заголовке на сервер авторизации. Как это сделать – моя главная дилемма сегодня.

Подробнее здесь: https://stackoverflow.com/questions/618 ... low-how-to
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»