2015-07-13 39 views
1

我jave jboss EAP 6,部署在它上面的还有helloworld。我需要做的是在helloworld应用上强制进行身份验证,不用在web.xml中使用过滤器。在我的JBoss我已经把安全域“MYREALM”:Jboss - CAS无需过滤器

<security-domain name="myrealm" cache-type="default"> 
       <authentication> 
        <login-module code="org.jasig.cas.client.jaas.CasLoginModule" flag="required"> 
         <module-option name="ticketValidatorClass" value="org.jasig.cas.client.validation.Cas20ServiceTicketValidator"/> 
         <module-option name="casServerUrlPrefix" value="https://135.243.36.205:8443/cas"/> 
         <module-option name="tolerance" value="20000"/> 
         <module-option name="defaultRoles" value="user"/> 
         <module-option name="roleAttributeNames" value="memberOf,eduPersonAffiliation,authorities"/> 
         <module-option name="principalGroupName" value="CallerPrincipal"/> 
         <module-option name="roleGroupName" value="Roles"/> 
         <module-option name="cacheAssertions" value="true"/> 
         <module-option name="cacheTimeout" value="480"/> 
        </login-module> 
       </authentication> 
      </security-domain> 

,现在我只是想迫使该应用程序使用这种境界。在我的应用程序的JBoss-web.xml中,我有:

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

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

回答

1

你缺少你的jboss-web.xml中阀入境

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

MyAuthenticator是org.apache.catalina.Authenticator的实现。

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

在您的web.xml中,您需要添加login-Method,它是没有“Authenticator”的AuthenticatorName。如果你的名字你认证MyAuthenticator您需要添加:

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

据我所知,是对于JBoss没有现成的认证,所以你需要创建自己的认证实现。或者你可以使用filters,这也适用于jboss。

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

+0

我想这是我唯一的选择,实现我自己的认证,但我真的不知道如何做到这一点。你能指导我吗? – Robert

+0

我已经更新了我的答案。保重,这不是一项可以快速完成的任务。幸运的是,有一个很好的文档和源代码。 –

+0

谢谢!我会看看我能做什么。 – Robert