Jboss-不带过滤器的CAS

Jboss-不带过滤器的CAS,jboss,single-sign-on,cas,Jboss,Single Sign On,Cas,我喜欢JBossEAP6,上面部署了cas和helloworld。我需要做的是在helloworld应用程序上强制进行身份验证,而不使用web.xml中的过滤器。在我的jboss中,我放置了一个安全域“myrealm”: 现在我只想强制这个应用程序使用这个领域。在我的应用程序jboss-web.xml中,我有: <?xml version="1.0" encoding="UTF-8"?> <jboss-web> <security-domain&

我喜欢JBossEAP6,上面部署了cas和helloworld。我需要做的是在helloworld应用程序上强制进行身份验证,而不使用web.xml中的过滤器。在我的jboss中,我放置了一个安全域“myrealm”:


现在我只想强制这个应用程序使用这个领域。在我的应用程序jboss-web.xml中,我有:

<?xml version="1.0" encoding="UTF-8"?>  
<jboss-web>  
    <security-domain>myrealm</security-domain>  
</jboss-web> 

我的王国

我缺少什么,因为如果我访问我的应用程序,它不会将我重定向到我的CAS登录页面,它只会转到index.html?

您的jboss-web.xml中缺少一个阀门条目

<valve>
    <class-name>com.foo.MyAuthenticator
    </class-name>
</valve>

com.foo.MyAuthenticator
MyAuthenticator是org.apache.catalina.Authenticator的一个实现

在我的环境中,我修改了以读取samlArtifactId和serviceUrl,而不是用户名/密码

在web.xml中,需要添加登录方法,即不带“Authenticator”的AuthenticatorName。如果将验证器命名为MyAuthenticator,则需要添加:

<login-config>
    <auth-method>MY</auth-method>
</login-config>

,这也适用于jboss


如果您需要编写自己的验证器,您应该熟悉。您可以将登录模块(您将其命名为my‘myrealm’)与jasig类一起重用。开始阅读、理解并修改它,从请求中读取serviceURL和SamlArtifact,而不是用户名密码,并将值传递给回调处理程序

我想这是我唯一的选择,实现我自己的验证器,但我真的不知道怎么做。你能指导我吗?我已经更新了我的答案。小心,这不是一项可以很快完成的任务。幸运的是,有一个很好的文档和源代码。谢谢!我看看我能做什么。
<login-config>
    <auth-method>MY</auth-method>
</login-config>