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

Gradle Breaks LDAP配置中的扩展属性

莫逸仙
2023-03-14

小结:我正在尝试访问Java中的项目属性(例如版本),我读到的所有地方都说我需要在构建中扩展属性。gradle文件。这很好,但我正在使用LDAP,并在属性文件中配置它。每当我尝试扩展属性时,都会出现LDAP错误49 52e(无效凭据),因此Gradle处理属性的任何操作都会扭曲LDAP属性,使其不再可用。

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

  • 语言:
    • Groovy 2.4
    • Java8
    • Spring Boot版本:1.3.1。用起动机POM释放
      • 包括Spring靴启动器安全
      • 包含spring security ldap
      • 2.3版
      • Spring Boot Gradle插件1.3.1。发布
      • 应用插件:
        • 太棒了
        • Spring启动

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

        html" target="_blank">构建配置尝试1:

        processResources {
            expand(project.properties)
        }
        

        构建配置尝试2:

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

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

        生成配置尝试3:

        processResources {
            expand projectVersion: project.version
        }
        

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

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

        应用属性

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

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

        应用程序localdev。属性

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

        这些属性根本没有改变,只是在构建中没有processResources块的情况下就可以正常工作。gradle文件,然后当我添加这3个版本的任何一个时都没有。

        任何帮助计算这种帮助将不胜感激,如果需要任何进一步的信息,让我知道,我会更新。

共有1个答案

叶修永
2023-03-14

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

长话短说,当我在构建中没有processResources块时。gradle文件,属性不变,一切都很好。然而,当添加processResources时,转义字符被删除,导致用户名发生更改,因为我在其中有一个转义字符。

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

 类似资料:
  • 在我们的软件,我们使用spring Java配置。我们有一个设置,其中一个配置扩展了一个抽象配置。请看一下这个测试案例: 其思想是,覆盖了并且在创建的ApplicationContext中只有一个类型的bean位于名称之下。 结果是: 所以它说,有两个bean(两个实例--每个名称一个)--甚至更令人吃惊的是:创建这两个bean都使用了相同的方法()。 这种行为在我们看来很奇怪:我们希望sprin

  • 你可以通过 nuxt.config.js 文件中的 extend 配置项来扩展 Webpack 的配置: module.exports = { build: { extend (config, { isDev, isClient }) { // ... } } }

  • 我知道有很多关于这个话题的帖子,但似乎没有一条适合我。我不确定这是否是因为我必须对两个服务器块都这样做,或者我做错了什么。请帮帮我。 下面是我在Amazon远程服务器上的nginx配置,第一个块表示后端,第二个块表示前端:

  • 问题内容: 我在Django中有一个扩展的UserProfile模型: 还有一个signal.py: 我通过在我的:中确保信号被注册: 因此,应该为每个注册用户创建一个新的UserProfile,对吗?但事实并非如此。尝试登录时,总是出现“ UserProfile匹配查询不存在”错误,这意味着该数据库条目不存在。 我应该说我使用django-registration,它提供了user_regist