如何在CAS 5中启用基于文件的身份验证

时间:2017-04-13 16:54:38

标签: cas

我在本地计算机上站起来一个独立的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都没有被识别。

我应该设置这些选项吗?我还需要做些什么来启用基于文件的身份验证吗?

1 个答案:

答案 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依赖项通过文档,然后添加/修改属性以获得所需的效果。