Spring okta oauth2 свойства с использованием Spring Cloud Vault - PullRequest
0 голосов
/ 10 декабря 2018

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

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

Bootstrap для хранилища

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

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

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

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

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

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

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

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

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

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

java.lang.IllegalArgumentException: Не удалось разрешить pдержатель кружка '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]

[Обновление]

Итак, отладив код пружины, я понял, что проблема только со свойством

okta.oauth2.issuer

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

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Итак, у меня есть одно решение для этого.Создал 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;
}
0 голосов
/ 10 декабря 2018

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

...