Mule spring 基本安全性因用户服务属性文件而失败

Mule spring basic security fails with user-service properties file

我正在配置 Mule 应用程序(运行 on API Gateway 2.1),并且 运行 在配置 spring 安全性时遇到一些问题。

这是安全配置:

<spring:beans>
    <ss:authentication-manager alias="authenticationManager">
        <ss:authentication-provider >
            <ss:user-service id="userService" properties="classpath:users.properties">
            <!-- **** This works, but the properties file above ^ doesn't ****
                <ss:user name="user" password="password" authorities="ROLE_ADMIN"/> 
                <ss:user name="anon" password="anon" authorities="ROLE_ANON" /> 
            -->
            </ss:user-service>
        </ss:authentication-provider>
    </ss:authentication-manager>
</spring:beans>

<mule-ss:security-manager name="security-manager"
    doc:name="Spring Security Provider">
    <mule-ss:delegate-security-provider
        name="memory-provider" delegate-ref="authenticationManager" />
</mule-ss:security-manager>

users.properties 在我的类路径中并包含以下内容:

user=userpassword,ROLE_USER,enabled
admin=admin,ROLE_USER,ROLE_ADMIN,enabled
chris=chrispassword,ROLE_USER,enabled  

令我感到困惑的是,当我使用嵌入式用户(参见上面 Mule 流程中的注释部分)并删除 properties=classpath:users.properties 时,一切运行正常。但是当我尝试使用 users.properties 时,出现以下异常。我知道 users.properties 在类路径中被发现。我是否配置错误 users.properties?如果这是一个更普遍的配置问题,为什么它不总是失败?

我收到以下异常(堆栈跟踪的顶部):

org.mule.module.launcher.DeploymentInitException: NullPointerException: at org.mule.module.launcher.application.DefaultMuleApplication.init(DefaultMuleApplication.java:197) ~[mule-module-launcher-3.7.2.jar:3.7.2] at org.mule.module.launcher.artifact.ArtifactWrapper.execute(ArtifactWrapper.java:62) ~[mule-module-launcher-3.7.2.jar:3.7.2] at org.mule.module.launcher.artifact.ArtifactWrapper.executeWithinArtifactClassLoader(ArtifactWrapper.java:129) ~[mule-module-launcher-3.7.2.jar:3.7.2] at org.mule.module.launcher.artifact.ArtifactWrapper.init(ArtifactWrapper.java:57) ~[mule-module-launcher-3.7.2.jar:3.7.2] at org.mule.module.launcher.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:25) ~[mule-module-launcher-3.7.2.jar:3.7.2] at org.mule.module.launcher.DefaultArchiveDeployer.guardedDeploy(DefaultArchiveDeployer.java:310) ~[mule-module-launcher-3.7.2.jar:3.7.2] at org.mule.module.launcher.DefaultArchiveDeployer.deployArtifact(DefaultArchiveDeployer.java:330) ~[mule-module-launcher-3.7.2.jar:3.7.2] at org.mule.module.launcher.DefaultArchiveDeployer.deployPackagedArtifact(DefaultArchiveDeployer.java:155) ~[mule-module-launcher-3.7.2.jar:3.7.2] at org.mule.module.launcher.DefaultArchiveDeployer.deployPackagedArtifact(DefaultArchiveDeployer.java:256) ~[mule-module-launcher-3.7.2.jar:3.7.2] at org.mule.module.launcher.DefaultArchiveDeployer.deployPackagedArtifact(DefaultArchiveDeployer.java:78) ~[mule-module-launcher-3.7.2.jar:3.7.2] at org.mule.module.launcher.DeploymentDirectoryWatcher.deployPackedApps(DeploymentDirectoryWatcher.java:275) ~[mule-module-launcher-3.7.2.jar:3.7.2] at org.mule.module.launcher.DeploymentDirectoryWatcher.start(DeploymentDirectoryWatcher.java:150) ~[mule-module-launcher-3.7.2.jar:3.7.2] at org.mule.module.launcher.MuleDeploymentService.start(MuleDeploymentService.java:100) ~[mule-module-launcher-3.7.2.jar:3.7.2] at org.mule.module.launcher.MuleContainer.start(MuleContainer.java:170) ~[mule-module-launcher-3.7.2.jar:3.7.2] at org.mule.tooling.server.application.ApplicationDeployer.main(ApplicationDeployer.java:21) ~[tooling-support-1.0.0.jar:?] Caused by: org.mule.api.config.ConfigurationException: Error creating bean with name '_muleSecurityManager': Cannot create inner bean '(inner bean)#157a5cdc' of type [org.mule.module.spring.security.S pringProviderAdapter] while setting bean property 'providers' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#157 a5cdc': Cannot resolve reference to bean 'authenticationManager' while setting bean property 'delegate'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bea n with name 'org.springframework.security.authenticationManager': Cannot resolve reference to bean 'org.springframework.security.authentication.dao.DaoAuthenticationProvider#0' while setting construct or argument with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.authentication.dao.DaoAuthenticationP rovider#0': Cannot resolve reference to bean 'userService' while setting bean property 'userDetailsService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService': Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security. provisioning.InMemoryUserDetailsManager]: Constructor threw exception; nested exception is java.lang.NullPointerException (org.mule.api.lifecycle.InitialisationException) (org.mule.api.config.Configur ationException) at org.mule.config.builders.AbstractConfigurationBuilder.configure(AbstractConfigurationBuilder.java:49) ~[mule-core-3.7.2.jar:3.7.2] at org.mule.config.builders.AbstractResourceConfigurationBuilder.configure(AbstractResourceConfigurationBuilder.java:69) ~[mule-core-3.7.2.jar:3.7.2] at org.mule.context.DefaultMuleContextFactory.configure(DefaultMuleContextFactory.java:89) ~[mule-core-3.7.2.jar:3.7.2] at org.mule.context.DefaultMuleContextFactory.doCreateMuleContext(DefaultMuleContextFactory.java:222) ~[mule-core-3.7.2.jar:3.7.2] at org.mule.context.DefaultMuleContextFactory.createMuleContext(DefaultMuleContextFactory.java:81) ~[mule-core-3.7.2.jar:3.7.2] at org.mule.module.launcher.application.DefaultMuleApplication.init(DefaultMuleApplication.java:188) ~[mule-module-launcher-3.7.2.jar:3.7.2] ... 14 more Caused by: org.mule.api.config.ConfigurationException: Error creating bean with name '_muleSecurityManager': Cannot create inner bean '(inner bean)#157a5cdc' of type [org.mule.module.spring.security.S pringProviderAdapter] while setting bean property 'providers' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#157 a5cdc': Cannot resolve reference to bean 'authenticationManager' while setting bean property 'delegate'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bea n with name 'org.springframework.security.authenticationManager': Cannot resolve reference to bean 'org.springframework.security.authentication.dao.DaoAuthenticationProvider#0' while setting construct or argument with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.authentication.dao.DaoAuthenticationP rovider#0': Cannot resolve reference to bean 'userService' while setting bean property 'userDetailsService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService': Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security. provisioning.InMemoryUserDetailsManager]: Constructor threw exception; nested exception is java.lang.NullPointerException (org.mule.api.lifecycle.InitialisationException)

我试过这个,发现如果你调用属性文件任何其他东西,比如 myusers.properties 那么它就可以工作。看起来 class 路径上还有其他一些 users.properties 是由 mule 依赖项之一添加的,这些依赖项的 SS 格式不正确,因此会引发可怕的错误。所以只需将文件重命名为其他名称即可。