Spring okta oauth2 свойства с использованием Spring Cloud Vault

Мы используем okta для аутентификации в нашем загрузочном проекте Spring. Мы успешно выполнили аутентификацию с использованием Java-приложения как (см. - https://developer.okta.com/blog/2017/03/21/spring-boot-oauth).

Теперь я пытаюсь переместить okta clientId и секретное свойство в хранилище.

Бутстрап для хранилища

spring.cloud.vault:
хост: localhost
порт: 8200
схема: http
токен: 00000000-0000-0000-0000-000000000000

Теперь, пожалуйста, посмотрите на 2 ниже случая для свойств приложения

Случай 1: свойства, используемые с помощью @Value works

am.clientId = $ {account.clientId} am.issuer = $ {account.issuer}

используется в качестве

@Value("${am.clientId}")
private String clientId;
@Value("${am.issuer}")
private String clientSecret;

Случай 2: используется как свойства пружины, не работает, я использую те же свойства для весны oAuth, и это не удается

okta.oauth2.clientId = $ {account.clientId}

okta.oauth2.issuer = $ {account.issuer}

Журнал исключений

java.lang.IllegalArgumentException: не удалось разрешить заполнитель "account.clientId" в значении "${account.clientId}" account-web_1 | at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:172) ~[spring-core-5.0.5.RELEASE.jar!/:5.0.5.RELEASE] account-web_1 | at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:124) ~[spring-core-5.0.5.RELEASE.jar!/:5.0.5.RELEASE] account-web_1 | at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:237) ~[spring-core-5.0.5.RELEASE.jar!/:5.0.5.RELEASE] account-web_1 | в org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders (AbstractPropertyResolver.java:211) ~ [spring-core-5.0.5.RELEASE.jar! /: 5.0.5.RELEASE]

[Обновить]

Таким образом, отладив код Spring, я понял, что проблема только со свойством

okta.oauth2.issuer

У Github есть одна проблема, касающаяся того же самого, но у версии okta spring boot satarter 0.6.0 все еще есть проблема.

2 ответа

Вы пытались установить okta.oauth2.* свойства в вашем провайдере конфигурации облака? Я обычно тестирую Cloud Config, используя файловое хранилище, но с точки зрения клиента оно должно быть таким же. (Я знаю, что это не полностью отвечает на ваш вопрос, но просто хочу убедиться, что это работает, прежде чем продолжить)

Так что у меня есть одно решение для этого. Создал bean-компонент "oktaOAuth2Properties", чтобы переопределить bean-компонент по умолчанию для весенней загрузки и получить значение из хранилища с помощью аннотации @Value. код выглядит как ниже. Это работает для меня

@Value("${okta.clientId}") private String clientId;

@Value("${okta.issuer}")
private String issuer;

@Bean
public OktaOAuth2Properties oktaOAuth2Properties() {
    OktaOAuth2Properties properties = new OktaOAuth2Properties();
    properties.setClientId(clientId);
    properties.setIssuer(issuer);
    return properties;
}
Другие вопросы по тегам