【问题标题】:Expanding Properties in Gradle Breaks LDAP Config在 Gradle 中扩展属性会破坏 LDAP 配置
【发布时间】:2016-01-25 21:00:01
【问题描述】:

总结:我正在尝试在 Java 中访问项目属性(例如版本),并且我读过的所有地方都说我需要在我的 build.gradle 文件中扩展属性。这一切都很好,很花哨,但我正在使用 LDAP 并在我的属性文件中对其进行配置。每当我尝试扩展属性时,我都会收到 LDAP 错误 49 52e (Invalid Credentials),因此似乎 Gradle 处理属性所做的任何事情都会扭曲 LDAP 属性,因此它们不再可用。

项目信息: 我在下面概述了我认为适用的项目信息。如果需要更多详细信息来确定问题,请发表评论,我会添加它们。

  • 语言:
    • Groovy 2.4
    • Java 8
  • 框架:
    • Spring Boot 版本:1.3.1.RELEASE with starter POM
      • 包括spring-boot-starter-security
      • 包括spring-security-ldap
  • 构建工具:Gradle
    • 2.3 版
    • Spring Boot Gradle 插件 1.3.1.RELEASE
    • 应用插件:
      • 时髦
      • 弹簧启动

构建信息:我在 build.gradle 文件中尝试了几种不同的配置来访问版本,但是当我添加“processResources”块时,我无法再访问 LDAP运行应用程序。该应用程序在没有“processResources”块的情况下运行和验证就很好,但是一旦我添加它,它就会运行,但由于 LDAP 抱怨凭据无效,我无法访问任何内容。我尝试了 3 种不同的展开配置,结果都是这样。

构建配置尝试 1:

processResources {
    expand(project.properties)
}

构建配置尝试 2:

processResources {
    filesMatching('**/*.properties') { expand(project.properties) }
}

此时我突然想到我正在属性文件中配置我的 LDAP 登录,因此解决方案可能是完全避免使用属性文件。我发现您应该可以只扩展您需要的属性,所以我尝试了以下方法。

构建配置尝试 3:

processResources {
    expand projectVersion: project.version
}

如前所述,上述所有尝试都失败了,但我仍然遇到了每个尝试的 LDAP 身份验证错误。没有“procesResources”块的 build.gradle 文件似乎是让 LDAP 满意的唯一方法。

属性信息: 如前所述,我在属性文件中配置了 LDAP 信息。以下是相关属性。

application.properties

spring.profiles.active=localdev
ldap.securitygroup=DEV
logout.path=
host.securePort=

如您所见,我使用的是 localdev 配置文件,因此我在下面包含了它的适用属性。由于它包含敏感信息,我只指定了属性名称而不是它们的值。我使用星号 (*) 表示提供了一个非空值。 (在上面的 application.properties 文件中,列出的几个属性的值确实为空):

application-localdev.properties

host.securePort=*
ldap.username=*
ldap.password=*
ldap.base=DC=*,DC=*,DC=*
ldap.roleSearchBase=OU=*,DC=*,DC=*,DC=*
ldap.defaultUrl=ldap://*
ldap.urls=ldap://* ldap://*

属性根本没有改变,它只是在没有 build.gradle 文件中的 processResources 块的情况下工作,然后当我添加它的这 3 个版本中的任何一个时都没有。

我们将不胜感激任何有助于解决此问题的帮助,如果需要任何进一步的信息,请告诉我,我会更新此信息。

【问题讨论】:

    标签: gradle properties spring-boot ldap project-properties


    【解决方案1】:

    所以一位同事给了我一个很好的提示,说我可以检查 JAR 文件中的属性,看看是否有与最初指定的不同。

    长话短说,当我在 build.gradle 文件中没有 processResources 块时,属性不会改变,一切都很好。但是,当添加 processResources 时,ESCAPE CHARACTERS 被删除,导致用户名发生变化,因为我有一个转义字符。

    我现在使用的解决方法是加倍转义字符,这对我来说似乎是一种 hack,所以如果有更好的配置方法,请回复!

    【讨论】:

      猜你喜欢
      • 2014-04-28
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多