我在本地计算机上站起来一个独立的CAS 5实例进行修补/黑客攻击,我试图通过基于文件的简单身份验证将其设置为部署到Tomcat的独立WAR文件。
从WAR Overlay模板(https://github.com/apereo/cas-overlay-template)开始,我添加了https://apereo.github.io/cas/5.0.x/installation/Whitelist-Authentication.html#example-password-file所示的以下依赖项。
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-generic</artifactId>
<version>${cas.version}</version>
</dependency>
然后,我在passwd.txt
中创建了一个简单的src/main/resources
文件,其中包含以下内容。
bob::bob
alice::alice
最后,我将基于文件的属性(c.f。https://apereo.github.io/cas/5.0.x/installation/Configuration-Properties.html#file-authentication)添加到etc/cas/config/cas.properties
。
cas.authn.file.filename=classpath:passwd.txt
cas.authn.accept.users=
cas.authn.file.passwordEncoder.type=NONE
cas.authn.file.separator=::
部署应用程序时,应用程序启动,但登录表单中唯一接受的用户是casuser
/ Mellon
(默认值)。我甚至尝试将属性cas.authn.policy.any.tryAll=true
添加到cas.properties
文件,但Alice和Bob都没有被识别。
我应该设置这些选项吗?我还需要做些什么来启用基于文件的身份验证吗?
答案 0 :(得分:2)
在这个问题上花了太多时间之后,我想让其他人头疼。这里的关键是我正在修改/etc/cas/config/cas.properties
。在编译要在servlet容器上部署的独立WAR时,这没有预期的效果。我的猜测(没有验证)是,如果你要创建一个可执行的JAR,这会有所不同。
我最终做的是评论/etc/cas/config/cas.properties
中的所有条目并将其移至/src/main/resources/application.properties
。这会产生影响,但会导致org.springframework.beans.factory.BeanCreationException: Cannot create binder factory, no META-INF/spring.binders resources found on the classpath
的一些模糊错误。
我按照https://groups.google.com/a/apereo.org/d/msg/cas-user/doLj6Aa10u8/2o9urrQpCwAJ上的建议将默认配置复制到/src/main/resources/application.properties
,在上面添加了cas.authn.*
个选项,重建,重新部署并且一切正常。
设置独立WAR覆盖的最佳方式似乎是采用提供的模板,在撰写本文时复制CAS源代码(https://github.com/apereo/cas/blob/958a9fbb87fb728875a7a35ee45124e818f90b17/webapp/resources/application.properties)中的默认设置,添加指示的Maven依赖项通过文档,然后添加/修改属性以获得所需的效果。