当前位置: 首页 > 知识库问答 >
问题:

使用Spring Cloud Vault的Spring okta oAuth2属性

涂飞航
2023-03-14

我们在Spring boot项目中使用okta进行身份验证。我们已经成功地使用java应用程序进行身份验证,如(请参阅-https://developer.okta.com/blog/2017/03/21/spring-boot-oauth)

现在我要做的是将okta clientId和secret属性移动到vault。

vault引导

Spring云保险存储:主机:本地主机端口: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;

案例2:用作Spring属性不起作用我对Spring oAuth使用相同的属性,它失败了

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

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

异常日志

Java语言lang.IllegalArgumentException:无法解析占位符的帐户。值“${account.clientId}”account-web\u 1 | at org中的clientId'。springframework。util。PropertyPlaceholderHelper。parseStringValue(PropertyPlaceholderHelper.java:172)~[spring-core-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]account-web\u 1 |位于org。springframework。util。PropertyPlaceholderHelper。替换占位符(propertyplaceholderhelp.java:124)~[spring-core-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]account-web\u 1 |位于org。springframework。果心环境。AbstractPropertyResolver。doResolvePlaceholders(AbstractPropertyResolver.java:237)~[spring-core-5.0.5.RELEASE.jar!/:5.0.5.RELEASE]account-web\u 1 |位于org。springframework。果心环境。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个答案

松博耘
2023-03-14

所以我有一个解决方案。创建了一个bean“oktaOAuth2Properties”,以覆盖spring boot默认bean,并使用@value注释从vault获取值。代码如下所示。这对我有用

@值(“${okta.clientId}”)私有字符串clientId;

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

@Bean
public OktaOAuth2Properties oktaOAuth2Properties() {
    OktaOAuth2Properties properties = new OktaOAuth2Properties();
    properties.setClientId(clientId);
    properties.setIssuer(issuer);
    return properties;
}
胡景焕
2023-03-14

您是否尝试过在云配置提供程序中设置okta.oauth2.*属性?我通常使用文件存储库测试Cloud Config,但从客户端的角度来看应该是一样的。(我知道这并不能完全回答你的问题,但只是想在继续之前确保它有效)

 类似资料:
  • 问题内容: 我为该标题表示歉意。我找不到更好的方法来解释这种情况。 我使用URL http://www.exampledepot.com/egs/java.util/Props.html中所述的Property类加载属性文件。 我的问题是我可以在该属性文件中使用属性吗? 例: test.properties 其他语法有可能吗? 谢谢 问题答案: 以前从未见过。您当然 可以 制作自己的预处理器。只要

  • 在作图编辑模式里,可以用一个称为模式编辑器的图形用户界面来编辑图形中的对象属性。属性编辑器提供途径以访问下列对象的属性:根,轮廓,轴,线,光,斑点,图像,表面矩形和文本对象。例如,用属性编辑器可以改变线的粗度,加标题和轴标签,加光照,及执行许多其他作图编辑任务。 这个插图说明属性编辑器界面的成分。 启动属性编辑器 要启动属性编辑器,只需双击图形中的某个对象,例如线,或者右键单击对象并从上下文菜单选

  • 本文向大家介绍Vue计算属性的使用,包括了Vue计算属性的使用的使用技巧和注意事项,需要的朋友参考一下 我们都知道在Vue构造函数的参数对象中有一个【data】属性,该属性值是一个对象,该对象是对数据的代理,是一个键值对并且时刻与页面表现是一致的,但是这里面只能是简单的键值对,不能拥有业务逻辑,并且由于【data】中的属性属于同一个生命周期,所以如果我们需要某一个属性是依赖于另外一个属性时,在【d

  • 问题内容: 可以说我有一堂课: 我有一个此类的ArrayList 是否可以使用对象名称属性作为选择选项来创建JavaFX ComboBox,而无需使用对象名称创建新的JavaFX ComboBox ? 伪代码: (可选)理想情况下,虽然应该显示名称,但在选择了一个选项后,该名称应该返回给我所选的Dummy的引用,而不仅仅是名称。那可能吗? 问题答案: 您可以使用自定义方式来显示适合您需求的项目:

  • 我在IntelliJ检查中遇到了一个问题:这表明我的所有属性都未使用(参见图片)。这是不真实的,因为我的所有属性都正确地用于spring boot项目。我正在使用IntelliJ社区版2016.1.4

  • 但是房产没有被选中。例如,下面的代码创建一个${log-path}文件夹来存储日志文件,而不是所需的logs文件夹。 我做错了什么?

  • 比较麻烦的是创建通道后不得不手动配置每个通道,为了避免这种情况,Netty 提供了 ChannelOption 来帮助引导配置。这些选项会自动应用到引导创建的所有通道,可用的各种选项可以配置底层连接的详细信息,如通道“keep-alive(保持活跃)”或“timeout(超时)”的特性。 Netty 应用程序通常会与组织或公司其他的软件进行集成,在某些情况下,Netty 的组件如 Channel

  • 我有以下测试: 属性位于中,看起来如下: 但是,我一直得到第25行,这正是具有初始化的行: Java.lang.NullPointerException位于com.example.estrans.esjavaapitests.(esjavaapitests.Java:25)位于sun.reflect.nativeConstructorAccessorImpl.newInstance0(原生方法)位