Authentication JBoss7自身身份验证器
我正在尝试编写自己的验证器,它将读取特定的自定义cookie,并对存储在该cookie中的基于用户的od令牌进行身份验证。我以这个类为例:org.jboss.security.negotiation.NegotiationAuthenticator 所以我开始写我自己的验证器: 公共类SampleAuthenticator扩展AuthenticatorBase{Authentication JBoss7自身身份验证器,authentication,jboss,jboss7.x,jboss-eap-6,authenticator,Authentication,Jboss,Jboss7.x,Jboss Eap 6,Authenticator,我正在尝试编写自己的验证器,它将读取特定的自定义cookie,并对存储在该cookie中的基于用户的od令牌进行身份验证。我以这个类为例:org.jboss.security.negotiation.NegotiationAuthenticator 所以我开始写我自己的验证器: 公共类SampleAuthenticator扩展AuthenticatorBase{ @Override protected boolean authenticate(Request arg0, Response arg
@Override
protected boolean authenticate(Request arg0, Response arg1, LoginConfig arg2) throws IOException {
System.out.println("===CHECK===");
return false;
}
正如您所看到的,我的类只包含必须用默认值实现的所需方法
我已将此验证器作为模块安装在Jboss“modules”目录中
然后,我在standalone.xml中添加了新的安全域:
<security-domain name="sso" cache-type="default">
<authentication>
<login-module code="UsersRoles" flag="required" />
</authentication>
</security-domain>
我被困在这一点上。我试图重新实现一些验证器,但这个ClassCastException总是存在
谁能帮我写自己的验证器?
我将Jboss EAP 6.2与Jboss 7.1.1一起使用检查类路径,但已多次部署您的类
如果您已经在JBoss模块中使用autenticator进行了定义,则在war或ear中不应使用此类问题在于我使用了错误的库。通过使用此maven依赖项解决了问题:
<dependency>
<groupId>org.jboss.as</groupId>
<artifactId>jboss-as-web</artifactId>
<version>7.2.0.Final</version>
<scope>provided</scope>
</dependency>
org.jboss.as
jbossas-web
7.2.0.1最终版本
假如
<jboss-web>
<security-domain>sso</security-domain>
<valve>
<class-name>com.myexample.authenticator.SampleAuthenticator</class-name>
</valve>
</jboss-web>
<security-constraint>
<web-resource-collection>
<web-resource-name>MyResourceName</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>My kinda secure web application</realm-name>
</login-config>
<security-role>
<role-name>user</role-name>
</security-role>
12:41:28,554 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service jboss.web.valve.myvalve: org.jboss.msc.service.StartException in service jboss.web.valve.myvalve: java.lang.ClassCastException: com.myexample.authenticator.SampleAuthenticator cannot be cast to org.apache.catalina.Valve
at org.jboss.as.web.WebValveService.start(WebValveService.java:92)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_55]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_55]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_55]
Caused by: java.lang.ClassCastException: com.myexample.authenticator.SampleAuthenticator cannot be cast to org.apache.catalina.Valve
at org.jboss.as.web.WebValveService.start(WebValveService.java:72)
... 5 more
<dependency>
<groupId>org.jboss.as</groupId>
<artifactId>jboss-as-web</artifactId>
<version>7.2.0.Final</version>
<scope>provided</scope>
</dependency>